真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

分布式理論之分布式選舉-創(chuàng)新互聯(lián)

寫(xiě)在前面

一個(gè)國(guó)家需要領(lǐng)導(dǎo)人制定各種國(guó)家決策,一個(gè)軍隊(duì)也需要最高統(tǒng)領(lǐng)來(lái)制定各種軍事決策,同理,一個(gè)分布式集群也需要一個(gè)領(lǐng)導(dǎo),來(lái)協(xié)調(diào)整個(gè)集群的事務(wù),比如保證數(shù)據(jù)一致性(這也是最重要的!),分布式集群的領(lǐng)導(dǎo),我們一般稱之為主節(jié)點(diǎn),這個(gè)主節(jié)點(diǎn)選擇的過(guò)程我們就叫做分布式選舉,而分布式選舉可以有各種不同的方案,這些不同的方案叫做分布式選舉算法,本文就是來(lái)一起來(lái)學(xué)習(xí)常見(jiàn)的分布式選角算法都有哪些,接下來(lái)我們就一起看下吧!

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、通遼網(wǎng)絡(luò)推廣、微信小程序開(kāi)發(fā)、通遼網(wǎng)絡(luò)營(yíng)銷、通遼企業(yè)策劃、通遼品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供通遼建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com1:分布式選舉算法都有哪些

常見(jiàn)的算法有bully,raft,zab,分別來(lái)看下。

2:分布式選舉算法 2.1:bully

英文[?b?li] 恐嚇,傷害,盛氣凌人 school bully校園暴力,該算法比較簡(jiǎn)單粗暴,直接選擇id大的一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn)。

  • 角色
    普通節(jié)點(diǎn),主節(jié)點(diǎn)。
  • 消息類型
Election消息:發(fā)起選舉
Alive消息:告知自己擁有更大id的消息
Victory消息:自己成為主。告知其它節(jié)點(diǎn)的消息
  • 選舉過(guò)程
    該算法要求知道所有其它節(jié)點(diǎn)的id,用來(lái)比較大小,當(dāng)收到其它節(jié)點(diǎn)的消息后就能獲取其id(為什么不是在消息中攜帶自己的id?),則過(guò)程如下:
1:如果是節(jié)點(diǎn)判斷自己當(dāng)前擁有大的id,則直接向其它節(jié)點(diǎn)發(fā)送Victory消息,宣布自己成為主節(jié)點(diǎn)
2:如果是當(dāng)前節(jié)點(diǎn)判斷自己并非擁有大id,則向其它節(jié)點(diǎn)發(fā)送Election消息,發(fā)起選舉過(guò)程,如果是指定的時(shí)間內(nèi)都沒(méi)有收到Alive消息回復(fù),則宣布自己成為主節(jié)點(diǎn),并再次向其它節(jié)點(diǎn)發(fā)送Victory消息,如果是在指定的時(shí)間內(nèi)收到了大于等于1個(gè)的Alive消息,則等待接收其它節(jié)點(diǎn)發(fā)送的Victory消息

如下是一個(gè)可能的選舉過(guò)程節(jié)點(diǎn)2發(fā)起選舉最終節(jié)點(diǎn)3成為主節(jié)點(diǎn)

節(jié)點(diǎn)2發(fā)起選舉最終節(jié)點(diǎn)3成為主節(jié)點(diǎn)
選主完成后,正常就不會(huì)重新選主了,除非主節(jié)點(diǎn)故障,或者是主節(jié)點(diǎn)與其它節(jié)點(diǎn)失去聯(lián)系。

  • 優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

算法本身簡(jiǎn)單,容易實(shí)現(xiàn),選舉速度快

缺點(diǎn):

1:每個(gè)節(jié)點(diǎn)都要存儲(chǔ)其它節(jié)點(diǎn)的id等信息,占用額外存儲(chǔ)空間
2:如果是有id更大的節(jié)點(diǎn)加入集群,或者是id更大的節(jié)點(diǎn)故障后重新加入集群,都會(huì)導(dǎo)致重新選主,如果是頻繁發(fā)生,則會(huì)頻繁出現(xiàn)重新選主,影響集群的穩(wěn)定性

因此該算法適合節(jié)點(diǎn)較少的集群,較大集群首先每個(gè)節(jié)點(diǎn)都要存儲(chǔ)大量的信息,其次,當(dāng)節(jié)點(diǎn)增多時(shí),部分節(jié)點(diǎn)出現(xiàn)故障的概率也會(huì)增大,導(dǎo)致頻繁重新選主。

