当前位置: 首页 > news >正文

MongoDB部署模式

目录

单节点模式(Standalone)

副本集模式(Replica Set)

分片集群模式(Sharded Cluster)


MongoDB有多种部署模式,可以根据业务需求选择适合的架构和部署方式。

单节点模式(Standalone)

单节点部署是单个MongoDB示例,也是最简单的部署方式,数据都存储在一个节点上,这种方式现在很少使用。

  • 特点
    • 适用于开发、测试或小型应用场景。
    • 无数据冗余,不具备高可用性。
    • 单节点故障会导致服务中断。
  • 优点
    • 易于设置和维护,资源消耗低。
  • 适用场景
    • 开发测试环境。
    • 对高可用性要求不高的应用。

副本集模式(Replica Set)

MongoDB 中的副本集是一组维护相同数据集的 mongod 进程。副本集提供冗余和高可用性,是所有生产部署的基础,副本集包含多个数据承载节点和一个可选的仲裁节点。在数据承载节点中,只有一个主节点,其他被为从节点。

主节点:主节点会接受所有的写入操作,副本集中只会有一个主节点

从节点:从节点存储也是一个完整的数据集,会复制主节点的oplog(oplog是主节点上的操作日志),并将这些操作应用于其数据集,以便从节点的数据集反映主节点的数据集状态。如果主节点不可用,则某个符合条件的从节点将进行选举,以将自己选举为新的主节点。

  • 特点
    • 一组MongoDB实例组成,提供数据冗余和高可用性。
    • 自动故障切换:主节点宕机后,剩余节点选举出新的主节点。
    • 数据一致性高(强一致性)。
  • 优点
    • 提供高可用性,保障数据安全。
    • 适用于生产环境。
  • 缺点
    • 需要额外的硬件资源。
    • 配置和维护比单节点稍复杂。
  • 适用场景
    • 需要高可用性和自动故障恢复的生产环境。

分片集群模式(Sharded Cluster)

副本集模式就是一个主从架构,虽然可以提升了高可用性,但是每个节点都需要存储全部数据,这种冗余的方式增加了资源的消耗。而分片集群可以提供更好的可用性。

分片:分片是一种跨多台机器分布数据的方法,mongo将数据分化为多个分片,每个分片保存的是数据的一部分,所有分片的数据叠加起来就是完整的数据。

分片集群:数据虽然被分配到多个分片节点上,但是每个分片也需要做冗余这样才能提高可用性,所有每个分片也会有多个副本集,就是一个副本集模式,有主分片和从分片数据。

MongoDB的分片集群由一下几个组件构成:

分片(shard):分片是存储数据的位置,每个分片都包含分片数据的一个子集,每个分片都必须作为一个副本集进行部署。

路由服务器(mongos)mongos 充当查询路由器,在客户端应用程序和分片集群之间提供接口,客户端访问分片集群是直接和mongos服务器连接而不会直接和具体的分片连接,mongos会将请求分配到具体的分片上进行操作,同时多个分片的结果也会聚合到mongos上进行处理。

配置服务器(config sderver):配置服务器会存储集群的元数据和配置设置,配置服务器最主要的作用就是记录集群分片的情况,mongos进行路由的时候需要知道路由到哪个分片,而这就要依据config server的分片配置数据,配置服务器也是副本集模式部署。

  • 特点
    • 提供水平扩展能力,适合大规模数据和高并发应用。
    • 数据根据分片键分布在不同的分片中。
    • MongoDB 在分片集群中的分片之间分配读写工作负载,支持每个分片处理集群操作的子集。通过添加更多的分片,读写工作负载都可以在集群中横向扩展。
  • 优点
    • 支持大数据集和高吞吐量。
    • 可按需扩展存储和计算能力。
  • 缺点
    • 部署和维护复杂,要求分片键设计合理。
    • Config Server成为潜在的性能瓶颈。
  • 适用场景
    • 大型分布式系统。
    • 数据量超出单节点存储能力的场景。
http://www.lryc.cn/news/525689.html

相关文章:

  • opencv笔记2
  • springboot使用ssl连接elasticsearch
  • Linux内核中的InfiniBand核心驱动:verbs.c分析
  • 把网站程序数据上传到服务器的方法和注意事项
  • 完全平方数——唯一分解定理
  • (详细)Springboot 整合动态多数据源 这里有mysql(分为master 和 slave) 和oracle,根据不同路径适配不同数据源
  • mock可视化生成前端代码
  • Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
  • 鸿蒙Harmony json转对象(1)
  • 常见的RocketMQ面试题及其简要答案
  • C#Object类型的索引,序列化和反序列化
  • Unity3D项目开发中的资源加密详解
  • 微调Qwen2:7B模型,加入未知信息语料
  • 【Ubuntu】安装SSH启用远程连接
  • 【理论】测试开发工程师进阶路线
  • 【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证
  • 動態住宅IP提升網站訪問成功率
  • 2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得
  • Spring Boot/MVC
  • 由于请求的竞态问题,前端仔喜提了一个bug
  • 【Day25 LeetCode】贪心Ⅲ
  • 蓝桥杯练习日常|递归-进制转换
  • AI Agent:深度解析与未来展望
  • 《SwinIR:使用Swin-Transformer图像恢复》学习笔记
  • 如何在Nginx服务器上配置访问静态文件目录并提供文件下载功能
  • ansible自动化运维实战--script、unarchive和shell模块(6)
  • 理解深度学习pytorch框架中的线性层
  • 电路研究9.2——合宙Air780EP使用AT指令
  • Qt数据库相关操作
  • 2025-01-22 Unity Editor 1 —— MenuItem 入门