【3】Zookeeper中的角色


一、Zookeeper角色的分類

  1. 領導者(leader)
    Leader服務器為客戶端提供讀服務和寫服務。

  2. 學習者(learner)

    • 跟隨者(follower)
      Follower服務器為客戶端提供讀服務,參與Leader選舉過程,參與寫操作“過半寫成功”策略。
    • 觀察者(observer)
      Observer服務器為客戶端提供讀服務,不參與Leader選舉過程,不參與寫操作“過半寫成功”策略。用於在不影響寫性能的前提下提升集群的讀性能。
  3. 客戶端(client)
    服務請求發起方。

Zookeeper集群管理圖:

二、Zookeeper角色的狀態

  1. LOOKING:
       當前Server未知集群中的Leader,並且正在尋找。
  2. LEADING:
       當前Server即為選舉出來的Leader。
  3. FOLLOWING:
       當前Follower已與選舉出來的Leader同步。
  4. OBSERVING
      當前Observer已與選舉出來的Leader同步。

三、Zookeeper各角色的作用

3.1、Zookeeper中的請求

  • 事務請求:
     在Zookeeper中,會改變服務器狀態的請求稱為事務請求(包括:創建節點、更新數據、刪除節點、創建會話等) 。
  • 非事務請求
     從Zookeeper僅僅讀取數據,不會對服務器數據狀態進行任何修改的請求稱為非事務請求。

3.2、Leader的作用

  1. 在ZAB崩潰恢復之后,消息廣播之前,進行集群中的數據同步;
  2. 維持與Learner的心跳,接收Learner請求消息,並據不同的消息類型,進行不同的處理;
  3. Learner處理的消息類型包括:PING消息、REQUEST消息、ACK消息、REVALIDATE消息等。

  其中,PING消息指Learner的心跳信息;REQUEST消息是Follower發送的提議信息,包括寫請求及同步請求;ACK消息是Follower的對提議的回復,超過半數的Follower通過,則commit該提議;REVALIDATE消息是用來延長SESSION有效時間。
Leader的工作流程簡圖如下所示,實際上流程要比下圖復雜得多,啟動了三個線程來實現功能:

3.3、Follower的作用

Follower主要有四個功能:

  1. 向Leader發送請求(PING請求、REQUEST消息、ACK請求、REVALIDATE消息);
  2. 接收Leader 的消息並進行處理;
  3. 接收Client的請求,如果為寫請求,發送給Leader進行投票;
  4. 返回Client請求結果。

Follower的消息循環處理以下來自Leader的消息:

  1. PING消息:心跳消息;
  2. PROPOSAL消息:Leader發起的提案,要求Follower投票;
  3. COMMIT消息:服務器端最新一提案的信息;
  4. UPTODATE消息:表示同步完成;
  5. REVALIDATE消息:根據Leader的REVALIDATE結果,關閉待revalidate的session還是允許其接受消息;
  6. SYNC消息:返回SYNC結果到客戶端,這個消息最初由客戶端發起,用來強制得到最新的數據更新。

3.3、Observer的作用

  Observer角色除了不參與Leader選舉和Proposal投票外,與Follower的作用相同。

四、參考資料

參考書籍:從Paxos到Zookeeper:分布式一致性原理與實踐
參考博客:https://blog.csdn.net/yu757371316/article/details/80742223

  • 作者: DeepInThought
    出處: https://www.cnblogs.com/DeepInThought
    本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

  • 免責聲明!

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



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