<span id="35v3v"><th id="35v3v"></th></span>
<address id="35v3v"></address>

    <address id="35v3v"></address>
      <address id="35v3v"><listing id="35v3v"><meter id="35v3v"></meter></listing></address>
        <listing id="35v3v"><listing id="35v3v"></listing></listing>

        <listing id="35v3v"><listing id="35v3v"><menuitem id="35v3v"></menuitem></listing></listing>

        <noframes id="35v3v"><noframes id="35v3v">
        當前位置: 首頁 / 技術分享 / 正文
        ZooKeeper的選舉制度

        2023-01-12

        集群    leader  ○

          選舉制度的說明

          ZooKeeper是一個分布式協調服務組件,但它本身也是一個集群,并且是一個主從架構的集群。與HDFS類似的是,這個集群中也是需要一個主節點和若干個從節點的。但是與HDFS不同,HDFS的主節點NameNode是需要我們在配置文件中指定的,而ZooKeeper集群的主節點并不是我們手動指定的,而是所有的節點啟動之后自己選舉出來的!因此,我們就需要了解一下ZooKeeper集群中的選舉制度到底是什么?主節點為什么可以當選老大!

          ZooKeeper集群中,節點的角色大體有兩種:Leader 和 Follower。其中Leader為主節點,Follower為從節點。

          選舉中的幾個概念

          Leader

          Leader是ZooKeeper集群工作的核心,是ZooKeeper集群的主節點。也是事物請求(寫操作)的唯一調度和處理者,保證集群事物處理的順序性;集群內部各個服務器的調度者。對于 create 、 setData 、 delete 等有寫操作的請求,需要統一轉發給Leader處理。Leader需要決定編號、執行操作,這個過程稱為一個事物。

          Follower

          Follower是ZooKeeper集群中的從節點,有以下的功能:

          1、處理客戶端非事物請求(讀操作),轉發事物請求給Leader(寫操作)。

          2、參與集群Leader選舉投票

          投票相關

          ●myid

          ○我們在搭建ZooKeeper集群的時候需要設置服務器的ID值,這個值在選舉的投票中有一定的權重占比。

          ●zxid

          ○事物ID,ZooKeeper會為每一個更新的操作分配一個事物ID。

          ○事物ID是一個64位的數字,且是全局單調遞增的。

          ○在一個節點的狀態信息中會看到這個值。

          ●epoch

          ○邏輯時鐘。

          在進行選舉的時候,epoch > zxid > myid

          狀態相關

          ●LOOKING:競選狀態

          ●FOLLOWING:隨從狀態,同步leader狀態,參與投票

          ●OBSERVING:觀察狀態,同步leader狀態,不參與投票

          ●LEADING:領導狀態

          選舉發生的時機

          ●啟動ZooKeeper集群的時候

          ●ZooKeeper集群運行中,Leader失聯

          選舉過程

          啟動集群選舉

          我們以3個節點的ZooKeeper集群為例,啟動的順序是qianfeng01, qianfeng02, qianfeng03

          1qianfeng01啟動,投自己一票。由于未滿足過半的條件,進入到LOOKING狀態。

          2qianfeng02啟動,投自己一票?,F在活躍的節點已經過半,歸票:

          ○優先比較Epoch,誰的大,誰當選Leader

          ○如果Epoch相同,比較zxid,誰的大,誰當選Leader

          ○如果zxid也相同,比較myid,誰的大,誰當選Leader

          3qianfeng03啟動,由于集群中已經出現了Leader,因此qianfeng03直接進入FOLLOWING狀態,成為Follower。

          集群運行中,Leader失聯后的選舉

          集群在運行的過程中,Leader失聯了。例如: 集群啟動之后,qianfeng02當選為Leader,現在已經失聯...

          ●qianfeng01、qianfeng03會進入到LOOKING狀態,開始投票,并每人都給自己投了一票。

          ●歸票:

          ○優先比較Epoch,誰的大,誰當選Leader

          ○如果Epoch相同,比較zxid,誰的大,誰當選Leader

          ○如果zxid也相同,比較myid,誰的大,誰當選Leader

        好程序員公眾號

        • · 剖析行業發展趨勢
        • · 匯聚企業項目源碼

        好程序員開班動態

        More+
        • HTML5大前端 <高端班>

          開班時間:2021-04-12(深圳)

          開班盛況

          開班時間:2021-05-17(北京)

          開班盛況
        • 大數據+人工智能 <高端班>

          開班時間:2021-03-22(杭州)

          開班盛況

          開班時間:2021-04-26(北京)

          開班盛況
        • JavaEE分布式開發 <高端班>

          開班時間:2021-05-10(北京)

          開班盛況

          開班時間:2021-02-22(北京)

          開班盛況
        • Python人工智能+數據分析 <高端班>

          開班時間:2021-07-12(北京)

          預約報名

          開班時間:2020-09-21(上海)

          開班盛況
        • 云計算開發 <高端班>

          開班時間:2021-07-12(北京)

          預約報名

          開班時間:2019-07-22(北京)

          開班盛況
        在線咨詢
        試聽
        入學教程
        立即報名

        Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號

        黑人100部Av解禁片
        <span id="35v3v"><th id="35v3v"></th></span>
        <address id="35v3v"></address>

          <address id="35v3v"></address>
            <address id="35v3v"><listing id="35v3v"><meter id="35v3v"></meter></listing></address>
              <listing id="35v3v"><listing id="35v3v"></listing></listing>

              <listing id="35v3v"><listing id="35v3v"><menuitem id="35v3v"></menuitem></listing></listing>

              <noframes id="35v3v"><noframes id="35v3v">