2.2:raft

英文[r?ft] 木排;橡皮艇,這是一種少數(shù)服從多數(shù)的算法。

  • 角色
leader:主節(jié)點(diǎn),負(fù)責(zé)管理和協(xié)調(diào)其它節(jié)點(diǎn)
candidate:候選節(jié)點(diǎn),只有處于該角色的節(jié)點(diǎn)才有資格成為leader
follower:leader的跟隨者,當(dāng)選出leader后,其它節(jié)點(diǎn)都是該角色
  • 選主過(guò)程

注意:

1:每個(gè)節(jié)點(diǎn)只能投一票。

2:投票原則是時(shí)間優(yōu)先,即如果是某節(jié)點(diǎn)收到投票申請(qǐng),如果是還沒(méi)有進(jìn)行過(guò)投票,則直接投票,后續(xù)在收到投票申請(qǐng),因?yàn)橐呀?jīng)投過(guò)票,就不能再次投票了。

集群初始化完成后,每個(gè)節(jié)點(diǎn)的狀態(tài)都是follower,如下:

在這里插入圖片描述

在經(jīng)過(guò)時(shí)間范圍在150ms到300ms的Election timeout后,會(huì)轉(zhuǎn)換狀態(tài)follower->candidate,如下圖其中一個(gè)節(jié)點(diǎn)首先到達(dá)Election timeout,變?yōu)閏andidate狀態(tài),如下圖:

在這里插入圖片描述

如圖節(jié)點(diǎn)A,率先變?yōu)閏andidate狀態(tài),其term即任期從0變?yōu)?,然后先給自己投一票,所以Vote Count變?yōu)?。然后其會(huì)向NodeB,Node C,發(fā)送投票申請(qǐng),如下圖:

在這里插入圖片描述

Node B,Node C,收到Node A的投票請(qǐng)求后,發(fā)現(xiàn)自己的term小于當(dāng)前收到請(qǐng)求term,會(huì)從0更新為1,另外因?yàn)槎歼€未投過(guò)票,所以會(huì)返回同意票,如下圖:

在這里插入圖片描述
此時(shí),Node A的得票數(shù)是3,超過(guò)了集群總節(jié)點(diǎn)數(shù)3的多半,成為新的主節(jié)點(diǎn),其它節(jié)點(diǎn)都成為follower節(jié)點(diǎn),主節(jié)點(diǎn)會(huì)以heartbeat timeout時(shí)間間隔發(fā)送心跳包到所有follower節(jié)點(diǎn),以供follower檢測(cè)主節(jié)點(diǎn)狀態(tài),此時(shí)如下圖:

在這里插入圖片描述

接下來(lái)當(dāng)其中一個(gè)follower變?yōu)閏andidate狀態(tài)時(shí),就代表主節(jié)點(diǎn)任期結(jié)束,此時(shí)轉(zhuǎn)換為candidate狀態(tài)節(jié)點(diǎn),會(huì)發(fā)起重新選舉,如下是發(fā)起投票,和接受投票,如下圖:

在這里插入圖片描述

Node C成為term 2的新主節(jié)點(diǎn)。

接下來(lái)我們看下raft是如何保證數(shù)據(jù)一致性的,如下當(dāng)前主節(jié)點(diǎn)是Node A:

在這里插入圖片描述

假設(shè)此時(shí)客戶端向主節(jié)點(diǎn)發(fā)送了set 5,如下圖:

在這里插入圖片描述

然后主節(jié)點(diǎn)會(huì)將set 5同步給所有的follower,只有當(dāng)主節(jié)點(diǎn)收到大多數(shù)follower數(shù)據(jù)寫(xiě)入確認(rèn)后,才會(huì)提交數(shù)據(jù),返回給客戶端數(shù)據(jù)寫(xiě)入成功,這樣就保證了數(shù)據(jù)的安全性,如下圖:

在這里插入圖片描述
后續(xù)有數(shù)據(jù)更新也是這個(gè)流程。

以上我們可以看到,節(jié)點(diǎn)狀態(tài)在不斷的轉(zhuǎn)換,如下?tīng)顟B(tài)轉(zhuǎn)換圖:

在這里插入圖片描述

  • 優(yōu)缺點(diǎn)
    優(yōu)點(diǎn):
