第二篇:《從Paxos到zookeeper分佈式一致性原理與實踐》一致性協議與zookeeper

上一篇總結了下分佈式所產生的問---------分佈式系統中一致性問題。今天繼續站在巨人的肩膀上虛心學習一下,怎樣解決這些問題!

一、一致性協議:

計算機大佬們爲了解決分佈式一致性問題,經過了很長的事件探索和研究,其中三個比較出名的解決一致性協議算法爲:二階段提交算法、三階段提交算法、Paxos(中文發音:帕克鎖斯,英文記憶不是很強所有按照自己的發音加強記憶,有誤之處請指出批評)。二階段、三階段算法,大佬們可以百度一大堆。

PAXOS算法:

      三階段算法是在二階段算法上的一個優化,主要優化的是性能方面,但是二階段和三階段兩個算法都不能解決分佈式分區容錯(腦裂)的問題。所有paxos算法是一種基於消息傳遞具有高度容錯特徵的一致性算法。也就是說可以解決腦裂所造成的一致性問題。

 

小結:從二階段到三階段到Paxos算法,都是經過很多年才得出來的。可以看出任何的東西都是從簡單到複雜,不是一出來就是複雜的。老子說過:天下難事必做於易,天下大事必做於細。從小事做起,化繁爲簡。

二、PAXOS算法與Zookeeper:

  • Zookeeper是什麼:典型的分佈式數據一致性解決方案。
  • Zookeeper解決問題:提供一個高性能、高可用,具有嚴格的順序訪問控制能力的分佈式協調服務。
  • Zookeeper設計目標:
  1. 數據模型要簡單
  2. 能集羣
  3. 順序訪問
  4. 高性能
  • Zookeeper名字由來:雅虎內部很多項目都是使用動物的名字命名的,所有雅虎工程師也說這個項目取個動物的名字;於是一個科學家開玩笑說:在這樣我們這裏成動物園了。這話一出,大家都說就叫動物管理員吧。由此Zookeeper的名字就這樣誕生了。
  • 爲什麼要用Zookeeper?
  1. 免費,開源
  2. 性能高、穩定
  3. 得到了廣泛的應用。Hadoop,Hbase,Stormd等都用它用作分佈式協調
  • Zookeeper內部協議採用類似於PAXOS算法,具體是什麼呢?

三、Zookeeper與ZAB協議:

Zookeeper並沒有採取Paxos算法,而是使用一種稱爲Zookeeper Atomic Broadcase(ZAB,Zookeeper原子消息廣播協議)的協議作爲數據一致性核心算法。該協議是Zookeeper專門設計的一種指出崩潰恢復的原子廣播協議,注意這一點特別爲Zookeeper設計的崩潰恢復的原子消息廣播算法。

ZAB協議包括兩種模式:一種是崩潰恢復,一種是消息廣播

 

什麼是崩潰恢復呢?

當整個服務框架在啓動過程中,或者當leader服務器出現網絡中斷、崩潰退出與充氣等異常情況是,ZAB協議就進入了恢復模式並選舉新的leader服務器,新的leader服務於過半的機器完成數據同步之後,ZAB協議就會退出恢復模式。

也就是說:分佈式中必定要有一個leader。其次就是leader掛了重新洗牌,新的leader一定會產生,使zookeeper退出恢復模式。

 

什麼是消息廣播呢?

Zookeeper服務器的三個角色Follow、Leader(只有一臺被選舉出來)、Observer。

ZAB是原子消息廣播,鐵定zookeeper裏面是一直消息傳送機制。當集羣中已經有過半的Follow服務器完成和leader服務的狀態同步,那麼整個服務框架就進入消息廣播模式。當另一個Follow加入時,就會跟leader進入恢復模式,只到同步完成,接着進入分佈式的消息廣播模式。

也就是說:分佈式服務器(leader)沒有出現異常,好的狀態就是消息廣播模式。

 

低姿態能力有限,只從簡單的概念說起,也是自己的一些理解。

總結:我的理解:

  • ZAB協議是一個專門爲Zookeeper設計的協議,按照ZAB協議,只要leader掛了,就會進入恢復模式,好了就進入消息廣播模式。
  • PAXOS算法只要用於構建一個分佈式的一致性狀態機系統;ZAB協議主要用於構建一個高可用的分佈式數據主備系統(zookeeper)。

(還是個菜鳥,有不對的地方可以關注微信指出,不同的意見可以一起討論)。

二維碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章