zab與paxos算法聯繫與區別

zab協議概述

zab協議是爲分佈式協調服務zooKeeper專門設計的一種支持崩潰恢復的原子廣播協議。

zab協議不像paxos是一種通用的分佈式一致性算法,它是一種特別爲zookeeper設計的崩潰可恢復的原子消息廣播算法!

paxos算法概述

poxos算法是萊斯利蘭伯特(Leslie Lamport)於1990提出的一種基於消息傳遞且具有高度容錯性的一致性算法;

拜占庭將軍問題

拜占庭帝國有許多隻軍隊,不同軍隊的將軍之間必須制定一個統一的行動計劃,從而做出進攻或者撤退的決定。同時,各個將軍在地理上都是被分割開來的,只能依靠軍隊的通訊員來進行通訊。然而,在所有的通訊員中可能會存在叛徒,這些叛徒可以任意篡改信息,從而達到欺騙將軍的目的!

這就是著名的“拜占庭將軍問題”。從理論上來說在分佈式計算領域,試圖在異步系統和不可靠的通道上達到一致性是不可能的!

paxos算法主要有三類節點:

  • 提議者(Proposer):提議一個值;
  • 接受者(Acceptor):對每個提議進行投票;
  • 告知者(Learner):被告知投票的結果,不參與投票過程。

zab與paxos算法聯繫與區別

聯繫:

  1. 兩者都存在於一個類似於leader進程的角色,負責協調follower進程的運行;
  2. leader進程都會等待超過半數的follower做出正確的反饋後,纔會將提案進行提交;
  3. 在zab協議中,在每個proposal都包含一個epoch用來代表當前的leader週期,在paxos算法中,同樣存在這樣一個屬性,名字變成了Ballot;

區別:

設計目標不同,zab協議目標是構建一個高可用的分佈式數據主備系統,paxos算法是用於構建一個分佈式的一致性狀態機。

發佈了91 篇原創文章 · 獲贊 18 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章