Raft(1)— 領導選舉

三種節(jié)點

  1. follower
  2. candidate
  3. leader
  • 一般情況下,只有一個leader,其他節(jié)點全是follower燕鸽。
  • leader:處理所有的客戶端請求(如果一個客戶端和follower聯(lián)系闪彼,那follower會把請求重定向給leader)
  • follower:不會發(fā)送任何請求,只是簡單的響應來自leader或者candidate的請求吝秕。
  • candidate: 選舉時期泊脐,來描述選舉新leader

選舉過程

term(任期):有一個follower成為候選人,term+1

image.png

集群中只有follower

follower -> candidate

  • 這里涉及到了一個選舉超時時間烁峭,一個追隨者在成為候選人之前等待的時間容客,每個follower被隨機分配在150ms和300ms之間。

Raft 使用一種心跳機制來觸發(fā)領導人選舉约郁。一個服務器節(jié)點要想繼續(xù)保持著跟隨者狀態(tài)除非他從領導人或者候選者處接收到有效的 RPCs缩挑。

如果一個follower 在一段時間里沒有接收到任何消息,也就是選舉超時鬓梅,然后他就會認為系統(tǒng)中沒有可用的領導者然后開始進行選舉以選出新的領導者供置。

要開始一次選舉過程,跟隨者先要增加自己的當前任期號并且轉換到候選人狀態(tài)绽快,并且給自己投一票芥丧。然后他會并行的向集群中的其他服務器節(jié)點發(fā)送請求投票的 RPCs 來給自己投票紧阔。

如果接收節(jié)點沒有在此期間投票,那么這票也算為candidate投票续担;再發(fā)送選票后擅耽,重置自己的選舉超時時間

Candidate的三種結局

收到大部分選票,成為leader

收到大量同一個任期的選票物遇,保證一個任期號乖仇,最多只會有一個領導人被選舉出來

一旦候選人贏得選舉,他就立即成為領導人询兴。然后他會向其他的服務器發(fā)送心跳消息來建立自己的權威并且阻止新的領導人的產生乃沙。

其他服務器成為了leader

在等待投票的時候,候選人可能會從其他的服務器接收到聲明它是領導人的附加日志項 RPC诗舰。如果這個領導人的任期號(包含在此次的 RPC中)不小于候選人當前的任期號警儒,那么候選人會承認領導人合法并回到跟隨者狀態(tài)。 如果此次 RPC 中的任期號比自己小始衅,那么候選人就會拒絕這次的 RPC 并且繼續(xù)保持候選人狀態(tài)冷蚂。

選票瓜分,既沒有贏也沒有輸

意味著有多個跟隨者同時成為候選人汛闸,而導致無法產生結果蝙茶。

當這種情況發(fā)生的時候,每一個候選人都會超時诸老,然后通過增加當前任期號來開始一輪新的選舉隆夯。

Raft 算法使用隨機選舉超時時間的方法來確保很少會發(fā)生選票瓜分的情況,就算發(fā)生也能很快的解決。為了阻止選票起初就被瓜分,選舉超時時間是從一個固定的區(qū)間(例如 150-300毫秒)隨機選擇赠尾。這樣可以把服務器都分散開以至于在大多數(shù)情況下只有一個服務器會選舉超時;然后他贏得選舉并在其他服務器超時之前發(fā)送心跳包愧口。同樣的機制被用在選票瓜分的情況下。每一個候選人在開始一次選舉的時候會重置一個隨機的選舉超時時間类茂,然后在超時時間內等待投票的結果耍属;這樣減少了在新的選舉中另外的選票瓜分的可能性。

這個選舉任期將持續(xù)到跟隨者停止接受心跳并成為候選人巩检。

leader宕機

其他follower在超時期間厚骗,未收到心跳包,則重新選舉兢哭。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末领舰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冲秽,老刑警劉巖舍咖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锉桑,居然都是意外死亡谎仲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門刨仑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人夹姥,你說我怎么就攤上這事杉武。” “怎么了辙售?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵轻抱,是天一觀的道長。 經常有香客問我旦部,道長祈搜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任士八,我火速辦了婚禮容燕,結果婚禮上,老公的妹妹穿的比我還像新娘婚度。我一直安慰自己蘸秘,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布蝗茁。 她就那樣靜靜地躺著醋虏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪哮翘。 梳的紋絲不亂的頭發(fā)上颈嚼,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音饭寺,去河邊找鬼阻课。 笑死,一個胖子當著我的面吹牛佩研,可吹牛的內容都是我干的柑肴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼旬薯,長吁一口氣:“原來是場噩夢啊……” “哼晰骑!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤硕舆,失蹤者是張志新(化名)和其女友劉穎秽荞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抚官,經...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡扬跋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凌节。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钦听。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖倍奢,靈堂內的尸體忽然破棺而出朴上,到底是詐尸還是另有隱情,我是刑警寧澤卒煞,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布痪宰,位于F島的核電站,受9級特大地震影響畔裕,放射性物質發(fā)生泄漏衣撬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一扮饶、第九天 我趴在偏房一處隱蔽的房頂上張望具练。 院中可真熱鬧,春花似錦贴届、人聲如沸靠粪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽占键。三九已至,卻和暖如春元潘,著一層夾襖步出監(jiān)牢的瞬間畔乙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工翩概, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牲距,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓钥庇,卻偏偏與公主長得像牍鞠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子评姨,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容

  • 可進入我的博客查看原文难述。 Raft 算法是可以用來替代 Paxos 算法的分布式一致性算法,而且 raft 算法比...
    Jeffbond閱讀 13,307評論 4 91
  • 前言 之前在學習MongoDB復制集時發(fā)現(xiàn)網(wǎng)上的很多相關的分享都是針對r3.2.0以前的版本,新版本對選舉機制做了...
    cb9e58ff5a37閱讀 4,693評論 0 5
  • 尋找一種易于理解的一致性算法(擴展版) 摘要 Raft 是一種為了管理復制日志的一致性算法胁后。它提供了和 Paxos...
    yflau閱讀 950評論 0 1
  • 1 整體描述 在Raft被提出來之前店读,Paxos協(xié)議是第一個被證明的一致性算法,但是Paxos的論文非常難懂攀芯,導致...
    船_長閱讀 7,213評論 0 7
  • 2017新年上班的某一天屯断,前臺的小女生給我發(fā)了一封郵件,讓我去取信件,我很好奇是誰給我寄來的侣诺?帶著疑惑殖演,打開一看,...
    簡小培閱讀 175評論 0 0