分布式和集群實現的原理

2021-09-27 08:16:23 字數 1025 閱讀 4376

分布式:

1.將不同功能資料放到不同的機器上。

2.將同一資料放到不同的伺服器上(資料副本),伺服器之間通過網路互通。(涉及到資料的一致局性問題)。

分布式系統的cap理論:

一致性(c):在分布式系統中的所有資料備份,在同一時刻是同樣的值。(等同於所有節點訪問同乙份最新的資料副本)

可用性(a):在集群中一部分節點故障後,集群整體是否還能響應客戶端的讀寫請求。

1、對資料更新具備高可用性(乙個壞了由另乙個自動成為主節點進行處理)

2、不要因為乙個節點通訊不上(通過網路連線有時連線不上正常),就出現使用者請求出錯,在強一致性要求下特別不可用(因為要求每個節點的資料都是最新的才返回成功,有乙個失敗都返回失敗)。

分割槽容錯性(p):以實際效果而言,分割槽相當於對通訊的時限要求。系統如果不能在時限內達成資料一致性,就意味著發生了分割槽的情況,必須就當前操作在c和a之間做出選擇。

1、是否能接受分割槽(分割槽就是意味著節點之間可能會通訊不上,可能會長時間連線不上)

2、因為是分布式所以是肯定選擇了分割槽的,所以只能在c和a中權衡進行選擇:

1)選擇c,可能會因為有節點通訊不上,所以使用者請示可能長時間得不到正確的回應,影響a。

2)先擇了a,就意味要犧牲c,道理同選擇c是類似的。

集群:

用多個伺服器來處理同乙個功能或儲存資料(這個有點像分布式(資料備份)),來提高對多使用者請求的處理,防止乙個伺服器處理不過來。一般會通過反向**(分發請求)來實現集群的功能(nginx:乙個反向**的軟體)。

nginx:反向**軟體

使用者的請求都先到達nginx,nginx再跟據配置計算出把這個請求發到集群裡的某個伺服器進行處理,nginx再接收它處理完的結果,再把結果返回給使用者。

mysql分布式集群實現原理

做mysql集群,例如 利用mysql cluster mysql proxy,mysql replication,drdb等等 有人會問mysql集群,根分表有什麼關係嗎?雖然它不是實際意義上的分表,但是它啟到了分表的作用,做集群的意義是什麼呢?為乙個資料庫減輕負擔,說白了就是減少sql排隊佇列中...

分布式和集群

1 小飯店原來只有乙個廚師,切菜洗菜備料炒菜全乾。後來客人多了,廚房乙個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,這兩個廚師的關係是集群。為了讓廚師專心炒菜,把菜做到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關係是分布式,乙個配菜師也忙不過來了,又請了個配菜師,兩個配菜師關係...

分布式和集群

集群可以理解為分布式的子集。不管是分布式還是集群,有以下幾點需要注意 高效能 指可以充分利用系統的所提供的能力。高可用 即相當於乙個節點宕機,有其他節點可以提供相同的服務,給予外界的感覺為系統或者應用一直可用的感覺。需要著重理解 共享磁碟 概念。我們可以想象下,我們的系統是乙個集群或者分布式的,那麼...