ZAB協議與Paxos算法


ZooKeeper並沒有直接采用Paxos算法,而是采用一種被稱為ZAB(ZooKeeper Atomic Broadcast)的一致性協議

ZooKeeper是一個典型的分布式數據一致性的解決方案,分布式應用程序可以基於它實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master選舉、分布式鎖和分布式隊列等功能

ZooKeeper致力於提供一個高性能、高可用,具有嚴格的順序訪問控制能力(主要是寫操作的嚴格順序性)的分布式協調服務

ZooKeeper會將全量數據保存在內存中,以此提高服務器吞吐、減少延遲

對於每個來自客戶端的更新請求,ZooKeeper會分配一個全局唯一的遞增編號來實現同步

集群角色

  • Leader
  • Follower
  • Observer:不參與Leader選舉,致力於提高讀性能

ZooKeeper客戶端通過TCP連接服務器

數據節點:數據模型中的數據單元,ZNode
ZNode分為持久節點臨時節點,臨時節點生命周期和客戶端會話綁定

Watcher

ZooKeeper允許用戶在指定節點上注冊一些Watcher,並且在一些特定事件觸發的時候,ZooKeeper服務端會將事件通知到感興趣的客戶端上去

ZAB協議

ZAB協議並不像Paxos算法那樣,一種通用的分布式一致性算法,而是一種特別為ZooKeeper設計的崩潰可恢復的原子消息廣播算法
當Leader服務器不可用或者已經不存在過半服務器與該Leader服務器保持正常通信時,在重新開始新一輪的原子廣播事務操作之前,ZAB會進入恢復模式選舉新的Leader服務器,使集群彼此達到一個一致的狀態,從消息廣播模式進入到崩潰恢復模式。當集群過半機器都與新的Leader服務器完成了狀態同步操作后ZAB協議會退出恢復模式

ZAB與Paxos聯系與區別

Paxos算法中,一個新的選舉產生的主進程會進行兩個階段的工作
1、讀階段,新的主進程會通過和所有其他進程進行通信的方式來搜集上一個主進程提出的提案,並將它們提交。
2、寫階段,當前主進程開始提出它自己的提案。

ZAB在Paxos基礎上額外添加一個同步階段。同步階段之前,ZAB協議存在一個和Paxos讀階段類似的發現(Discovery)階段
同步階段中,新的Leader會確保存在過半的Follower已經提交了之前Leader周期中的所有事務Proposal
發現階段的存在,確保所有進程都已經完成對之前所有事物Proposal的提交

ZAB協議主要用於構建一個高可用的分布式數據主備系統,例如ZooKeeper
Paxos算法則是用於構建一個分布式的一致性狀態機系統


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM