ZAB——Paxos到Zookeeper(一)

簡介

  • ZAB(Zookeeper Atomic BroadCast)協議。
  • 爲zk專門設計的支持崩潰恢復原子廣播協議。
  • zk使用zab協議在主備模式的架構中保持集羣各副本數據的一致性

崩潰恢復模式

條件

  • 服務框架重啓。
  • Leader異常:網絡中斷、崩潰退出、重啓。

目的

  • 選取新Leader。
  • Follower和Leader數據同步。
    • 已經被Leader提交的Proposal能夠被所有Follower提交。
    • 跳過已經被丟棄事務的Proposal。

步驟

ZXID:事務ID,共64位,32位epoch標識leader週期,32位標識事務編號

  1. Leader選舉。Leader選舉爲提出Proposal中最大ZXID的機器,對epoch+1。
  2. Leader以Proposal緊接着Commit消息的形式同步數據給Follower。
  3. 包含上一個leader週期未提交Proposal的Follower啓動時,會被Leader要求回退到過半機器提交的最新Proposal。

消息廣播模式

條件

  • 過半Follower完成和Leader的狀態同步。

目的

  • 主備數據一致性。
    • 兩階段提交移除回滾邏輯。
    • 基於FIFO的TCP,保證消息接收和發送的順序性。

步驟

  • 200618.zkbroadcast.png
  1. Leader爲每個事務請求生成Proposal,分配ZXID。
  2. Leader廣播Proposal。
  3. Follower事務日誌落盤,返回Ack。
  4. Leader收到超過半數Follower的Ack後,廣播Commit消息通知提交。
  5. Leader自身提交。
  6. Follower收到Commit消息之後提交。

和Paxos的關係

相同

  • Leader協調多個Follower。
  • Leader等待超過半數Follower反饋後提交。
  • 每個Proposal包含一個epoch值,標識當前的Leader週期。

不同

  • 目的不同。
    • ZAB:構建高可用分佈式主備系統。
    • Paxos:構建分佈式一致性狀態機系統。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章