MongoDB集群部署原理

在MongoDB安装目录下,可以发现有mongo.exe,mongod.exe,mongos.exe三个应用程序,这三个应用程序也是MongoDB底层实现的主要支柱,它的实现原理和Zookeeper是非常相似的。

在这里插入图片描述

集群部署
MongoDB的集群部署方案中有三种节点,分别是:数据存储节点(mongod)、配置文件存储节点(mongod config)、路由接入节点(mongos)。具体过程是,客户端直接与路由节点(路由节点在分片的情况下起到负载均衡的作用)相连,路由节点从配置节点查询数据,根据查询结果去实际的存储节点上查询和存储数据。
MongoDB的部署方案有单机部署、副本集(主备)部署、分片部署、副本集与分片混合部署。如图,是混合部署:
副本集:每个副本集中存储的数据是相同的,目的是容灾。可以认为是一台存储数据的机器,一个副本集数据一定是一个完整的整体。
分片:目的是为了数据的拓展,按照片键进行节点划分,数据根据片键存储到对应的服务器上。
混合的部署方式如图:

在这里插入图片描述

混合方式下向MongoDB写数据的流程图:

在这里插入图片描述

混合方式下读MongoDB数据的流程图:

在这里插入图片描述
对于复本集,又有主和从两种角色,写数据和读数据也是不同,写数据的过程是只写到主结点中,由主结点以异步的方式同步到从结点中:
在这里插入图片描述

而读数据则只要从任一结点中读取,具体到哪个结点读取是可以指定的:
在这里插入图片描述
对于MongoDB的分片,假设我们以某一索引键(ID)为片键,ID的区间[0,50],划分成5个块(chunk),分别存储到3个片服务器中,如图所示:

在这里插入图片描述

假如数据量很大,需要增加片服务器时可以只要移动chunk来均分数据即可。

配置结点:

存储配置文件的服务器其实存储的是片键与chunk以及chunk与server的映射关系,用上面的数据表示的配置结点存储的数据模型如图:

在这里插入图片描述

上一篇:MongoDB在Linux(centOS)下的安装启动步骤
下一篇:基于JavaAPI的MongoDB底层实现方式

猜你喜欢

转载自blog.csdn.net/lx_Frolf/article/details/82799876