簡述ZAB協議以及Zookeeper?

zookeeper:算法

       ZooKeeper是一種爲分佈式應用所設計的高可用、高性能且一致的開源協調服務,基於ZAB協議,實現一種主備模式和架構來保持集羣數據的一致性。服務器

zookeeper使得分佈式應用能夠經過一個共享的樹形結構命名空間實現協調。zookeeper將全部的數據存儲在內存中,zookeeper集羣中任何一臺機器均可以響應客戶端的讀操做,但只有一臺機器響應客戶端的寫操做,所以更適合以讀操做爲主的應用場景。架構

       zookeeper中有三種角色:leader、follower、observer分佈式

  • leader是經過選舉來肯定,爲客戶端提供讀寫功能
  • follower提供讀功能,能夠參與選擇leader的選舉
  • observer不參與選舉,也不參與過半寫成功策略,提高集羣的讀性能

zookeeper節點分爲臨時節點、持久節點、順序節點,每個節點都有stat結構,重要的功能就是watcher功能,開源客戶端:zkclient、curator性能

ZAB協議:設計

     ZAB是爲zookeeper設計的原子廣播協議,借鑑Paxos算法,是一種分佈式一致性算法,保證zookeeper集羣中數據最終一致性。日誌

      zab協議只容許leader處理來自客戶端的事務請求。當leader收到請求後,將事務請求轉化成事務proposal,因爲leader爲每個follower建立一個隊列,並把該事務放入響應隊列中,保證事務的順序性。以後在隊列中順序地向follower廣播該提案。follower接收到提案後,以事務的形式寫入本地日誌中,並向leader發送ack。當超過半數的follower向leader發送恢復,leader會向其餘節點發送commit消息,同時leader提交該事務。server

       zab協議有故障恢復和消息廣播組成隊列

        當系統啓動或leader服務器出現故障時候,進入故障恢復模式。將會開始新的選舉,選舉產生的leader與過半的follower進行數據同步。同步結束後,將進入消息廣播模式。若是檢測到有leader在廣播消息,會自動進入恢復模式。當完成與leader同步以後,進入消息廣播模式。事務

相關文章
相關標籤/搜索