图解MongoDB集群部署原理(3)
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弹架构 』可获取更多技术干货!
原创不易,坚持很酷,都看到这里了,小伙伴记得点赞、收藏、在看,一键三连加关注!如果你觉得内容太干,可以分享转发给朋友滋润滋润!
「其他文章」
- 使用桥接模式设计复杂的消息系统
- 为什么MySQL索引结构采用B 树?
- 为什么Netty线程池默认大小为CPU核数的2倍
- 谈谈你对深克隆和浅克隆的理解
- 什么是代理,为什么要用动态代理?
- 什么是零拷贝,Netty是如何实现的?
- 3分钟轻松理解单线程下的HashMap工作原理
- 被面试官问烂的Spring AOP原理,你是怎么答的?
- Spring为何需要三级缓存解决循环依赖,而不是二级缓存?
- 为什么Spring中每个Bean都要定义作用域?
- 谈谈你对Spring Bean的理解
- 趣谈装饰器模式,让你一辈子不会忘
- 掌握这些招数,你也能写出HR眼中的高分简历
- MongoDB高级应用之数据转存与恢复(5)
- 图解MongoDB集群部署原理(3)
- 爆肝30天,肝出来史上最透彻Spring原理和27道高频面试题总结
- Spring核心原理之IoC容器初体验(2)
- Spring核心原理分析之MVC九大组件(1)
- 30个类手写Spring核心原理之动态数据源切换(8)
- 【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