欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:Zookeeper的選主流程

柚子快報(bào)邀請(qǐng)碼778899分享:Zookeeper的選主流程

http://yzkb.51969.com/

Zookeeper的核心是原子廣播,這個(gè)機(jī)制保證了各個(gè)Server之間的同步。實(shí)現(xiàn)這個(gè)機(jī)制的協(xié)議叫做Zab協(xié)議。Zab協(xié)議有兩種模式,它們分別是恢復(fù)模式(選主)和廣播模式(同步)。當(dāng)服務(wù)啟動(dòng)或者在領(lǐng)導(dǎo)者崩潰后,Zab就進(jìn)入了恢復(fù)模式,當(dāng)領(lǐng)導(dǎo)者被選舉出來(lái),且大多數(shù)Server完成了和leader的狀態(tài)同步以后,恢復(fù)模式就結(jié)束了。狀態(tài)同步保證了leader和Server具有相同的系統(tǒng)狀態(tài)。leader選舉是保證分布式數(shù)據(jù)一致性的關(guān)鍵。

出現(xiàn)選舉主要是兩種場(chǎng)景:初始化、leader不可用。

當(dāng)zk集群中的一臺(tái)服務(wù)器出現(xiàn)以下兩種情況之一時(shí),就會(huì)開(kāi)始leader選舉: 1: 服務(wù)器初始化啟動(dòng)。 2: 服務(wù)器運(yùn)行期間無(wú)法和leader保持連接。

而當(dāng)一臺(tái)機(jī)器進(jìn)入leader選舉流程時(shí),當(dāng)前集群也可能處于以下兩種狀態(tài): 1: 集群中本來(lái)就已經(jīng)存在一個(gè)leader。 2: 集群中確實(shí)不存在leader。

首先第一種情況,通常是集群中某一臺(tái)機(jī)器啟動(dòng)比較晚,在它啟動(dòng)之前,集群已經(jīng)正常工作,即已經(jīng)存在一臺(tái)leader服務(wù)器。當(dāng)該機(jī)器試圖去選舉leader時(shí),會(huì)被告知當(dāng)前服務(wù)器的leader信息,它僅僅需要和leader機(jī)器建立連接,并進(jìn)行狀態(tài)同步即可。

重點(diǎn)是leader不可用了,此時(shí)的選主制度。投票信息中包含兩個(gè)最基本的信息。 sid : 即server id,用來(lái)標(biāo)識(shí)該機(jī)器在集群中的機(jī)器序號(hào)。 zxid : 即zookeeper事務(wù)id號(hào)。

ZooKeeper狀態(tài)的每一次改變, 都對(duì)應(yīng)著一個(gè)遞增的Transaction id,,該id稱為zxid.,由于zxid的遞增性質(zhì), 如果zxid1小于zxid2,,那么zxid1肯定先于zxid2發(fā)生。創(chuàng)建任意節(jié)點(diǎn),或者更新任意節(jié)點(diǎn)的數(shù)據(jù), 或者刪除任意節(jié)點(diǎn),都會(huì)導(dǎo)致Zookeeper狀態(tài)發(fā)生改變,從而導(dǎo)致zxid的值增加。

以(sid,zxid)的形式來(lái)標(biāo)識(shí)一次投票信息。

例如:如果當(dāng)前服務(wù)器要推舉sid為1,zxid為8的服務(wù)器成為leader,那么投票信息可以表示為(1,8)

集群中的每臺(tái)機(jī)器發(fā)出自己的投票后,也會(huì)接受來(lái)自集群中其他機(jī)器的投票。每臺(tái)機(jī)器都會(huì)根據(jù)一定的規(guī)則,來(lái)處理收到的其他機(jī)器的投票,以此來(lái)決定是否需要變更自己的投票。

規(guī)則如下 : 1: 初始階段,都會(huì)給自己投票。 2: 當(dāng)接收到來(lái)自其他服務(wù)器的投票時(shí),都需要將別人的投票和自己的投票進(jìn)行pk,規(guī)則如下: 優(yōu)先檢查zxid。zxid比較大的服務(wù)器優(yōu)先作為leader。如果zxid相同的話,就比較sid,sid比較大的服務(wù)器作為leader。

所有服務(wù)啟動(dòng)時(shí)候的選舉流程: 三臺(tái)服務(wù)器 server1、server2、server3:

server1 啟動(dòng),一臺(tái)機(jī)器不會(huì)選舉。server2 啟動(dòng),server1 和 server2 的狀態(tài)改為 looking,廣播投票server3 啟動(dòng),狀態(tài)改為 looking,加入廣播投票。初識(shí)狀態(tài),互不認(rèn)識(shí),大家都認(rèn)為自己是王者,投票也投自己為 Leader。投票信息說(shuō)明,票信息本來(lái)為五元組,這里為了邏輯清晰,簡(jiǎn)化下表達(dá)。

初識(shí) zxid = 0,sid 是每個(gè)節(jié)點(diǎn)的名字,這個(gè) sid 在 zoo.cfg 中配置,不會(huì)重復(fù)。 1: 初始 zxid=0,server1 投票(1,0),server2 投票(2,0),server3 投票(3,0)

2: server1 收到 投票(2,0)時(shí),會(huì)先驗(yàn)證投票的合法性,然后自己的票進(jìn)行 pk,pk 的邏輯是先比較 zxid,server1(zxid=server2(zxid)=0,zxid 相等再比較 sid,server1(sid)

3: TODO 這里最終是 2 還是 3,需要做實(shí)驗(yàn)確定。

4: server2 收到 server1 投票,會(huì)先驗(yàn)證投票的合法性,然后 pk,自己的票獲勝,server 不用更新自己的票,pk 后,重新在發(fā)送一次投票。

5: 統(tǒng)計(jì)投票,pk 后會(huì)統(tǒng)計(jì)投票,如果半數(shù)以上的節(jié)點(diǎn)投出相同的票,確定選出了 Leader。

6: 選舉結(jié)束,被選中節(jié)點(diǎn)的狀態(tài)由 LOOKING 變成 LEADING,其他參加選舉的節(jié)點(diǎn)由 LOOKING變成 FOLLOWING。如果有 Observer 節(jié)點(diǎn),如果 Observer 不參與選舉,所以選舉前后它的狀態(tài)一直是 OBSERVING,沒(méi)有變化。

簡(jiǎn)單地說(shuō): 開(kāi)始投票 ->節(jié)點(diǎn)狀態(tài)變成 LOOKING -> 每個(gè)節(jié)點(diǎn)選自己-> 收到票進(jìn)行 PK -> sid 大的獲勝 -> 更新選票 -> 再次投票 -> 統(tǒng)計(jì)選票,選票過(guò)半數(shù)選舉結(jié)果 -> 節(jié)點(diǎn)狀態(tài)更新為自己的角色狀態(tài)。

柚子快報(bào)邀請(qǐng)碼778899分享:Zookeeper的選主流程

http://yzkb.51969.com/

參考文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19501259.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