99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

一看就懂,一學(xué)就會的Raft解析!

0
分享至

說明:本文節(jié)選自清華大學(xué)出版社出版的《深入理解分布式共識算法》,略有修改。

粉絲福利,京東5折購買鏈接:https://item.jd.com/13677957.html,2023年4月5日前有效。點擊原文立即參與

全文導(dǎo)讀

Raft是一個強Leader的算法,我們可以根據(jù)Leader的狀態(tài)來劃分Raft的執(zhí)行階段。本文從以下三個方面行文。

  • Leader選舉,集群中沒有Leader,該階段將選舉出日志最完整的成員晉升為Leader

  • 日志復(fù)制,集群正常運行,在該階段處理事務(wù)請求

  • 日志對齊,使得集群中所有成員的數(shù)據(jù)保持一致

Leader選舉

存在A、B、C三個成員組成的Raft集群,剛啟動時,每個成員都處于Follower狀態(tài),其中,成員A心跳超時為110ms,成員B心跳超時為150ms,成員C心跳超時為130ms,其他相關(guān)信息如圖1所示。


圖1 Raft模擬初始狀態(tài)

由于集群中不存在Leader,A、B、C三個成員都不會收到來自Leader的心跳信息。其中,成員A的超時最短,最先進入選舉狀態(tài),修改自己的狀態(tài)為Candidate,并增加自己的任期編號為1,發(fā)起請求投票消息,如圖2所示。


圖2 請求投票

成員A通過RequestVote廣播自己的選票給成員B、C,選票描述了成員A所擁有的數(shù)據(jù),其包含成員A所處的term及最新的日志索引。成員B、C根據(jù)投票規(guī)則處理RequestVote消息。

  • term大的成員拒絕投票給term小的成員。

  • 日志索引大的成員拒絕投票給日志索引小的成員。

  • 一個term內(nèi)只投出一張選票,采用先來先獲得投票的原則。

很明顯,成員B、C的term小于成員A的term,也不存在比成員A日志索引更大的日志索引,并且term為1的選票還沒有投給其他成員,因此成員B、C將term為1的選票投給成員A并更新自己的term為1。

成員A獲得包括自己在內(nèi)的3張選票,贏得大多數(shù)選票,成員A晉升為Leader,并向其他成員發(fā)送心跳信息,維護自己的領(lǐng)導(dǎo)地位,如圖3所示。


圖3 Leader晉升示意

如果成員A在等待投票超過約定的時間內(nèi)沒有收到多數(shù)派的選票,則會重置自己的超時,并結(jié)束本次選舉進程。接著會有其他成員在等待心跳超時后發(fā)起Leader選舉,在當前案例中,發(fā)起Leader選舉的順序為A→C→B。

可能因為網(wǎng)絡(luò)問題,使集群中的所有成員又發(fā)起了一輪選舉,但是都沒有獲得多數(shù)派的選票,因此會隨機產(chǎn)生新的超時,開始下一個循環(huán)的選舉。

日志復(fù)制

在之前的文章中提過,日志復(fù)制是一個一階段協(xié)商的過程,其中,日志項的提交操作由下一輪協(xié)商或者心跳消息來代替完成。因此處理事務(wù)請求,Raft只需要發(fā)送一輪AppendEntries消息即可。

AppendEntries消息除了會包含需要復(fù)制日志項的相關(guān)信息外,通常會攜帶Leader的committedIndex參數(shù),標示著最后一個已提交的日志索引。每個Follower的本地都維護了committedIndex,F(xiàn)ollower可以對比Leader的committedIndex來推進自己的提交操作。

接著如圖3所示的示例,一個三個成員組成的集群,成員A為Leader,成員B和C為Follower,并且在集群中未提交任何日志項。Leader收到客戶端發(fā)送的Add請求后,Leader和Follower依次執(zhí)行以下步驟,如圖4所示。


圖4 日志復(fù)制-復(fù)制

(1)Leader將其封裝成日志項追加到本地的日志中,日志索引為1。

