分片是跨多臺機器存儲數(shù)據(jù)記錄的過程,它是MongoDB滿足數(shù)據(jù)增長需求的方法。隨著數(shù)據(jù)大小的增加,單臺機器可能不足以存儲數(shù)據(jù),也無法提供可接受的讀寫吞吐量。分片解決了水平縮放的問題。通過分片,您可以添加更多計算機來支持?jǐn)?shù)據(jù)增長和讀取和寫入操作的需求。
在復(fù)制中,所有寫入都轉(zhuǎn)到主節(jié)點
對延遲敏感的查詢?nèi)匀晦D(zhuǎn)到主節(jié)點
單個副本集的限制為12個節(jié)點
活動數(shù)據(jù)集很大時,內(nèi)存不能足夠大
本地磁盤不夠大
垂直擴展太昂貴了
下圖顯示了使用分片群集的MongoDB中的分片。
在下圖中,有三個主要組件-
Shards
?分片用于存儲數(shù)據(jù)。它們提供了高可用性和數(shù)據(jù)一致性。在生產(chǎn)環(huán)境中,每個分片都是一個單獨的副本集。
Config Servers
?配置服務(wù)器存儲集群的元數(shù)據(jù)。該數(shù)據(jù)包含集群數(shù)據(jù)集到分片的映射。查詢路由器使用此元數(shù)據(jù)將操作定向到特定的分片。在生產(chǎn)環(huán)境中,分片群集恰好具有3個配置服務(wù)器。
Query Routers
?查詢路由器基本上是mongo實例,可與客戶端應(yīng)用程序接口并將操作直接引導(dǎo)至適當(dāng)?shù)姆制?。查詢路由器處理操作并將其定位到分片,然后將結(jié)果返回給客戶端。分片群集可以包含多個查詢路由器來劃分客戶端請求負(fù)載??蛻舳藢⒄埱蟀l(fā)送到一個查詢路由器。通常,分片群集具有許多查詢路由器。