mongodb高可用方案
1、通过副本集,具体原理可参考链接地址如下:https://blog.ywdevops.cn/index.php/2020/07/21/mongodb/
2、Sharding分片技术:
当数据量比较大的时候,我们需要把数据分片运行在不同的机器中,以降低CPU、内存和IO的压力,Sharding就是数据库分片技术。
MongoDB分片技术类似MySQL的水平切分和垂直切分,数据库主要由两种方式做Sharding:垂直扩展和横向切分,
- 垂直扩展的方式就是进行集群扩展,添加更多的CPU,内存,磁盘空间等。
- 横向切分则是通过数据分片的方式,通过集群统一提供服务
MongoDB的Sharding架构如下:

MongoDB分片架构中的角色:
- 数据分片(Shards):用来保存数据,保证数据的高可用性和一致性。可以是一个单独的mongod实例,也可以是一个副本集,在生产环境下Shard一般是一个Replica Set,以防止该数据片的单点故障。所有Shard中有一个PrimaryShard,里面包含未进行划分的数据集合
- 查询路由(Query Routers):路由就是mongos的实例,客户端直接连接mongos,由mongos把读写请求路由到指定的Shard上去。一个Sharding集群,可以有一个mongos,也可以有多mongos以减轻客户端请求的压力
- 配置服务器(Config servers):保存集群的元数据(metadata),包含各个Shard的路由规则
Sharding分片技术(混合模式)高可用方案的大体架构图:

Sharding分片技术(混合模式)高可用方案架构下向mongodb写数据的流程图:

Sharding分片技术(混合模式)高可用方案架构下向mongodb读数据的流程图:



