Raft Consensus Algorithm 分布式系統一致性協議


Raft是一種易於理解的分布式系統一致性算法(弱一致性,最終一致性)。它在容錯性和性能上相當於Paxos。不同之處在於,它被分解成相對獨立的子問題,並且清晰地處理了實際系統所需的所有主要部分。

 

系統角色

leader follower candidate(leader失敗以后 follower的一種競選中間狀態 成功后變為leader狀態)

 

主要子問題

Leader Election:

timeout競選機制 同票情況(隨機timeout)最先達到timeout的服務器給自己投票 並且讓其他服務器給自己投票 然后term+1 用於分區融合和宕機重啟的服務器能同步最新數據

Log Replication:

通過leader向follower同步log (只能由leader發出)當大多數服務器已經向leader確認log寫入成功后 代表寫入成功 leader會進一步通知集群進行commit操作 真正寫入成功

Safety:

log sync + commit + majority 多數成功則成功 此時宕機的服務器也可以在之后通過term同步最新數據

S1為leader 橙色球為心跳包可攜帶日志數據 每次心跳達到會更新timeout 此時S4宕機數據落后於系統整體

 

 

 

https://raft.github.io/slides/raftuserstudy2013.pdf

 

動態演示:

http://thesecretlivesofdata.com/raft/

https://raft.github.io/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM