MongoDB分片
阿新 • • 發佈:2018-03-13
MongoDBMongoDB分片
- 分片就是將數據庫進行拆分,將大型集合分隔到不同服務器上。比如,本來100G的數據,可以分割成10份存儲到10臺服務器上,這樣每臺機器只有10G的數據。
- 通過一個mongos的進程(路由)實現分片後的數據存儲與訪問,也就是說mongos是整個分片架構的核心,對客戶端而言是不知道是否有分片的,客戶端只需要把讀寫操作轉達給mongons即可。
- 雖然分片會把數據分隔到很多臺服務器上,但是每一個節點都是需要有一備用角色的,這樣能保證數據的高可用。
- 當系統需要更多空間或者資源的時候,分片可以讓我們按需方便擴展,只需要把mongodb服務的機器加入到分片集群中即可。
- mongos:數據庫集群請求的入口,所有的請求都通過mongos進程協調,不需要在應用程序添加一個路由選擇器,mongos自己就是一個請求分發中心,它負責把對應的數據請求轉發到對應的shard服務器上。在生產環境通常有多mongos作為請求的入口,防止其中一個掛掉所有的mongodb請求都沒有辦法操作。
- config server:配置服務器,存儲所有數據庫元信息(路由、分片)的配置。mongos本身沒有物理存儲分片服務器和數據路由信息,只是緩存在內存裏,配置服務器則實際存儲這些數據。mongos第一次啟動或者關掉重啟就會從config server加載配置信息,以後如果配置服務器信息變化會通知到所有的mongos更新自己的狀態,這樣mongos就能繼續準確路由。在生產環境通常有多個config server配置服務器,因為它存儲了分片路由的元數據,防止數據丟失
- shard:存儲了一個集合部分的MongoDB實例,每個分片是單獨的mongodb服務或者副本集,在生產環境中,所有的分片都應該是副本集。
MongoDB分片