Raft 論文讀書筆記

Raft
In Search of an Understandable Consensus Algorithm (Extended Version)

1. Introduction

一致性算法。一個機(jī)器集合如何對外提供一致性,并具有容錯性(容忍某些節(jié)點失效).

Raft把一致性分為三個關(guān)鍵元素:leader election, log replication, safety

Raft 關(guān)鍵的特性:

  1. Strong leader
  2. Leader election
  3. Membership changes

2. Replicated state machines

在 replicated state machines 的場景下討論一致性算法售淡。在server集合上的狀態(tài)機(jī)扔仓,在一樣的狀態(tài)上進(jìn)行相同的計算 踏志,并且在少數(shù)server掛掉后,仍能對外提供服務(wù)。用于在分布式系統(tǒng)中提供容錯性。

replicated state machines 一般使用 replicated log來實現(xiàn)庶灿。每個server存儲狀態(tài)機(jī)按照順序執(zhí)行的一系列命令的日志。每個日志都按照相同的順序存儲命令吃衅。一致性算法的職責(zé)就是保持 replicated log 的一致性往踢。

典型的一致性算法具有以下屬性

  • 在所有非拜占庭(non-Byzantine)條件下都是保證安全的,包括:網(wǎng)絡(luò)延遲徘层,分區(qū)峻呕,丟包,重復(fù)趣效,亂序
  • 在大多數(shù)server在運作瘦癌,并可以相互通訊,與客戶端通訊的情況下跷敬,能夠?qū)ν馓峁┓?wù)讯私。
  • 不依賴于時間來保證logs的一致性:因為不一致的時鐘,計算情況下的網(wǎng)絡(luò)延遲會導(dǎo)致
  • 一般情況下西傀,一條命了在集群中大多數(shù)響應(yīng)后即完成斤寇。即少數(shù)慢的服務(wù)器不會影響整體系統(tǒng)性能。

3. What's wrong with Paxos?

  • Paxos 難以理解
  • 沒有為實現(xiàn)提供好的基礎(chǔ)

4. Designing for understandability

5. The Raft consensus algorithm

一致性算法的關(guān)鍵屬性(Figure 3):

  • Election safety:(5.2節(jié))在一個term期間最多只會選出一個leader
  • Leader Append-Only:(5.3節(jié))leader只會新增(append)entries拥褂,而永遠(yuǎn)不會覆蓋或刪除entries娘锁。
  • Log Matching:(5.3節(jié))如果兩個logs包含一個具有相同index及term的entry,那么這兩者肿仑,在該index項及之前的所有entries都是一致的
  • Leader Completeness:(5.4節(jié))if a log entry is committed in a given term, then that entry will be present in the logs of the leaders for all higher-number terms致盟?
  • State Machine Safety:(5.4.3節(jié))如果一個server 在某一index上對狀態(tài)機(jī)applied 了 log entry碎税,不會有其它server 用同樣的index尤慰,apply一個不一致的log entry

Raft的做法是首先選出leader,全權(quán)負(fù)責(zé)管理replicated log雷蹂。包括接收客戶端的log entries伟端,復(fù)制log entries至其他server,告知他們何時可以 apply log entries to their state machines. 在 leader 掛掉或者與其他server失去鏈接的情況下匪煌,選舉出新的leader责蝠。

Raft把一致性問題拆分為三個子問題:

  1. Leader election:在當(dāng)前 leader 掛掉后選出一個新的 leader
  2. Log replication:leader 從客戶端接收 log entries 并在集群內(nèi)進(jìn)行復(fù)制,讓其他 logs 與leader的log保持一致
  3. Safety:關(guān)鍵需要保證 Figure 3 中的 State Machine Safety. 5.4節(jié)描述 Raft 如何保證這一點萎庭。為了保證這一點霜医,在 5.2 節(jié)選舉的方式中也會額外添加了一些限制。

5.1 Raft basics

