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啟動,投自己一票。現在活躍的節點已經過半,歸票:
○優先比較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
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號