集群實例
集群實例包含 mongos, config 和 shard 3 類節點。
其中 config 和 shard 節點都采用 3 節點副本集架構,如果某個節點發生故障,系統會自動進行高可用切換操作,選取一個正常節點繼續提供服務,后臺會對故障節點進行檢查和修復。config 和 shard 的自動切換操作對用戶來說不需要任何干預,整個過程會在 1 分鐘內完成,用戶請求如果出現報錯可以進行重試。
每個 mongos 是獨立運行的,如果節點出現故障,則該節點不可用。用戶在創建實例時會分配多個 mongos 節點,因此推薦客戶端使用 Connection URI 連接所有 mongos 節點,而不是單個 mongos 節點。客戶端會自動對所連接的 mongos 進行探活檢查,并自動將請求分散到正常的 mongos 節點上。
連接示例如下:
mongo "mongodb://<用戶名>:<密碼>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin"
副本集實例
一個副本集實例包含多個 mongod 節點。比如 3 節點副本集包含 1 個 Primary,1 個 Secondary 和 1 個 Hidden 節點。如果 Primary 節點故障,系統會自動選擇另外正常的 Secondary 節點成為新的 Primary 節點,后臺會對故障節點進行檢查和恢復。
整個切換和恢復過程不需要用戶干預,在此期間可能會產生 1 分鐘以內的連接閃斷和請求失敗,用戶可以對出現報錯的請求進行重試。
建議客戶端使用 Connection URI 連接文檔數據庫時,連接所有正常節點,并指定 replicaSet 參數。避免在出現單個節點故障時,影響應用的正常請求。
連接示例如下:
mongo "mongodb://<用戶名>:<密碼>@<IP1:Port1>,<IP2:Port2>/admin?authSource=admin&replicaSet=<setname>"
單節點實例
單節點實例僅有一個 mongod 節點供用戶讀寫訪問。如果節點發生故障,系統會對節點進行檢查和恢復。但是故障期間實例不可用。
單節點實例主要是在保證數據可靠性的前提下,為用戶降低使用成本。適合測試、教學等非核心業務場景。生產環境建議使用集群實例或者副本集實例,保障服務的高可用。