07.ZooKeeper -ZAB協議
阿新 • • 發佈:2020-10-16
ZK如何保證叢集每個節點的資料一致的
總體對ZK的操作分為兩類:讀取,更新(增刪改),在ZK中所有的節點均允許讀取資料,但是如果是更新請求那麼如果連線到節點是follower節點那麼follower節點會把寫請求轉發給leader節點進行處理
ZAB協議(ZooKeeper Atomic Broadcast,ZooKeeper原子訊息廣播協議)
是專為ZK設計的一致性協議。
- 所有的更新請求都轉發給leader
- leader節點分配全域性單調遞增事務id(Zxid),廣播事務提議(發給所有follower)
- follower處理提議,做出反饋
- leader收到過半數反饋,廣播Commit
- leader做出響應
ZAB協議——崩潰恢復
leader伺服器出現崩潰,或者說由於網路原因導致leader伺服器失去了與過半follower節點的聯絡,那麼就會進入崩潰恢復模式(這個模式下不能提供服務)。
- ZAB協議規定如果一個更新請求在一臺機器上被處理成功(commit),那麼應該在所有的機器上都被處理成功,哪怕機器出現故障崩潰
- ZAB協議確保那些已經在leader伺服器上提交的更新請求最終被所有伺服器都提交
- ZAB協議確保丟棄那些只在leader伺服器上被提出(沒有commit)的更新請求