目錄
單節點模式(Standalone)
副本集模式(Replica Set)
分片集群模式(Sharded Cluster)
MongoDB有多種部署模式,可以根據業務需求選擇適合的架構和部署方式。
單節點模式(Standalone)
單節點部署是單個MongoDB示例,也是最簡單的部署方式,數據都存儲在一個節點上,這種方式現在很少使用。
- 特點:
- 適用于開發、測試或小型應用場景。
- 無數據冗余,不具備高可用性。
- 單節點故障會導致服務中斷。
- 優點:
- 易于設置和維護,資源消耗低。
- 適用場景:
- 開發測試環境。
- 對高可用性要求不高的應用。
副本集模式(Replica Set)
MongoDB 中的副本集是一組維護相同數據集的?mongod?進程。副本集提供冗余和高可用性,是所有生產部署的基礎,副本集包含多個數據承載節點和一個可選的仲裁節點。在數據承載節點中,只有一個主節點,其他被為從節點。
主節點:主節點會接受所有的寫入操作,副本集中只會有一個主節點
從節點:從節點存儲也是一個完整的數據集,會復制主節點的oplog(oplog是主節點上的操作日志),并將這些操作應用于其數據集,以便從節點的數據集反映主節點的數據集狀態。如果主節點不可用,則某個符合條件的從節點將進行選舉,以將自己選舉為新的主節點。
- 特點:
- 一組MongoDB實例組成,提供數據冗余和高可用性。
- 自動故障切換:主節點宕機后,剩余節點選舉出新的主節點。
- 數據一致性高(強一致性)。
- 優點:
- 提供高可用性,保障數據安全。
- 適用于生產環境。
- 缺點:
- 需要額外的硬件資源。
- 配置和維護比單節點稍復雜。
- 適用場景:
- 需要高可用性和自動故障恢復的生產環境。
分片集群模式(Sharded Cluster)
副本集模式就是一個主從架構,雖然可以提升了高可用性,但是每個節點都需要存儲全部數據,這種冗余的方式增加了資源的消耗。而分片集群可以提供更好的可用性。
分片:分片是一種跨多臺機器分布數據的方法,mongo將數據分化為多個分片,每個分片保存的是數據的一部分,所有分片的數據疊加起來就是完整的數據。
分片集群:數據雖然被分配到多個分片節點上,但是每個分片也需要做冗余這樣才能提高可用性,所有每個分片也會有多個副本集,就是一個副本集模式,有主分片和從分片數據。
MongoDB的分片集群由一下幾個組件構成:
分片(shard):分片是存儲數據的位置,每個分片都包含分片數據的一個子集,每個分片都必須作為一個副本集進行部署。
路由服務器(mongos):mongos
?充當查詢路由器,在客戶端應用程序和分片集群之間提供接口,客戶端訪問分片集群是直接和mongos服務器連接而不會直接和具體的分片連接,mongos會將請求分配到具體的分片上進行操作,同時多個分片的結果也會聚合到mongos上進行處理。
配置服務器(config sderver):配置服務器會存儲集群的元數據和配置設置,配置服務器最主要的作用就是記錄集群分片的情況,mongos進行路由的時候需要知道路由到哪個分片,而這就要依據config server的分片配置數據,配置服務器也是副本集模式部署。
- 特點:
- 提供水平擴展能力,適合大規模數據和高并發應用。
- 數據根據分片鍵分布在不同的分片中。
- MongoDB 在分片集群中的分片之間分配讀寫工作負載,支持每個分片處理集群操作的子集。通過添加更多的分片,讀寫工作負載都可以在集群中橫向擴展。
- 優點:
- 支持大數據集和高吞吐量。
- 可按需擴展存儲和計算能力。
- 缺點:
- 部署和維護復雜,要求分片鍵設計合理。
- Config Server成為潛在的性能瓶頸。
- 適用場景:
- 大型分布式系統。
- 數據量超出單節點存儲能力的場景。