主从复制模式(官方不建议使用)
主从复制模式包含一个主节点(Primary)和一个或多个从节点(Secondary)。主节点提供读写服务,从节点一般不提供任何服务,但也可以修改配置让从节点提供只读服务。每个从节点会定期轮询主节点的oplog以保持数据与主节点一致。
主从模式的缺点是当主节点出现故障时,只能为工介入指定新的主节点,且在这段时间内,集群处于只读状态。
副本集模式Relica Set
副本集模式包含一个主节点和一个或多个从节点,相较于主从复制模式,副本集模式的优势是当从节点发生故障时,副本集可以自动投票主生新的主节点,并引导其余从节点连接新的主节占。
副本集中各节点通过心跳机制来检测各自的健康状况,当主节点出现故障时,多个从节点会触发选举操作选出新的主节点。副本集模式解决了主从复制模式在主节点出现故障时只能人工指定新的主节点的问题,但也有局限性,接着往下看分片集群模式:
分片集群模式Sharded Cluster
副本集模式虽然解决了高可用问题,但不能满足海量数据和高吞吐的场景,这时就需要使用分片技术。分片集群模式主要利用了水平扩展的特性,将数据和负载分散到多台机器上,并根据需要添加额外的服务器以增加容量和提高性能。分片集群有如下几个组件:
- shard,每个shard都是一个mongo数据库实例,包含分片数据的一个子集。一个shard可由几台机器组成一个副本集,防止因主节点单点故障导致整个系统崩溃。
- config servers,用户配置服务器存储集群的元数据和配置设置。
- mongos,在集群中作为查询路由器,客户端程序由此接入,让整个集群看起来像是一个单一的数据库实例,提供客户端应用程序和分片集群之间的接口。mongos本身不保存数据,启动时从config server加载集群信息到缓存中,并将客户端的请求路由给每个shard,聚合各shard的结果返回给客户端。
分片集群模式有以下几个优势:
- 将读写负载分布在集群中的各个分片上,允许每个分片处理集群操作的一个子集。通过添加更多的分片,读写工作负载都可以在集群中水平扩展
- 将数据分布在集群中的各个分片上,允许每个分片包含整个集群数据的一个子集。通过添加分片,可以增加集群的存储容量。
- 高可用性,即使一个或多个分片副本集完全不可用,分片集群也可以继续执行部分读写。
参考文章:mongodb部署模式
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。