《大資料: ZooKeeper 資料同步流程》

HarkerYX發表於2020-12-04

一、ZooKeeper 資料同步流程

在 Zookeeper 中,主要依賴 ZAB 協議來實現分散式資料一致性。

ZAB 協議分為兩部分:

  • 訊息廣播
  • 崩潰恢復

訊息廣播

Zookeeper 使用單一的主程式 Leader 來接收和處理客戶端所有事務請求,並採用 ZAB 協議的原子廣播協議,將事務請求以 Proposal 提議廣播到所有 Follower 節點,當叢集中有過半的Follower 伺服器進行正確的 ACK 反饋,那麼Leader就會再次向所有的 Follower 伺服器傳送commit 訊息,將此次提案進行提交。這個過程可以簡稱為 2pc 事務提交,整個流程可以參考下圖,注意 Observer 節點只負責同步 Leader 資料,不參與 2PC 資料同步過程。

 

崩潰恢復

在正常情況訊息廣播情況下能執行良好,但是一旦 Leader 伺服器出現崩潰,或者由於網路原理導致 Leader 伺服器失去了與過半 Follower 的通訊,那麼就會進入崩潰恢復模式,需要選舉出一個新的 Leader 伺服器。在這個過程中可能會出現兩種資料不一致性的隱患,需要 ZAB 協議的特性進行避免。<

相關文章