Mongodb3.4.7搭建高可用集群(一)


簡介

Sharding(分片)是一種將數據划分為多個分片,然后分布在多個機器節點上的解決方案,Mongodb使用sharding支撐其龐大的數據存儲以及高效的數據訪問。

單個節點上的數據庫系統要存儲大容量的數據,同時滿足高效率的數據訪問,對其來說是一個很大的挑戰。沒准,我們執行一次查詢,CPU就掛掉了,就算不掛,查詢出來的數據內存根本放不下。

面對這種情況,有2種方式可以解決系統的瓶頸:縱向增強自身、橫向擴展節點。

  • 縱向增強自身意味着要升級為更強悍的CPU,擴展更大的內存容量和硬盤容量,但受制於硬件技術的發展,這種方案風險太大。
  • 橫向擴展節點會將數據分布到不同的機器節點上,充分利用多個機器的硬件資源,即使數據繼續大規模增長,也可以通過擴充節點來從容應對。

Mongodb使用sharding來實現橫向擴展。

Mongodb的分片集群包括以下幾個組成部分:

  1. shard(分片):每個shard都是要存儲數據的子集,而且每一個shard都應該作為一個replica set,replica set是Mongodb主從復制的一個集群。
  2. mongos:mongos扮演了查詢路由的角色,客戶端連接它進行數據操作。
  3. config servers:config servers 存儲集群的元數據信息和配置信息,從3.4版本開始,config server必須部署為replica set。

注:因為Mongodb本身提供以上功能,所以這些服務進程都是Mongodb的實例,要不就部署在不同的機器節點上,要不就部署在想同機器的不同端口上。

 各個組件之間的關系如下圖:

Shard Key

Mongodb通過shard key來確定某個document應該放在那個shard replica set上。shard key可以是collection的一個字段或多個字段的組合。shard key一旦指定,分片后,就不能在更改了,所以分片前一定要規划好。關於如何指定shard key,后面的示例說明。

如果分片的時候collection不為空,那一定要保證該collection有shard key的索引。

選擇合適的shard key對程序的性能、擴展性有很大的影響。

Mongodb目前支持2中分片策略:Hashed Sharding,Ranged Sharding。具體后續文章介紹。

Chunks

Mongodb將分片數據放入chunk中,Mongodb將每個chunk均勻分布在shard集群中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM