什么是拜占庭將軍問(wèn)題籍琳?

在很久很久以前菲宴,拜占庭是東羅馬帝國(guó)的首都。那個(gè)時(shí)候羅馬帝國(guó)國(guó)土遼闊趋急,為了防御目的喝峦,因此每個(gè)軍隊(duì)都分隔很遠(yuǎn),將軍與將軍之間只能靠信使傳遞消息宣谈。

在打仗的時(shí)候愈犹,拜占庭軍隊(duì)內(nèi)所有將軍必需達(dá)成一致的共識(shí)键科,才能更好地贏得勝利闻丑。但是漩怎,在軍隊(duì)內(nèi)有可能存有叛徒,擾亂將軍們的決定嗦嗡。

這時(shí)候勋锤,在已知有成員不可靠的情況下,其余忠誠(chéng)的將軍需要在不受叛徒或間諜的影響下達(dá)成一致的協(xié)議侥祭。

萊斯利·蘭伯特(?Leslie Lamport?)通過(guò)這個(gè)比喻叁执,表達(dá)了計(jì)算機(jī)網(wǎng)絡(luò)中所存在的一致性問(wèn)題。這個(gè)問(wèn)題被稱為拜占庭將軍問(wèn)題矮冬。

如何解決拜占庭將軍問(wèn)題谈宛,目前業(yè)界有很多成熟的解決方案,其中[Raft算法]是比較具有代表性的胎署,又比較好理解的算法吆录。

什么是 Raft 算法?

Raft 算法是一種簡(jiǎn)單易懂的共識(shí)算法琼牧。它依靠狀態(tài)機(jī)??主從同步的方式恢筝,在各個(gè)節(jié)點(diǎn)之間實(shí)現(xiàn)數(shù)據(jù)的一致性。

在學(xué)習(xí)Raft算法的時(shí)候巨坊,大家需要了解Raft的兩個(gè)核心要點(diǎn):

1.選取主節(jié)點(diǎn)

2.同步數(shù)據(jù)

不難理解撬槽,使用主從同步的方式,可以讓集群各個(gè)節(jié)點(diǎn)的數(shù)據(jù)更新以主節(jié)點(diǎn)為準(zhǔn)趾撵,從而保證了一致性侄柔。那么,如何選取主節(jié)點(diǎn)呢占调?

Raft算法在選擇主節(jié)點(diǎn)的過(guò)程中勋拟,也是通過(guò)多個(gè)節(jié)點(diǎn)之間的投票競(jìng)爭(zhēng)

說(shuō)到這里妈候,不得不說(shuō)一下Raft算法的狀態(tài)機(jī)敢靡。Raft算法為節(jié)點(diǎn)定義了三種角色:

1.Leader(主節(jié)點(diǎn))

2.Follower(從節(jié)點(diǎn))

3.Candidate(參與投票競(jìng)爭(zhēng)的節(jié)點(diǎn))

讓我們來(lái)看一看選主的具體流程:

第一步,在最初苦银,還沒(méi)有一個(gè)主節(jié)點(diǎn)的時(shí)候啸胧,所有節(jié)點(diǎn)的身份都是Follower。每一個(gè)節(jié)點(diǎn)都有自己的計(jì)時(shí)器幔虏,當(dāng)計(jì)時(shí)達(dá)到了超時(shí)時(shí)間(Election Timeout)纺念,該節(jié)點(diǎn)會(huì)轉(zhuǎn)變?yōu)镃andidate。

第二步想括,成為Candidate的節(jié)點(diǎn)陷谱,會(huì)首先給自己投票,然后向集群中其他所有的節(jié)點(diǎn)發(fā)起請(qǐng)求,要求大家都給自己投票烟逊。


第三步渣窜,其他收到投票請(qǐng)求且還未投票的Follower節(jié)點(diǎn)會(huì)向發(fā)起者投票,發(fā)起者收到反饋通知后宪躯,票數(shù)增加乔宿。


第四步,當(dāng)?shù)闷睌?shù)超過(guò)了集群節(jié)點(diǎn)數(shù)量的一半访雪,該節(jié)點(diǎn)晉升為L(zhǎng)eader節(jié)點(diǎn)详瑞。Leader節(jié)點(diǎn)會(huì)立刻向其他節(jié)點(diǎn)發(fā)出通知,告訴大家自己才是老大臣缀。收到通知的節(jié)點(diǎn)全部變?yōu)镕ollower坝橡,并且各自的計(jì)時(shí)器清零。


這里需要說(shuō)明一點(diǎn)精置,每個(gè)節(jié)點(diǎn)的超時(shí)時(shí)間都是不一樣的驳庭。比如A節(jié)點(diǎn)的超時(shí)時(shí)間是3秒,B節(jié)點(diǎn)的超時(shí)時(shí)間是5秒氯窍,C節(jié)點(diǎn)的超時(shí)時(shí)間是4秒饲常。這樣一來(lái),A節(jié)點(diǎn)將會(huì)最先發(fā)起投票請(qǐng)求狼讨,而不是所有節(jié)點(diǎn)同時(shí)發(fā)起贝淤。

為什么這樣設(shè)計(jì)呢?設(shè)想如果所有節(jié)點(diǎn)同時(shí)發(fā)起投票政供,必然會(huì)導(dǎo)致大家的票數(shù)差不多播聪,形成僵局,誰(shuí)也當(dāng)不成老大布隔。

那么离陶,成為L(zhǎng)eader的節(jié)點(diǎn)是否就坐穩(wěn)了老大的位置呢?并不是衅檀。Leader節(jié)點(diǎn)需要每隔一段時(shí)間向集群其他節(jié)點(diǎn)發(fā)送心跳通知招刨,表明你們的老大還活著。

一旦Leader節(jié)點(diǎn)掛掉哀军,發(fā)不出通知沉眶,那么計(jì)時(shí)達(dá)到了超時(shí)時(shí)間的Follower節(jié)點(diǎn)會(huì)轉(zhuǎn)變?yōu)镃andidate節(jié)點(diǎn),發(fā)起選主投票杉适,周而復(fù)始......

讓我們來(lái)看一看數(shù)據(jù)同步的流程:

第一步谎倔,由客戶端提交數(shù)據(jù)到Leader節(jié)點(diǎn)。

第二步猿推,由Leader節(jié)點(diǎn)把數(shù)據(jù)復(fù)制到集群內(nèi)所有的Follower節(jié)點(diǎn)片习。如果一次復(fù)制失敗,會(huì)不斷進(jìn)行重試。

第三步藕咏,F(xiàn)ollower節(jié)點(diǎn)們接收到復(fù)制的數(shù)據(jù)状知,會(huì)反饋給Leader節(jié)點(diǎn)。

第四步侈离,如果Leader節(jié)點(diǎn)接收到超過(guò)半數(shù)的Follower反饋,表明復(fù)制成功筝蚕。于是提交自己的數(shù)據(jù)卦碾,并通知客戶端數(shù)據(jù)提交成功。

第五步起宽,由Leader節(jié)點(diǎn)通知集群內(nèi)所有的Follower節(jié)點(diǎn)提交數(shù)據(jù)洲胖,從而完成數(shù)據(jù)同步流程。

共識(shí)算法的應(yīng)用場(chǎng)景坯沪?

在用于共享配置和服務(wù)發(fā)現(xiàn)的K-V存儲(chǔ)系統(tǒng)[etcd]中绿映,使用的就是Raft算法來(lái)保證分布式的一致性。

還有其他算法腐晾,如下:

Paxos 算法:

早期的共識(shí)算法叉弦,由拜占庭將軍問(wèn)題的提出者Leslie Lamport?所發(fā)明。谷歌的分布式鎖服務(wù)?Chubby 就是以 Paxos 算法為基礎(chǔ)藻糖。

ZAB 算法:

Zookeeper 所使用的一致性算法淹冰,在流程上和 Raft 算法比較接近。

PBFT 算法:

區(qū)塊鏈技術(shù)所使用的共識(shí)算法之一巨柒,適用于私有鏈的共識(shí)樱拴。

轉(zhuǎn)載:程序員小灰

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洋满,隨后出現(xiàn)的幾起案子晶乔,更是在濱河造成了極大的恐慌,老刑警劉巖牺勾,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件正罢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡驻民,警方通過(guò)查閱死者的電腦和手機(jī)腺怯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)川无,“玉大人呛占,你說(shuō)我怎么就攤上這事∨城鳎” “怎么了晾虑?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帜篇,道長(zhǎng)糙捺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任笙隙,我火速辦了婚禮洪灯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竟痰。我一直安慰自己签钩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布坏快。 她就那樣靜靜地躺著铅檩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莽鸿。 梳的紋絲不亂的頭發(fā)上昧旨,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音祥得,去河邊找鬼兔沃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛级及,可吹牛的內(nèi)容都是我干的粘拾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼创千,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缰雇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起追驴,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤械哟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后殿雪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體暇咆,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年丙曙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爸业。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亏镰,死狀恐怖扯旷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情索抓,我是刑警寧澤钧忽,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布毯炮,位于F島的核電站,受9級(jí)特大地震影響耸黑,放射性物質(zhì)發(fā)生泄漏桃煎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一大刊、第九天 我趴在偏房一處隱蔽的房頂上張望为迈。 院中可真熱鬧,春花似錦缺菌、人聲如沸葫辐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)另患。三九已至纽乱,卻和暖如春蛾绎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸦列。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工租冠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人薯嗤。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓顽爹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親骆姐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镜粤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 可進(jìn)入我的博客查看原文。 Raft 算法是可以用來(lái)替代 Paxos 算法的分布式一致性算法玻褪,而且 raft 算法比...
    Jeffbond閱讀 13,337評(píng)論 4 91
  • from http://www.infoq.com/cn/articles/etcd-interpretation...
    小樹苗苗閱讀 13,948評(píng)論 3 38
  • 沒(méi)有一個(gè)詞更貼切地形容2017肉渴,平穩(wěn)。沒(méi)有什么拿得出手的成績(jī)單带射,沒(méi)有轟轟烈烈的感情故事同规,甚至沒(méi)有看幾本書,走過(guò)很多...
    Daisy楊羊閱讀 216評(píng)論 3 0
  • 初以為,不二情書是和北西1類似的套路愛(ài)情電影灿里。 影院燈光亮起关炼,我錯(cuò)了,觀影過(guò)程中匣吊,多次刺激了我的情感神經(jīng)盗扒。 下面說(shuō)...
    迎刃閱讀 2,077評(píng)論 6 32
  • 西安手動(dòng)旋轉(zhuǎn)門價(jià)格跪楞,西安手動(dòng)旋轉(zhuǎn)門品牌哪個(gè)好?選擇天卓銅門侣灶,是一家集研發(fā)甸祭,生產(chǎn),銷售褥影,安裝自動(dòng)感應(yīng)門為一體的高新技...
    iinvcdfg閱讀 249評(píng)論 0 0