溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Raft共識算法是什么

發(fā)布時間:2021-11-15 16:55:47 來源:億速云 閱讀:154 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“Raft共識算法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習“Raft共識算法是什么”吧!

Raft算法主要應(yīng)用于分布式集群系統(tǒng)中,如果保證高可用和數(shù)據(jù)一致性,它主要定義兩方面的規(guī)范:選主(Leader Election)和復(fù)制日志(Log Replication)

1.選主機制     

Raft定義了集群節(jié)點三個狀態(tài):Leader(主)、Follower (從)、Candidate(候選)

        主:負責與對接外部輸入 ,并保持與從的心跳

        從:備份數(shù)據(jù)、主掛了的時候要挑起重擔

        候選:當從timeout時間內(nèi)(150ms 到 300ms,每個節(jié)點不一樣)沒有收到主的心跳,轉(zhuǎn)為此狀態(tài)

       從以下幾種情形中分析選主是如何運作的

       a.正常初始情況

              開始所有節(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ā)送心跳

           Raft共識算法是什么    Raft共識算法是什么            Raft共識算法是什么

       c.多個Follower同時轉(zhuǎn)變成Candidate

            當有多個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

           Raft共識算法是什么     Raft共識算法是什么    Raft共識算法是什么

2.復(fù)制日志

    數(shù)據(jù)復(fù)制主要是為了保證數(shù)據(jù)的可靠和一致性,當數(shù)據(jù)變更時,Leader將數(shù)據(jù)同步給Follower

    從以下幾種場景如何執(zhí)行數(shù)據(jù)復(fù)制

    a.正常情況

        大致可以分為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

         Raft共識算法是什么

    b.Network Partition 情況 

        也就是在部分節(jié)點網(wǎng)絡(luò)問題沒法通信情況下

         沒有Leader的一方,通過選舉得到leader,此Leader的選舉輪次+1

       Raft共識算法是什么      Raft共識算法是什么

     此時就出現(xiàn)了兩個Leader可以對外提供服務(wù)

     如果此時有外部數(shù)據(jù)進來,分別傳給了L1和L2,未超過半數(shù)的一方因為得到確認的數(shù)量也未達到半數(shù),所以數(shù)據(jù)都是uncommit狀態(tài),返回也是失敗

     而超過半數(shù)的一方數(shù)據(jù)為commit

    Raft共識算法是什么

    此時如果網(wǎng)絡(luò)恢復(fù)了,通過選舉規(guī)則,輪次高的Leader一方為繼續(xù)為Leader,另一方降級為Follower

    此時uncommite的數(shù)據(jù)將被刪除,未同步的數(shù)據(jù)將會被補充

    Raft共識算法是什么

到此,相信大家對“Raft共識算法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習!

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI