MongoDB 的集群部署计划中有三类角色:理论数据存储结点、配置文件存储结点和路由接入结点。
连贯的客户端间接与路由结点相连,从配置结点上查问数据,依据查问后果到理论的存储结点上查问和存储数据。MongoDB 的部署计划有单机部署、复本集(主备)部署、分片部署、复本集与分片混合部署。
混合的部署形式如图:
混合部署形式下向 MongoDB 写数据的流程如图:
混合部署形式下读 MongoDB 里的数据流程如图:
对于正本集,又有主和从两种角色,写数据和读数据也是不同,写数据的过程是只写到主结点中,由主结点以异步的形式同步到从结点中:
而读数据则只有从任一结点中读取,具体到哪个结点读取是能够指定的:
对于 MongoDB 的分片,假如咱们以某一索引键(ID)为片键,ID 的区间 [0,50],划分成 5 个 chunk,别离存储到 3 个片服务器中,如图所示:
如果数据量很大,须要减少片服务器时能够只有挪动 chunk 来均分数据即可。
配置结点:
存储配置文件的服务器其实存储的是片键与 chunk 以及 chunk 与 server 的映射关系,用下面的数据表示的配置结点存储的数据模型如下表:
Map1
Key range | chunk |
---|---|
[0,10) | chunk1 |
[10,20) | chunk2 |
[20,30) | chunk3 |
[30,40) | chunk4 |
[40,50) | chunk5 |
Map2
chunk | shard |
---|---|
chunk1 | shard1 |
chunk2 | shard1 |
chunk3 | shard2 |
chunk4 | shard2 |
chunk5 | shard3 |
路由结点:
路由角色的结点在分片的状况下起到负载平衡的作用。
关注微信公众号『Tom 弹架构』回复“MongoDB”可获取配套材料。
本文为“Tom 弹架构”原创,转载请注明出处。技术在于分享,我分享我高兴!如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源。关注微信公众号『Tom 弹架构』可获取更多技术干货!
原创不易,保持很酷,都看到这里了,小伙伴记得点赞、珍藏、在看,一键三连加关注!如果你感觉内容太干,能够分享转发给敌人滋润滋润!