1. 程式人生 > >MongoDB叢集部署原理

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的對映關係,用上面的資料表示的配置結點儲存的資料模型如圖:

在這裡插入圖片描述