(2)Leader通過AppendEntries(0, <1, Add>)消息時將日志項廣播給所有的Follower。其中:

  • 第一個參數(shù)為committedIndex,即Leader最后提交的日志索引。

  • 第二個參數(shù)為Leader所處的日志索引,即Add日志項的索引。

  • 第三個參數(shù)為事務(wù)操作指令,即客戶端的指令。

(3)Follower收到消息,將日志項追加到本地的日志中。

此時,成員A、B、C都擁有日志項Add且都已在索引為1上完成了持久化。Follower在處理完AppendEntries消息后需要回復(fù)ACK消息給Leader,代表接受該日志項。Leader收到多數(shù)派的ACK消息后,可以在本地提交該日志項并執(zhí)行狀態(tài)轉(zhuǎn)移,之后將執(zhí)行結(jié)果返回給客戶端,如圖5所示。


圖5 日志復(fù)制-回復(fù)

在當前場景中,成員A提交了索引為1的日志項,成員B、C僅僅擁有索引為1的日志項的所有信息但并未提交。成員B、C需要等待下一次AppendEntries消息,根據(jù)其committedIndex推進索引為1的日志項的提交操作。以心跳的AppendEntries消息為例,該AppendEntries消息僅攜帶了committedIndex,此時Leader已經(jīng)提交了索引為1的日志項,因此committedIndex為1。Follower則可以提交索引為1及其之前的所有日志項,如圖6所示。


圖6 日志復(fù)制-心跳

日志對齊

我們使用> 表示一個日志項,如表1所示為Follower E的日志索引3和Follower D的日志索引4,與當前Leader處理不一致的情況。出現(xiàn)這種情況可能是Follower E和Follower D曾經(jīng)當選過Leader,并且在自己的term上提出了日志索引為3和4的日志項后立即宕機造成的。

表1 日志對齊

Log Index

1

2

3

4

5

6

Leader A

<1, 1>

<1, 2>

<2, 3>

<3, 4>

<3, 5>

<3, 6>

Follower B

<1, 1>

<1, 2>

<2, 3>

<3, 4>

<3, 5>

Follower C

<1, 1>

<1, 2>

<2, 3>

<3, 4>

<3, 5>

Follower D

<1, 1>

<1, 2>

<2, 3>

<2, 4>

Follower E

<1, 1>

<1, 2>

<1, 3>

要使Follower E和Follower D與Leader數(shù)據(jù)保持一致,大致步驟分為兩步:尋找nextIndex,復(fù)制nextIndex及其之后的日志項。在Raft中,這個步驟均可由AppendEntries消息來完成。這里以Follower E成員為例,交互細節(jié)如下:

(1)Leader為Follower E初始化nextIndex,nextIndex=lastLogIndex+1,即nextIndex=6+1=7。

(2)Leader通過AppendEntries發(fā)送探測消息,攜帶preLogIndex(nextIndex-1)及preLogTerm,其中,preLogIndex=6,preLogTerm=3。

(3)Follower收到探測消息,對比索引為6的日志項,返回失敗的響應(yīng)給Leader并攜帶lastLogIndex=3。

(4)Leader收到失敗的響應(yīng),更新nextIndex=lastLogIndexmsg+1,即nextIndex=4。

(5)Leader發(fā)送下一輪的探測消息,其中,preLogIndex=3,preLogTerm=2。

(6)Follower收到探測消息,對比索引為3的日志項,返回失敗的響應(yīng)給Leader并攜帶lastLogIndex=3。

(7)Leader收到失敗的響應(yīng),此時lastLogIndexmsg+1 ≤ nextIndex,則nextIndex單調(diào)遞減為3。

(8)Leader發(fā)送下一輪的探測消息,其中,preLogIndex=2,preLogTerm=1。

(9)Follower收到探測消息,對比索引為2的日志項,返回探測成功的響應(yīng)給Leader。

(10)Leader在成功探測到nextIndex之后,通過AppendEntries消息從nextIndex開始發(fā)送索引為3的日志項給Follower。