1:選舉速度快,復(fù)雜度低。
2:節(jié)點(diǎn)退出后重新加入,雖然會(huì)觸發(fā)重新選主,但是因?yàn)槌^(guò)半數(shù)投票才能成為主節(jié)點(diǎn),一般一會(huì)導(dǎo)致更換主,所以穩(wěn)定性好

缺點(diǎn):

1:要求所有節(jié)點(diǎn)可通信,因?yàn)槌^(guò)半數(shù)才能選主成功,所以通信量大
2:重新選主產(chǎn)生的主節(jié)點(diǎn)數(shù)據(jù)比較舊,從而導(dǎo)致大量數(shù)據(jù)丟失,即數(shù)據(jù)安全性低
2.3:zab

英文全程zookeeper atomic broadcast,是zookeeper提出的一種帶有優(yōu)先級(jí)的少數(shù)服從多數(shù)選主算法,該算法和raft相比增加了優(yōu)先級(jí),而非簡(jiǎn)單的先到先得選票,這里的優(yōu)先級(jí)主要是數(shù)據(jù)的最新程度。

  • 角色
leader:主節(jié)點(diǎn)
follower:跟隨節(jié)點(diǎn)
observer:觀察者,無(wú)權(quán)投票

節(jié)點(diǎn)可能的狀態(tài)如下:

looking狀態(tài):選舉狀態(tài),無(wú)主節(jié)點(diǎn)時(shí)處于該狀態(tài)
leader狀態(tài):主節(jié)點(diǎn)狀態(tài),代表是主節(jié)點(diǎn),即處于leader角色
follower狀態(tài):跟隨者狀態(tài),選主成功后從looking狀態(tài),變更為該狀態(tài),即處于follower角色
observer狀態(tài):觀察者狀態(tài),即處于observer角色
  • 選主過(guò)程
    因?yàn)橐鶕?jù)優(yōu)先級(jí)來(lái)決定是否投票,因此發(fā)起投票時(shí)增加了三元組(server_id, server_zxID, epoch),含義如下:
server_id:服務(wù)器id
server_zxID:服務(wù)節(jié)點(diǎn)數(shù)據(jù)id,越大說(shuō)明數(shù)據(jù)越新
epoch:選舉輪數(shù)(為了便于理解,該值可先忽略)

對(duì)比過(guò)程是取server_zxID大的投票,相同的則取server_id投票。

初始狀態(tài)時(shí),epoch=1,即第一輪投票,server_zxID=0,因?yàn)榇藭r(shí)還沒(méi)有任何數(shù)據(jù),因此先投自己一票,將投自己的三元組投票發(fā)給其它節(jié)點(diǎn),如下圖:

在這里插入圖片描述

接著server1,server2,都發(fā)現(xiàn)server3按照優(yōu)先級(jí),應(yīng)該投一票,因此將vote_id都改為server3的serverID,即3,然后將其放到投票箱中,并廣播出去,如下:

在這里插入圖片描述

server3成為主節(jié)點(diǎn)后開(kāi)始和follower節(jié)點(diǎn)發(fā)送heartbeat,follower回復(fù)ACK,即開(kāi)始心跳,如下圖:

在這里插入圖片描述

  • 優(yōu)缺點(diǎn)
    優(yōu)點(diǎn):
1:算法穩(wěn)定性好,新節(jié)點(diǎn)加入,故障節(jié)點(diǎn)恢復(fù),不會(huì)造成頻繁選主

缺點(diǎn):

1:需要額外比較server_zxID,server_id,選舉時(shí)間長(zhǎng)
2:廣播方式發(fā)送消息,容易產(chǎn)生廣播風(fēng)暴
2.4:各種算法對(duì)比

參考下圖:

在這里插入圖片描述

在這里插入圖片描述

少數(shù)服從多數(shù)算法為什么要奇數(shù)個(gè)節(jié)點(diǎn)?

偶數(shù)時(shí),容易出現(xiàn),相同個(gè)數(shù)的選票,從而無(wú)法選擇主節(jié)點(diǎn),即便重新選主,出現(xiàn)相同選票的概率也比較大,但奇數(shù)個(gè)節(jié)點(diǎn),更容易出現(xiàn)某個(gè)節(jié)點(diǎn)獲取大多數(shù)選票,從而成為主節(jié)點(diǎn)。

寫(xiě)在后面

參考文章列表:

raft動(dòng)畫(huà)演示 。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)站題目:分布式理論之分布式選舉-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://weahome.cn/article/deposh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部