2023-01-12
集群 leader ○
選舉制度的說明
ZooKeeper是一個分布式協(xié)調(diào)服務(wù)組件,但它本身也是一個集群,并且是一個主從架構(gòu)的集群。與HDFS類似的是,這個集群中也是需要一個主節(jié)點(diǎn)和若干個從節(jié)點(diǎn)的。但是與HDFS不同,HDFS的主節(jié)點(diǎn)NameNode是需要我們在配置文件中指定的,而ZooKeeper集群的主節(jié)點(diǎn)并不是我們手動指定的,而是所有的節(jié)點(diǎn)啟動之后自己選舉出來的!因此,我們就需要了解一下ZooKeeper集群中的選舉制度到底是什么?主節(jié)點(diǎn)為什么可以當(dāng)選老大!
ZooKeeper集群中,節(jié)點(diǎn)的角色大體有兩種:Leader 和 Follower。其中Leader為主節(jié)點(diǎn),F(xiàn)ollower為從節(jié)點(diǎn)。
選舉中的幾個概念
Leader
Leader是ZooKeeper集群工作的核心,是ZooKeeper集群的主節(jié)點(diǎn)。也是事物請求(寫操作)的唯一調(diào)度和處理者,保證集群事物處理的順序性;集群內(nèi)部各個服務(wù)器的調(diào)度者。對于 create 、 setData 、 delete 等有寫操作的請求,需要統(tǒng)一轉(zhuǎn)發(fā)給Leader處理。Leader需要決定編號、執(zhí)行操作,這個過程稱為一個事物。
Follower
Follower是ZooKeeper集群中的從節(jié)點(diǎn),有以下的功能:
1、處理客戶端非事物請求(讀操作),轉(zhuǎn)發(fā)事物請求給Leader(寫操作)。
2、參與集群Leader選舉投票
投票相關(guān)
●myid
○我們在搭建ZooKeeper集群的時候需要設(shè)置服務(wù)器的ID值,這個值在選舉的投票中有一定的權(quán)重占比。
●zxid
○事物ID,ZooKeeper會為每一個更新的操作分配一個事物ID。
○事物ID是一個64位的數(shù)字,且是全局單調(diào)遞增的。
○在一個節(jié)點(diǎn)的狀態(tài)信息中會看到這個值。
●epoch
○邏輯時鐘。
在進(jìn)行選舉的時候,epoch > zxid > myid
狀態(tài)相關(guān)
●LOOKING:競選狀態(tài)
●FOLLOWING:隨從狀態(tài),同步leader狀態(tài),參與投票
●OBSERVING:觀察狀態(tài),同步leader狀態(tài),不參與投票
●LEADING:領(lǐng)導(dǎo)狀態(tài)
選舉發(fā)生的時機(jī)
●啟動ZooKeeper集群的時候
●ZooKeeper集群運(yùn)行中,Leader失聯(lián)
選舉過程
啟動集群選舉
我們以3個節(jié)點(diǎn)的ZooKeeper集群為例,啟動的順序是qianfeng01, qianfeng02, qianfeng03
1qianfeng01啟動,投自己一票。由于未滿足過半的條件,進(jìn)入到LOOKING狀態(tài)。
2qianfeng02啟動,投自己一票。現(xiàn)在活躍的節(jié)點(diǎn)已經(jīng)過半,歸票:
○優(yōu)先比較Epoch,誰的大,誰當(dāng)選Leader
○如果Epoch相同,比較zxid,誰的大,誰當(dāng)選Leader
○如果zxid也相同,比較myid,誰的大,誰當(dāng)選Leader
3qianfeng03啟動,由于集群中已經(jīng)出現(xiàn)了Leader,因此qianfeng03直接進(jìn)入FOLLOWING狀態(tài),成為Follower。
集群運(yùn)行中,Leader失聯(lián)后的選舉
集群在運(yùn)行的過程中,Leader失聯(lián)了。例如: 集群啟動之后,qianfeng02當(dāng)選為Leader,現(xiàn)在已經(jīng)失聯(lián)...
●qianfeng01、qianfeng03會進(jìn)入到LOOKING狀態(tài),開始投票,并每人都給自己投了一票。
●歸票:
○優(yōu)先比較Epoch,誰的大,誰當(dāng)選Leader
○如果Epoch相同,比較zxid,誰的大,誰當(dāng)選Leader
○如果zxid也相同,比較myid,誰的大,誰當(dāng)選Leader
開班時間:2021-04-12(深圳)
開班盛況開班時間:2021-05-17(北京)
開班盛況開班時間:2021-03-22(杭州)
開班盛況開班時間:2021-04-26(北京)
開班盛況開班時間:2021-05-10(北京)
開班盛況開班時間:2021-02-22(北京)
開班盛況開班時間:2021-07-12(北京)
預(yù)約報名開班時間:2020-09-21(上海)
開班盛況開班時間:2021-07-12(北京)
預(yù)約報名開班時間:2019-07-22(北京)
開班盛況Copyright 2011-2023 北京千鋒互聯(lián)科技有限公司 .All Right 京ICP備12003911號-5 京公網(wǎng)安備 11010802035720號