日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZooKeeper 技术内幕,Leader 选举是一个什么样的过程?

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZooKeeper 技术内幕,Leader 选举是一个什么样的过程? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾個問題,引發思考:

  • 什么時候 leader 選舉?

  • 選舉的過程?

  • 選舉過程中,是否能提供服務?

  • 選舉結果,是否會丟失數據?

  • 服務器角色

    2 個小問題:

  • 服務器節點有多少角色?

  • 每個角色的作用?

  • 角色

    ZK 集群中,服務器節點,有 3 中角色:

  • Leader:ZK 集群工作機制的核心,主要工作:

    • 調度者:集群內部各個服務節點的調度者

    • 事務請求:事務請求的唯一調度和處理者,保證集群事務處理的順序性

  • Follower:主要職責:

    • 非事務請求:Follower 直接處理非事務請求,對于事務請求,轉發給 Leader

    • Proposal 投票:Leader 上執行事務時,需要 Follower 投票,Leader 才真正執行

    • Leader 選舉投票

  • Observer:ZK?3.3.0+?版本開始引入,提升 ZK 集群的非事務處理能力,主要職責:

    • 非事務請求:Follower 直接處理非事務請求,對于事務請求,轉發給 Leader

  • 特別說明:Observer 跟 Follower 的唯一區別:

  • Follower 參與投票:Leader 選舉、Proposal 提議投票(事務執行確認)

  • Observer 不參與投票:只用于提供非事務請求的處理

  • 疑問:節點成為 Follower 還是 Observer 是 配置文件中設定的?

    Leader 選舉

    2 個小問題:

  • 什么時候,進行 Leader 選舉?

  • Leader 選舉的具體過程,是什么?

  • 時機

    下面任何一種情況,都會觸發 Leader 選舉:

  • 啟動時,集群服務器剛啟動

  • 運行時,Leader 崩潰

  • 服務器的狀態流轉:

    過程

    Leader 選舉過程,本質就是廣播優先級消息的過程,選出數據最新的服務節點,選出優先級最高的服務節點,基本步驟:

  • 各個服務器節點,廣播自己的優先級標識?(sid,zxid)

  • 服務器節點收到其他廣播消息后,跟自己的優先級對比,自己優先級低,則變更當前節點投票的優先級(sid,zxid)?,并廣播變更后的結果

  • 當任意一個服務器節點收到的投票數,超過了法定數量(quorum),則,升級為 Leader,并廣播結果。

  • 疑問:法定數量(quorum),一般設置為集群規模大小的半數以上,quorum 在哪配置的?

    特別說明:

  • 服務器節點的優先級標識:(sid,zxid)

  • 優先比較?zxid?(事務 ID),其次比較sid(服務器ID)

  • sid?(服務器 ID) 是節點配置文件中設定的

  • 當前服務器上的?zxid?是什么時候設定的?是在 Leader 執行事務過程中,向當前服務器同步的?如何活的當前服務器上的?zxid?

  • 具體選舉過程:

    補充說明:

  • 由于網絡延時,節點得不到足夠多廣播信息時,會做出錯誤的投票判斷,糾正過程更耗時

  • 選舉過程中,服務器節點會等待一定時間,再廣播投票信息,時間間隔一般設定為?200 ms

  • 上面 Leader 選舉,采取事件觸發?Push 方式?廣播消息,稱為?快速 Leader 選舉,因為之前的 Leader 選舉,采用?Pull 方式,每隔?1s?拉取一次。

  • 疑問:

    服務器節點,等待?200ms?的起始時間點是什么?是收到一輪新投票消息,開始計時?

    RE:

  • 正常情況下,投票信息是事件觸發,廣播出去的;

  • 當某個服務器節點,判斷支持當前節點的投票數量 >=?法定數量(quorum),則,仍然等待?200ms,確認是否有更優的投票。

  • 真正的投票信息:

    屬性說明
    id被推舉 Leader 的 sid
    zxid被推舉 Leader 的事務ID
    electionEpoch投票的輪數,約束:同一輪投票,計數有效
    peerEpoch被推舉 Leader 的 epoch
    state當前服務器的狀態

    一次 Leader 選舉過程,屬于同一個?electionEpoch,結束時,會選出新的 Leader;服務器節點,在比較?(sid,zxid)?之前,會先比較選舉輪次?electionEpoch,只有同一輪次的 Leader 投票信息才是有效的:

  • 外部投票輪次 > 內部投票輪次,更新內部投票,并且觸發當前節點投票信息的重新廣播

  • 外部投票輪次 < 內部投票輪次,直接忽略當前的外部投票

  • 外部投票輪次 = 內部投票輪次,進一步比較?(sid,zxid)

  • 疑問:Leader 負責執行所有的事務操作,一次事務操作,

  • Leader 如何將事務操作同步到 Follower 和 Observer ?同步、異步?

  • 如何保證同步過程中,事務一定執行成功?事務失敗的影響?

  • Leader 上執行的事務狀態,通過?Zab?狀態更新的廣播協議,更新到 Follower 和 Observer。

    附錄

    分布式系統 Leader 選舉:腦裂

    腦裂(split brain):服務器集群的 2 個子集,能夠同時獨立選舉 Leader,并正常運行,形成 2 個集群。

    解決辦法:Leader 選舉的法定數量(quorum),超過正常集群的半數。

    Leader 選舉的必要條件:節點數量 >?法定數量。

    ?

    來源 |?https://urlify.cn/yqqmum

    總結

    以上是生活随笔為你收集整理的ZooKeeper 技术内幕,Leader 选举是一个什么样的过程?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。