raft演算法的核心思想

2021-07-11 19:05:47 字數 601 閱讀 3838

raft演算法跟paxos,zab(zookeeper atomic broadcast)演算法類似,設計乙個一致性演算法,在乙個分布式系統中實現乙個分布式的、高可用的、一致性的儲存系統。

raft的特點是設計簡單,易於程式設計師的理解和實現,並不是那麼抽象。

raft演算法的核心思想和關鍵技術點:

保證系統中只有乙個leader,每次leader選舉都是必須具有最新的termid(或者epoch),並拿到乙個多數派的選票。

每次發布乙個新資料,leader必須在乙個多數派都commit之後才會將這條記錄記錄為commit狀態;

follower只會從leader來同步已經提交的資料;

如果某個新進入的或者長期宕機的follower起來之後,會跟leader的當前commit log開始比對,發現缺失或者不一致的就一致向前回溯,直到找到乙個一直點開始向後同步

這就要求潛在的leader上只記錄commit的log。也就是說在選舉過程中,如果乙個candidate的log,沒有前面epoch 已經commit的log,在向其他節點申請選票時會被拒絕,這個candidate是無法贏得選舉的。

與paxos的相比,raft設計的更為簡單,容易被軟體工程師所理解,更容易編碼實現。

遞迴演算法核心思想

遞迴是一種函式或方法中呼叫自身的程式設計技術,遞迴思想在於把大問題分解為小問題,進一步分解為更小的問題,直到每個小問題可以解決為止,也就是說,遞迴就是 用與自己相似但規模較小的問題來描述自己。遞迴演算法的三個特性 1,求解規模為n的問題可以轉化為乙個或多個結構相同規模較小的的問題,然後從這些較小的問...

MapReduce核心思想

mapreduce核心程式設計思想,如圖1 1所示。圖1 1 mapreduce核心程式設計思想 1 分布式的運算程式往往需要分成至少 2個階段。2 第乙個階段的 maptask 併發例項,完全並行執行,互不相干。3 第二個階段的 reducetask 併發例項互不相干,但是他們的資料依賴於上乙個階...

Kafka核心思想

kafka是2010年12月份開源的專案,採用scala語言編寫,使用了多種效率優化機制,整體架構比較新穎 push pull 更適合異構集群。設計目標 1 資料在磁碟上的訪問代價為o 1 2 高吞吐率,在普通的伺服器上每秒也能處理幾十萬條訊息 3 分布式架構,能夠對訊息分割槽 4 支援將資料並行的...