分片是在多臺機(jī)器之間存儲數(shù)據(jù)記錄的過程,MongoDB是滿足數(shù)據(jù)增長需求的方法。 隨著數(shù)據(jù)的大小增加,單個(gè)機(jī)器可能不足以存儲所有數(shù)據(jù),也不能提供可接受的讀寫吞吐量。 分片解決了水平縮放的問題。 使用分片,可以添加更多的機(jī)器來支持?jǐn)?shù)據(jù)增長和讀寫操作的需求。
12
個(gè)節(jié)點(diǎn)的限制下圖顯示了使用分片集群的 MongoDB 分片。
在上圖中,有三個(gè)主要組件 -
碎片(Shards) - 碎片用于存儲數(shù)據(jù)。它們提供高可用性和數(shù)據(jù)一致性。 在生產(chǎn)環(huán)境中,每個(gè)分片是一個(gè)單獨(dú)的副本集。
配置服務(wù)器(Config Servers) - 配置服務(wù)器存儲集群的元數(shù)據(jù)。 該數(shù)據(jù)包含集群的數(shù)據(jù)集與分片的映射。查詢路由器使用此元數(shù)據(jù)將操作定位到特定的分片。 在生產(chǎn)環(huán)境中,分片集群正好有3
個(gè)配置服務(wù)器。
查詢路由器(Query Routers) - 查詢路由器基本上是 mongo 實(shí)例,與客戶端應(yīng)用程序的接口和直接操作到適當(dāng)?shù)姆制?查詢路由器處理并將操作定向到碎片,然后將結(jié)果返回給客戶端。 分片集群可以包含多個(gè)查詢路由器來分割客戶端請求負(fù)載。 客戶端向一個(gè)查詢路由器發(fā)送請求。 一般來說,分片集群有許多查詢路由器。