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彈架構”原創,轉載請註明出處。技術在於分享,我分享我快樂!
如果本文對您有幫助,歡迎關注和點贊;如果您有任何建議也可留言評論或私信,您的支援是我堅持創作的動力。
原創不易,堅持很酷,都看到這裡了,小夥伴記得點贊、收藏、在看,一鍵三連加關注!如果你覺得內容太乾,可以分享轉發給朋友滋潤滋潤!