分片是在多臺(tái)機(jī)器之間存儲(chǔ)數(shù)據(jù)記錄的過(guò)程,MongoDB是滿(mǎn)足數(shù)據(jù)增長(zhǎng)需求的方法。 隨著數(shù)據(jù)的大小增加,單個(gè)機(jī)器可能不足以存儲(chǔ)所有數(shù)據(jù),也不能提供可接受的讀寫(xiě)吞吐量。 分片解決了水平縮放的問(wèn)題。 使用分片,可以添加更多的機(jī)器來(lái)支持?jǐn)?shù)據(jù)增長(zhǎng)和讀寫(xiě)操作的需求。
12個(gè)節(jié)點(diǎn)的限制下圖顯示了使用分片集群的 MongoDB 分片。

在上圖中,有三個(gè)主要組件 -
碎片(Shards) - 碎片用于存儲(chǔ)數(shù)據(jù)。它們提供高可用性和數(shù)據(jù)一致性。 在生產(chǎn)環(huán)境中,每個(gè)分片是一個(gè)單獨(dú)的副本集。
配置服務(wù)器(Config Servers) - 配置服務(wù)器存儲(chǔ)集群的元數(shù)據(jù)。 該數(shù)據(jù)包含集群的數(shù)據(jù)集與分片的映射。查詢(xún)路由器使用此元數(shù)據(jù)將操作定位到特定的分片。 在生產(chǎn)環(huán)境中,分片集群正好有3個(gè)配置服務(wù)器。
查詢(xún)路由器(Query Routers) - 查詢(xún)路由器基本上是 mongo 實(shí)例,與客戶(hù)端應(yīng)用程序的接口和直接操作到適當(dāng)?shù)姆制?查詢(xún)路由器處理并將操作定向到碎片,然后將結(jié)果返回給客戶(hù)端。 分片集群可以包含多個(gè)查詢(xún)路由器來(lái)分割客戶(hù)端請(qǐng)求負(fù)載。 客戶(hù)端向一個(gè)查詢(xún)路由器發(fā)送請(qǐng)求。 一般來(lái)說(shuō),分片集群有許多查詢(xún)路由器。