Raft協議的一些概念

一些概念

相比於其餘一致性算法(paxos)的優點

  • 更簡單,更容易理解
  • 描述得很完備
  • 被開源項目實現而且被一些公司採用
  • 安全性獲得了證實
  • 有效性可與其餘算法相比擬。

最關鍵的優點仍是更容易理解。算法

服務器的三種狀態:Leader, follower, candidate

  • Leader: 處理客戶端的請求
  • Follower: 僅響應來自leaders和candidates的請求
  • Candidate: 選出一個leader.

三種狀態之間的轉換

clipboard.png

  • 開始時,全部的servers的狀態都是follower;
  • 其中一個follower最先發現沒有leader的heartbeat發送過來,這叫times out,而後此follower就轉化爲candidate進入選舉階段。選舉超時,也叫times out。一旦選舉超時,則進入下一個選舉階段;
  • 若是一個candidate獲得大多數的投票,則成爲leader;
  • 若是leader發現有更高term的server,則自動轉化爲follower;
  • 若是candidate發現了當前的leader也轉化爲follower。

Terms

描述

在Raft中term的角色是一個邏輯時鐘
clipboard.png
如上圖所示:安全

  • term的編號是連續的整數;
  • term都是以選舉開始;
  • 每一個etcd服務器都存儲當前的term號,並隨時間單調遞增;
  • 服務器通訊時都要交換當前的term號;
  • 若是服務器的當前term號小於其餘的,則更新到較大的。若是candidate或者leader發現本身的term號過時,則立刻退回到follower的狀態;
  • 若是server收到帶有舊的term號的請求,則拒絕。

平票問題

這種狀況下,此任期將無leader選出,一個新的term(選舉)將會立刻開始。Raft會保證在一個給定的term中最多有一個leader。
Raft採用服務器term時長隨機生成的方法來保證總會有一個leader產生。服務器

相關文章
相關標籤/搜索