(11)Follower將以Leader的數(shù)據(jù)為準,覆蓋本地的日志項并返回處理成功的響應(yīng)給Leader。

(12)Leader收到成功響應(yīng)后,單調(diào)遞增nextIndex,繼續(xù)發(fā)送下一個日志項。直到nextIndex等于Leader的lastLogIndex,意味著該Follower擁有Leader所有的數(shù)據(jù),本次日志對齊即完成。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點推薦
留學(xué)圈的話到底有多炸裂?網(wǎng)友:在日本生活5年,我陪她墮了3次胎

留學(xué)圈的話到底有多炸裂?網(wǎng)友:在日本生活5年,我陪她墮了3次胎

解讀熱點事件
2025-07-23 00:10:03
易中天:不殺,留著終是個危險

易中天:不殺,留著終是個危險

尚曦讀史
2025-07-23 01:45:02
特朗普這話一出,菲律賓總統(tǒng)臉色變了....

特朗普這話一出,菲律賓總統(tǒng)臉色變了....

環(huán)球時報新聞
2025-07-23 11:38:05
曝山東男籃簽下奧拉迪波,邱彪這是在干啥?難怪楊鳴出言不遜

曝山東男籃簽下奧拉迪波,邱彪這是在干啥?難怪楊鳴出言不遜

姜大叔侃球
2025-07-23 16:14:29
2025年高考分數(shù)線猛跌的4所211大學(xué),400多分成功撿漏,實屬罕見

2025年高考分數(shù)線猛跌的4所211大學(xué),400多分成功撿漏,實屬罕見

教育導(dǎo)向分享
2025-07-22 19:25:20
我是正師級軍官,參加同學(xué)聚會被初戀嘲笑,第二年我轉(zhuǎn)業(yè)任副市長

我是正師級軍官,參加同學(xué)聚會被初戀嘲笑,第二年我轉(zhuǎn)業(yè)任副市長

喬生桂
2025-07-22 17:09:49
涼爽倒計時!湖北連發(fā)38條預(yù)警,即將重回40℃!

涼爽倒計時!湖北連發(fā)38條預(yù)警,即將重回40℃!

極目新聞
2025-07-23 12:31:27
首次,2名中國大陸出身的華人當選為日本參議院議員

首次,2名中國大陸出身的華人當選為日本參議院議員

徐靜波靜說日本
2025-07-23 07:24:02
梁朝偉和湯唯在《色戒》里“假戲真做”?網(wǎng)友爆出截圖:一目了然

梁朝偉和湯唯在《色戒》里“假戲真做”?網(wǎng)友爆出截圖:一目了然

姜糖先生
2025-06-08 19:31:00
央視曝光!你以為沒壞實際早已“細菌爆表”的5種食物,趕緊扔了

央視曝光!你以為沒壞實際早已“細菌爆表”的5種食物,趕緊扔了

阿傖說事
2025-07-22 08:00:09
二手房拋售狂潮席卷全國:我們制造史詩級變革?將會有什么結(jié)果

二手房拋售狂潮席卷全國:我們制造史詩級變革?將會有什么結(jié)果

小白鴿財經(jīng)
2025-07-21 08:36:15
“絕經(jīng)和出道同時來?”上海街頭驚現(xiàn)她的巨幅海報!網(wǎng)友:笑著笑著就哭了

“絕經(jīng)和出道同時來?”上海街頭驚現(xiàn)她的巨幅海報!網(wǎng)友:笑著笑著就哭了

環(huán)球網(wǎng)資訊
2025-07-23 10:48:19
免費領(lǐng)雞蛋,騙244億養(yǎng)老錢!中國老年人“第一大忽悠”終于倒了

免費領(lǐng)雞蛋,騙244億養(yǎng)老錢!中國老年人“第一大忽悠”終于倒了

新語愛八卦
2025-07-22 17:59:09
5年7500萬!曝比亞迪已暫停贊助國足:因大量球迷抵制國足贊助商

5年7500萬!曝比亞迪已暫停贊助國足:因大量球迷抵制國足贊助商

