您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Raft共識算法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習“Raft共識算法是什么”吧!
Raft算法主要應(yīng)用于分布式集群系統(tǒng)中,如果保證高可用和數(shù)據(jù)一致性,它主要定義兩方面的規(guī)范:選主(Leader Election)和復(fù)制日志(Log Replication)
Raft定義了集群節(jié)點三個狀態(tài):Leader(主)、Follower (從)、Candidate(候選)
主:負責與對接外部輸入 ,并保持與從的心跳
從:備份數(shù)據(jù)、主掛了的時候要挑起重擔
候選:當從timeout時間內(nèi)(150ms 到 300ms,每個節(jié)點不一樣)沒有收到主的心跳,轉(zhuǎn)為此狀態(tài)
從以下幾種情形中分析選主是如何運作的
開始所有節(jié)點都是Follower狀態(tài),當其中一個節(jié)點在timeout過后,就會轉(zhuǎn)變成Candidate并向其它節(jié)點發(fā)送投票請求,并開始新的timeout。
超過半數(shù)Follower節(jié)點收到請求并回復(fù)確認后,Candidate節(jié)點就會轉(zhuǎn)變成Leader節(jié)點,并向Follower節(jié)點發(fā)送心跳
當有多個Candidate時,會向其余節(jié)點發(fā)送選舉請求,Candidate節(jié)點會拒絕其它節(jié)點的請求,F(xiàn)ollower節(jié)點接收到其中一個Candidate節(jié)點請求后,會拒絕同一選舉輪回的其它請求,如果此時其中一個節(jié)點獲得半數(shù)節(jié)點同意,自動成為Leader,如果兩個Candidate節(jié)點沒有分出勝負后,當timeout節(jié)點會發(fā)起第二輪選舉請求,此時就看誰先timeout結(jié)束并獲得半數(shù)節(jié)點同意,就成為Leader
數(shù)據(jù)復(fù)制主要是為了保證數(shù)據(jù)的可靠和一致性,當數(shù)據(jù)變更時,Leader將數(shù)據(jù)同步給Follower
從以下幾種場景如何執(zhí)行數(shù)據(jù)復(fù)制
大致可以分為8個步驟
外部向Leader發(fā)布數(shù)據(jù),
1.Leader將數(shù)據(jù)保存,狀態(tài)為uncommit
2.Leader將數(shù)據(jù)通過appendEntries發(fā)送給Follower
3.Follower將數(shù)據(jù)保存,狀態(tài)為uncommit
4.Follower返回確認給Leader
5.Leader收到半數(shù)以上Follower的確認后,將數(shù)據(jù)狀態(tài)更改為commit
6.Leader返回確認
7.Leader再次通過appendEntries將數(shù)據(jù)發(fā)送給Follower
8.Follower將數(shù)據(jù)狀態(tài)更改為commit
也就是在部分節(jié)點網(wǎng)絡(luò)問題沒法通信情況下
沒有Leader的一方,通過選舉得到leader,此Leader的選舉輪次+1
此時就出現(xiàn)了兩個Leader可以對外提供服務(wù)
如果此時有外部數(shù)據(jù)進來,分別傳給了L1和L2,未超過半數(shù)的一方因為得到確認的數(shù)量也未達到半數(shù),所以數(shù)據(jù)都是uncommit狀態(tài),返回也是失敗
而超過半數(shù)的一方數(shù)據(jù)為commit
此時如果網(wǎng)絡(luò)恢復(fù)了,通過選舉規(guī)則,輪次高的Leader一方為繼續(xù)為Leader,另一方降級為Follower
此時uncommite的數(shù)據(jù)將被刪除,未同步的數(shù)據(jù)將會被補充
到此,相信大家對“Raft共識算法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。