Figure 4. Server states

server 有三個狀態(tài):leader驳规,follower肴敛,candidate。一般情況下有且僅有一個leader,其它server都是follower医男。
Leader 負(fù)責(zé)處理對外所有客戶端的請求(如果client向follwer發(fā)起請求砸狞,follower把client重定向給leader)。
Follower被動地接收leader及candidates的請求镀梭。
Candidate用于選舉出新的leader

Raft把時間劃分為任意長度的term刀森。每個term以選舉開始,如果有candidate贏得選舉报账,其在term內(nèi)當(dāng)選leader研底;在某些情況下發(fā)生了split vote,該term以沒有l(wèi)eader結(jié)束笙什,并在較短時間內(nèi)發(fā)起新的選舉飘哨。term在Raft中扮演著邏輯始終的角色(logical clock)。

基本的一致性算法琐凭,Raft server 之間只需要兩類型的RPC調(diào)用芽隆。而在第7節(jié)為在server間轉(zhuǎn)移snapshots添加了第三種RPC。

  • RequestVote:在選舉期間由candidates發(fā)起
  • AppendEntries:由leader發(fā)起的復(fù)制log entries以及heartbeat统屈。

5.2 Leader election

5.3 Log replication

5.4 Safety

5.5 Follower and candidate crashes

5.6 Timing and availability

6. Cluster membership changes

7. Log compaction

8. Client interaction

9. Implemebtation and evaluation

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胚吁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子愁憔,更是在濱河造成了極大的恐慌腕扶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吨掌,死亡現(xiàn)場離奇詭異半抱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)膜宋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門窿侈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秋茫,你說我怎么就攤上這事史简。” “怎么了肛著?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵圆兵,是天一觀的道長。 經(jīng)常有香客問我枢贿,道長殉农,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任局荚,我火速辦了婚禮超凳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己聪建,他們只是感情好钙畔,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著金麸,像睡著了一般擎析。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上挥下,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天揍魂,我揣著相機(jī)與錄音,去河邊找鬼棚瘟。 笑死现斋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偎蘸。 我是一名探鬼主播庄蹋,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迷雪!你這毒婦竟也來了限书?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤章咧,失蹤者是張志新(化名)和其女友劉穎倦西,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赁严,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡扰柠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疼约。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卤档。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忆谓,靈堂內(nèi)的尸體忽然破棺而出裆装,到底是詐尸還是另有隱情踱承,我是刑警寧澤倡缠,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站茎活,受9級特大地震影響昙沦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜载荔,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一盾饮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦丘损、人聲如沸普办。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衔蹲。三九已至,卻和暖如春呈础,著一層夾襖步出監(jiān)牢的瞬間舆驶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工而钞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留沙廉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓臼节,卻偏偏與公主長得像撬陵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子网缝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 最近看了Ongaro在2014年的博士論文《CONSENSUS: BRIDGING THEORY AND PRAC...
    山本聰閱讀 4,595評論 3 11
  • 最近看了Ongaro在2014年的博士論文《CONSENSUS: BRIDGING THEORY AND PRAC...
    山本聰閱讀 6,841評論 2 19
  • 1 整體描述 在Raft被提出來之前袱结,Paxos協(xié)議是第一個被證明的一致性算法,但是Paxos的論文非常難懂途凫,導(dǎo)致...
    船_長閱讀 7,226評論 0 7
  • 前言 這是一篇學(xué)習(xí)raft論文的總結(jié)垢夹,主要是對看論文過程中難以理解的幾個問題的記錄。系統(tǒng)性的講解還是得看raft論...
    asmer閱讀 14,471評論 3 38
  • 1. 2013年10月11日 街燈已上三兩盞维费, 一輪彎月暗傷神果元。 晚風(fēng)習(xí)習(xí)幾分愜, 誰曉他鄉(xiāng)陌路人犀盟?
    桓舟子閱讀 207評論 0 0