MongoDB部署模式

目录

单节点模式(Standalone)

[副本集模式(Replica Set)](#副本集模式(Replica Set))

[分片集群模式(Sharded Cluster)](#分片集群模式(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成为潜在的性能瓶颈。
  • 适用场景
    • 大型分布式系统。
    • 数据量超出单节点存储能力的场景。
相关推荐
我要出家当道士4 小时前
MongoDB 备份与恢复综述
mongodb·数据库灾备
Suyuoa4 小时前
mongoDB常见指令
数据库·mongodb
添砖,加瓦4 小时前
MongoDB详细讲解
数据库·mongodb
Zda天天爱打卡4 小时前
【趣学SQL】第二章:高级查询技巧 2.2 子查询的高级用法——SQL世界的“俄罗斯套娃“艺术
数据库·sql
我的运维人生4 小时前
MongoDB深度解析与实践案例
数据库·mongodb·运维开发·技术共享
步、步、为营5 小时前
解锁.NET配置魔法:打造强大的配置体系结构
数据库·oracle·.net
张3蜂5 小时前
docker Ubuntu实战
数据库·ubuntu·docker
神仙别闹6 小时前
基于Andirod+SQLite实现的记账本APP
数据库·sqlite
苏-言6 小时前
MyBatis最佳实践:动态 SQL
数据库·sql·mybatis