更新時(shí)間:2021年08月12日14時(shí)44分 來(lái)源:傳智教育 瀏覽次數(shù):
Zookeeper選舉機(jī)制有兩種類(lèi)型,分別為全新集群選舉和非全新集群選舉,下面分別對(duì)兩種類(lèi)型進(jìn)行詳細(xì)講解。
1.全新集群選舉
全新集群選舉是新搭建起來(lái)的,沒(méi)有數(shù)據(jù)ID和邏輯時(shí)鐘的數(shù)據(jù)影響集群的選舉。假設(shè),目前有5臺(tái)服務(wù)器,它們的編號(hào)分別是1-5,按編號(hào)依次啟動(dòng)Zookeeper服務(wù)。下面來(lái)講解全新集群選舉的過(guò)程。
步驟1:服務(wù)器1啟動(dòng),首先,會(huì)給自己投票;其次,發(fā)投票信息,由于其它機(jī)器還沒(méi)有啟動(dòng)所以它無(wú)法接收到投票的反饋信息,因此服務(wù)器1的狀態(tài)一直屬于LOOKING狀態(tài)。
步驟2:服務(wù)器2啟動(dòng),首先,會(huì)給自己投票;其次,在集群中啟動(dòng)Zookeeper服務(wù)的機(jī)器發(fā)起投票對(duì)比,這時(shí)它會(huì)與服務(wù)器1交換結(jié)果,由于服務(wù)器2的編號(hào)大,所以服務(wù)器2勝出,此時(shí)服務(wù)器1會(huì)將票投給服務(wù)器2,但此時(shí)服務(wù)器2的投票數(shù)并沒(méi)有大于集群半數(shù)(2<5/2),所以?xún)蓚€(gè)服務(wù)器的狀態(tài)依然是LOOKING狀態(tài)。
步驟3:服務(wù)器3啟動(dòng),首先會(huì)給自己投票;其次,與之前啟動(dòng)的服務(wù)器1、2交換信息,由于服務(wù)器3的編號(hào)最大所以服務(wù)器3勝出,那么服務(wù)器1、2會(huì)將票投給服務(wù)器3,此時(shí)投票數(shù)正好大于半數(shù)(3>5/2),所以服務(wù)器3成為領(lǐng)導(dǎo)者狀態(tài),服務(wù)器1、2成為追隨者狀態(tài)。
步驟4:服務(wù)器4啟動(dòng),首先,給自己投票;其次,與之前啟動(dòng)的服務(wù)器1、2、3交換信息,盡管服務(wù)器4的編號(hào)大,但是服務(wù)器3已經(jīng)勝出。所以服務(wù)器4只能成為追隨者狀態(tài)。
步驟5:服務(wù)器5啟動(dòng),同服務(wù)器4一樣,均成為追隨者狀態(tài)。
2.非全新集群選舉
對(duì)于正常運(yùn)行的Zookeeper集群,一旦中途有服務(wù)器宕機(jī),則需要重新選舉時(shí),選舉的過(guò)程中就需要引入服務(wù)器ID、數(shù)據(jù)ID和邏輯時(shí)鐘。這是由于Zookeeper集群已經(jīng)運(yùn)行過(guò)一段時(shí)間,那么服務(wù)器中就會(huì)存在運(yùn)行的數(shù)據(jù)。下面來(lái)講解非全新集群選舉的過(guò)程。
步驟1:首先,統(tǒng)計(jì)邏輯時(shí)鐘是否相同,邏輯時(shí)鐘小,則說(shuō)明途中可能存在宕機(jī)問(wèn)題,因此數(shù)據(jù)不完整,那么該選舉結(jié)果被忽略,重新投票選舉;
步驟2:其次,統(tǒng)一邏輯時(shí)鐘后,對(duì)比數(shù)據(jù)ID值,數(shù)據(jù)ID反應(yīng)數(shù)據(jù)的新舊程度,因此數(shù)據(jù)ID大的勝出;
步驟3:如果邏輯時(shí)鐘和數(shù)據(jù)ID都相同的情況下,那么比較服務(wù)器ID(編號(hào)),值大則勝出;
簡(jiǎn)單的講,非全新集群選舉時(shí)是優(yōu)中選優(yōu),保證Leader是Zookeeper集群中數(shù)據(jù)最完整、最可靠的一臺(tái)服務(wù)器。
猜你喜歡:
Zookeeper的Leader選舉涉及哪些知識(shí)點(diǎn)?
Shell教程:通過(guò)Shell命令操作Zookeeper
Zookeeper數(shù)據(jù)發(fā)布與訂閱主要應(yīng)用場(chǎng)景有哪些?
Hadoop集群教程:Hadoop經(jīng)典單詞統(tǒng)計(jì)案例
2021-08-06MySQL表數(shù)據(jù)導(dǎo)入到Hive文件【圖文詳解】
2021-08-06Pandas算術(shù)運(yùn)算和數(shù)據(jù)對(duì)齊【Pandas索引操作演示】
2021-07-30Jupyter Notebook功能和操作界面介紹
2021-07-30數(shù)據(jù)倉(cāng)庫(kù)的標(biāo)準(zhǔn)分層
2021-07-28數(shù)據(jù)倉(cāng)庫(kù)一般分為幾層?數(shù)據(jù)倉(cāng)庫(kù)實(shí)際分層介紹
2021-07-28北京校區(qū)