圖解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,只有徹底搞懂漏洞原因,才能以不變應萬變,小白也能看懂