只有一個單機實例,客戶端與其直接連接使用。 
副本集通常由至少3個節點組成。其中一個是主節點,負責處理客戶端請求,其余的都是從節點,負責復制主節點上的數據。 mongodb各個節點常見的搭配方式為:一主多從(正常情況下至少3個節點組成副本集)。 主節點記錄在其上的所有操作,從節點定期輪詢主節點獲取這些操作,然后對自己的數據副本執行這些操作,從而保證從節點的數據與主節點一致。 選舉機制:當一個節點掛掉之后需要滿足“大多數”成員投票,如果不滿足大多數的話,會造成多個節點成為主節點。通常節點之間通信斷掉之后,會認為其他節點不可用,如果5個節點的副本集,其中3個與另外兩個不在同一個機房,當兩個機房通信斷開時,兩個節點的機房認為其他3個節點多掛了,就會開始選舉。這個時候其他3個節點其實是可用的只是與另外兩個節點斷開而已,這個時候就會出現2個主節點。 
分片是將一個集合的數據分別存儲在不同的shard節點上減輕單機壓力 Shard Keys 的選擇很重要,MongoDB主要根據Shard Keys來劃分數據,Shard Keys可以由文檔的一個或者多個物理鍵值組成,對于分片Key的選定直接決定了集群中數據分布是否均衡、集群性能是否合理。 
路由服務器負責把對應的數據請求請求轉發到對應的shard服務器上 mongos,數據庫集群請求的入口,所有的請求都通過mongos進行協調,不需要在應用程序添加一個路由選擇器,mongos自己就是一個請求分發中心,它負責把對應的數據請求請求轉發到對應的shard服務器上。在生產環境通常有多mongos作為請求的入口,防止其中一個掛掉所有的mongodb請求都沒有辦法操作。 
存儲所有數據庫元信息(路由、分片)的配置。mongos本身沒有物理存儲分片服務器和數據路由信息,只是緩存在內存里,配置服務器則實際存儲這些數據。 配置服務器相當與集群大腦,存儲所有數據庫元信息(路由、分片)的配置。mongos本身沒有物理存儲分片服務器和數據路由信息,只是緩存在內存里,配置服務器則實際存儲這些數據。mongos第一次啟動或者關掉重啟就會從 config server 加載配置信息,以后如果配置服務器信息變化會通知到所有的 mongos 更新自己的狀態,這樣 mongos 就能繼續準確路由。在生產環境通常有多個 config server 配置服務器,因為它存儲了分片路由的元數據,這個可不能丟失!就算掛掉其中一臺,只要還有存貨, mongodb集群就不會掛掉。 
一個典型的集群結構如下:
集群的組成: 單機mongod 組成副本集 -> 分片, 客戶端通過mongos 讀取 config servers的信息與分片通信,客戶端程序感覺不到集群的存在,他只需要知道mongos服務器的ip和連接方式,至于它有多少個集群ip 都不需要關注,mongos 會自動選擇。
每一個shard包括一個或多個服務和存儲數據的mongod進程(mongod是MongoDB數據的核心進程),典型的每個shard開啟多個服務來提高服務的可用性。這些服務/mongod進程在shard中組成一個復制集。
新聞熱點
疑難解答