1. 程式人生 > 實用技巧 >07.ZooKeeper -ZAB協議

07.ZooKeeper -ZAB協議

ZK如何保證叢集每個節點的資料一致的

總體對ZK的操作分為兩類:讀取,更新(增刪改),在ZK中所有的節點均允許讀取資料,但是如果是更新請求那麼如果連線到節點是follower節點那麼follower節點會把寫請求轉發給leader節點進行處理

ZAB協議(ZooKeeper Atomic Broadcast,ZooKeeper原子訊息廣播協議)

是專為ZK設計的一致性協議。

  1. 所有的更新請求都轉發給leader
  2. leader節點分配全域性單調遞增事務id(Zxid),廣播事務提議(發給所有follower)
  3. follower處理提議,做出反饋
  4. leader收到過半數反饋,廣播Commit
  5. leader做出響應
    在這裡插入圖片描述

ZAB協議——崩潰恢復

leader伺服器出現崩潰,或者說由於網路原因導致leader伺服器失去了與過半follower節點的聯絡,那麼就會進入崩潰恢復模式(這個模式下不能提供服務)。

  1. ZAB協議規定如果一個更新請求在一臺機器上被處理成功(commit),那麼應該在所有的機器上都被處理成功,哪怕機器出現故障崩潰
  2. ZAB協議確保那些已經在leader伺服器上提交的更新請求最終被所有伺服器都提交
  3. ZAB協議確保丟棄那些只在leader伺服器上被提出(沒有commit)的更新請求