風(fēng)過鄉(xiāng)
2025-07-22 20:57:26
實錘?網(wǎng)傳杜建英有丈夫,還有一個36歲大兒子,宗慶后竟然是三哥

實錘?網(wǎng)傳杜建英有丈夫,還有一個36歲大兒子,宗慶后竟然是三哥

壹月情感
2025-07-20 22:06:40
NBA歷史僅10人能在出戰(zhàn)400+場比賽保持70+%勝率 小卡是現(xiàn)役唯一

NBA歷史僅10人能在出戰(zhàn)400+場比賽保持70+%勝率 小卡是現(xiàn)役唯一

直播吧
2025-07-23 19:09:16
宗馥莉叔叔宗澤后接受巴倫中文網(wǎng)獨家采訪,又爆出猛料,令人深思

宗馥莉叔叔宗澤后接受巴倫中文網(wǎng)獨家采訪,又爆出猛料,令人深思

悠閑歷史
2025-07-23 15:55:02
北京化工大學(xué)碳纖維錄取通知書能切西瓜,學(xué)校招生辦:本科生專屬,明年不再沿用

北京化工大學(xué)碳纖維錄取通知書能切西瓜,學(xué)校招生辦:本科生專屬,明年不再沿用

極目新聞
2025-07-23 13:36:32
宮魯鳴或卸任,女籃新帥或敲定,62歲,名宿,或成李夢回歸關(guān)鍵

宮魯鳴或卸任,女籃新帥或敲定,62歲,名宿,或成李夢回歸關(guān)鍵

東球弟
2025-07-23 11:10:02
央視曝光!又一灰色產(chǎn)業(yè)鏈暴雷!0成本套現(xiàn)48萬,還不用還?

央視曝光!又一灰色產(chǎn)業(yè)鏈暴雷!0成本套現(xiàn)48萬,還不用還?

大魚簡科
2025-07-23 16:17:38
2025-07-23 20:08:49
Meta
Meta
關(guān)注java進階架構(gòu)師送架構(gòu)
1059文章數(shù) 9856關(guān)注度
往期回顧 全部

科技要聞

別自嗨了!XREAL徐馳:AI眼鏡只有5歲智商

頭條要聞

印度、孟加拉關(guān)切雅魯藏布江下游水電站工程 中方回應(yīng)

頭條要聞

印度、孟加拉關(guān)切雅魯藏布江下游水電站工程 中方回應(yīng)

體育要聞

英格蘭最紅球星 也是加勒比島國驕傲

娛樂要聞

汪峰森林北同游日本 各帶各娃互不耽誤

財經(jīng)要聞

律師解析娃哈哈遺產(chǎn)案:遺囑是最大變數(shù)

汽車要聞

德系大招放盡 場地極限測試全新奧迪A5L

態(tài)度原創(chuàng)

房產(chǎn)
藝術(shù)
教育
健康
數(shù)碼

房產(chǎn)要聞

海南自由貿(mào)易港全島封關(guān),2025年12月18日正式啟動!

藝術(shù)要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

教育要聞

2025年天津高考提前批投檔線分析:中國民航大學(xué)訂單班受熱捧

呼吸科專家破解呼吸道九大謠言!

數(shù)碼要聞

全漢帶來 VIC GD 系列電源:僅擁有 3 年質(zhì)保的金牌非模組 ATX

無障礙瀏覽 進入關(guān)懷版 主站蜘蛛池模板: 平阴县| 忻城县| 九江县| 乐陵市| 灵山县| 公主岭市| 巩义市| 武冈市| 镇沅| 泰和县| 黄梅县| 嘉善县| 富源县| 读书| 巨鹿县| 剑河县| 保山市| 府谷县| 佛教| 前郭尔| 二连浩特市| 沙湾县| 五峰| 安西县| 铜川市| 青海省| 雅安市| 德钦县| 科技| 资中县| 新蔡县| 龙南县| 晋江市| 永安市| 北安市| 本溪市| 合水县| 越西县| 乐平市| 宣武区| 大新县|