鍍金池/ 問答/數(shù)據(jù)庫/ mongodb 三種集群的區(qū)別(Replica Set / Sharding /

mongodb 三種集群的區(qū)別(Replica Set / Sharding / Master-Slaver)

Replica Set / Sharding / Master-Slaver 三種集群的區(qū)別

回答
編輯回答
尋仙

Master/Slave

先說最后一個,是Master/Slave,不是Slaver。這種方式基本上不再推薦使用,只能從Master復(fù)制數(shù)據(jù)到Slave,并不提供高可用,一旦Master結(jié)點(diǎn)出故障就比較難處理。具體細(xì)節(jié)就不說了,反正已經(jīng)不推薦使用。

Replica Set

即常說的復(fù)制集。復(fù)制集的主要目標(biāo)有幾個:

  • 高可用(主要目標(biāo)):當(dāng)一個結(jié)點(diǎn)故障時自動切換到其他結(jié)點(diǎn);
  • 數(shù)據(jù)冗余(主要目標(biāo)):數(shù)據(jù)復(fù)制到n個結(jié)點(diǎn)上,增加數(shù)據(jù)安全性,同時為高可用提供基礎(chǔ);
  • 功能隔離(次要目標(biāo)):使用不同的結(jié)點(diǎn)隔離某些有特殊需求的功能,比如使用一個結(jié)點(diǎn)進(jìn)行OLAP運(yùn)算(大規(guī)模資源占用),使用一個結(jié)點(diǎn)在遠(yuǎn)程做災(zāi)備(性能要求不如本地高),讀寫分離等等;

Sharded Cluster

即分片集。分片集的主要設(shè)計(jì)目標(biāo)是:

  • 水平擴(kuò)展:當(dāng)一臺服務(wù)器滿足不了需求的時候,我們可以選擇垂直擴(kuò)展(增加服務(wù)器硬件),它雖然簡單,但很容易達(dá)到極限,并且面臨成本高等明顯缺點(diǎn)。成本更低的方式是使用n臺服務(wù)器組成集群來滿足系統(tǒng)需求。這就是分片集的主要設(shè)計(jì)目標(biāo);
  • 縮短響應(yīng)時間:因?yàn)榭梢园褦?shù)據(jù)分散到多臺服務(wù)器上,自然每臺服務(wù)器的處理壓力減小,處理時間就會縮短;

這里會出現(xiàn)一個問題:假設(shè)每臺服務(wù)器出故障的機(jī)率是x%,那么n臺服務(wù)器有一臺出現(xiàn)故障的機(jī)率就是x% * n,如果不做高可用設(shè)計(jì),集群出現(xiàn)故障的概率就會隨機(jī)器數(shù)量成正比增長,這在工程上是不能接受的。幸運(yùn)的是我們已經(jīng)有了解決高可用的方案,也就是復(fù)制集。所以MongoDB的分片集群要求每一個片都是復(fù)制集(當(dāng)然測試環(huán)境也可以使用單結(jié)點(diǎn),生產(chǎn)環(huán)境不推薦)。

總結(jié)

大概就是這樣,大家的設(shè)計(jì)目標(biāo)不一樣,各做各的事情。

2017年7月7日 05:30