成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解 Raft 共識算法:如何選舉領導者?

開發 前端 算法
Raft 是通過以領導者為準實現各個節點日志一致的一種共識算法,被越來越多的分布式系統框架應用,比如 Etcd、Consul 等等,Seata 未來也會引用 Raft,即將發布的 Kafka 2.8 也引入了 Raft,在 Raft 的基礎上做了一些改版,在 Kafka 2.8 中稱作 KRaft。

[[393927]]

Raft 是通過以領導者為準實現各個節點日志一致的一種共識算法,被越來越多的分布式系統框架應用,比如 Etcd、Consul 等等,Seata 未來也會引用 Raft,即將發布的 Kafka 2.8 也引入了 Raft,在 Raft 的基礎上做了一些改版,在 Kafka 2.8 中稱作 KRaft。

由此看來,Raft 是目前大部分分布式系統的首選共識算法,學習 Raft 將有助于你在分布式領域中如魚得水。

本文主要內容為我對 Raft 選舉領導者的一些理解總結。

成員

按照我的理解,Raft 是一種強領導者模型,即一切以領導者為準,實現一系列的共識和各個節點日志一致性的一種共識算法。

Raft 一共有三種成員身份,分別是:領導者(Leader)、跟隨者(Follower)、候選人(Candidate)。

跟隨者:在 Raft 中只有領導者才會與客戶端交互,因此在不發生選舉時,跟隨者僅默默地處理來自領導者發送的消息,充當數據冗余的作用,當領導者心跳超時,跟隨者就會主動推薦自己當選候選人。

候選人:成為候選人之后,就會向其他節點發送請求投票消息,以獲取其他節點的投票,如果獲得了大多數選票,則當選領導者。

領導者:數據一切以領導者為準,它也是與客戶端交互的唯一角色,處理請求,管理日志的復制,同時還不斷地發送心跳信息給跟隨者,不斷刷新跟隨者節點的超時時間,以防跟隨者發起新的選舉。

選舉過程

下面我以一個剛初始化的 Raft 集群為例:

1、初始狀態

Raft 每個節點初始化后的心跳超時時間都是隨機的,如上所示,節點 C 的超時時間最短(120ms),任期編號都為 0,角色都是跟隨者。

2、請求投票

此時沒有一個節點是領導者,節點等待心跳超時后,會推薦自己為候選人,向集群其他節點發起請求投票信息,此時任期編號 +1,自薦會獲得自己的一票選票。

3、跟隨者投票

跟隨者收到請求投票信息后,如果該候選人符合投票要求后,則將自己寶貴(因為每個任期內跟隨者只能投給先來的候選人一票,后面來的候選人則不能在投票給它了)的一票投給該候選人,同時更新任期編號。

4、當選領導者

當節點 C 贏得大多數選票后,它會成為本次任期的領導者。

5、領導者與跟隨者保持心跳

領導者周期性發送心跳消息給其他節點,告知自己是領導者,同時刷新跟隨者的超時時間,防止跟隨者發起新的領導者選舉。

關于任期

從以上的選舉過程看,我們知道在 Raft 中的選舉中是有任期機制的,顧名思義,每一任領導者,都有它專屬的任期,當領導者更換后,任期也會增加,Raft 中的任期還要注意以下個細節:

如果某個節點,發現自己的任期編號比其他節點小,則會將自己的任期編號更新比自己更大的值;

從上面的選舉過程看出,每次推薦自己成為候選人,都會得到自身的那一票;

如果候選人或者領導者發現自己的任期編號比其它節點好要小,則會立即更新自己為跟隨者,這點很重要,按照我的理解,這個機制能夠解決同一時間內有多個領導者的情況,比如領導者 A 掛了之后,集群其他節點會選舉出一個新的領導者 B,在節點 B 恢復之后,會接收來自新領導者的心跳消息,此時節點 A 會立即恢復成跟隨者狀態;

如果某個節點接收到比自己任期號小的請求,則會拒絕這個請求。

關于隨機超時

跟隨者如果沒有在某個時間內接收到來自領導者的心跳,則會發起新一輪的領導者選舉,試想一下,如果全部跟隨者都在同一時間發起領導者選舉,這是一種怎樣的場景?會不會造成同一時間內造成選舉混亂呢?如果同時發起選舉,會不會因為選票被瓜分導致選舉失敗的原因?

如果你想自己親自調試并觀摩 Raft 選舉過程,你可以訪問以下網址:

https://raft.github.io/

本文轉載自微信公眾號「后端進階」,可以通過以下二維碼關注。轉載本文請聯系后端進階公眾號。

 

責任編輯:武曉燕 來源: 后端進階
相關推薦

2021-05-31 08:01:11

Raft共識算法

2023-04-05 10:00:00

分布式算法

2021-03-04 17:55:27

算法Raft分布式

2023-08-02 13:06:00

IT領導者CIO

2019-06-18 10:02:06

CIO女性IT

2025-06-05 03:22:00

Raft服務器日志

2024-07-12 15:24:07

2024-12-31 10:55:38

2024-01-10 16:21:37

2023-07-11 10:37:51

IT領導者CIO

2021-02-25 13:29:29

遠程工作數字化轉型化疫情

2009-06-17 08:14:01

微軟鮑爾默領導者

2018-04-07 21:49:25

混合云云安全IT領導者

2020-12-10 17:03:52

IvantiGartnerITSM

2020-12-03 19:06:52

戴爾

2022-02-07 14:31:05

安全IT遠程工作

2024-06-21 14:51:35

2023-02-20 10:48:47

CIOIT領導者

2019-12-23 13:51:36

CIOIT領導者開發

2009-09-27 15:38:48

CCIE認證領導者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一区二区激情三区 | 国产女人精品视频 | 日干夜操 | 国产精品免费一区二区三区四区 | 欧美白人做受xxxx视频 | 97超碰在线免费 | 久久久精品综合 | 日韩一级黄色片 | 国产乱人伦 | 欧美电影免费观看高清 | 成人做爰www免费看视频网站 | 国产精品永久免费观看 | 国产精品精品视频一区二区三区 | 欧美v免费 | 日本一二区视频 | 久久精品视频网站 | 伊人一区 | 小h片免费观看久久久久 | 伊人久久综合 | 亚洲精品成人av久久 | 国内精品久久久久 | 精品国产一区二区国模嫣然 | 乱一性一乱一交一视频a∨ 色爱av | 日本精品视频在线 | 久久999| 在线亚洲人成电影网站色www | 九九av | 久在线精品视频 | 国产日韩欧美精品一区二区三区 | 久久久久中文字幕 | 国产综合精品一区二区三区 | 精品少妇一区二区三区日产乱码 | 亚洲精品一区二区网址 | 午夜精品久久久久久久久久久久 | www久| 91亚洲精品在线观看 | 日韩精品在线观看免费 | 亚洲色图第一页 | 日韩在线观看 | 在线观看www视频 | 欧美精品91 |