paxos演算法解決的問題正是分布式一致性問題,即乙個分布式系統中的各個程序如何就某個值(決議)達成一致。
paxos演算法執行在允許宕機故障的非同步系統中,不要求可靠的訊息傳遞,可容忍訊息丟失、延遲、亂序以及重複。它利用大多數 (majority) 機制保證了2f+1的容錯能力,即2f+1個節點的系統最多允許f個節點同時出現故障。
乙個或多個提議程序 (proposer) 可以發起提案 (proposal),paxos演算法使所有提案中的某乙個提案,在所有程序中達成一致。系統中的多數派同時認可該提案,即達成了一致。最多隻針對乙個確定的提案達成一致。
paxos將系統中的角色分為提議者 (proposer),決策者 (acceptor),和最終決策學習者 (learner):
在多副本狀態機中,每個副本同時具有proposer、acceptor、learner三種角色。
paxos演算法通過乙個決議分為兩個階段(learn階段之前決議已經形成):
第一階段:prepare階段。proposer向acceptors發出prepare請求,acceptors針對收到的prepare請求進行promise承諾。
第二階段:accept階段。proposer收到多數acceptors承諾的promise後,向acceptors發出propose請求,acceptors針對收到的propose請求進行accept處理。
第三階段:learn階段。proposer在收到多數acceptors的accept之後,標誌著本次accept成功,決議形成,將形成的決議傳送給所有learners。
分布式選舉演算法Paxos
什麼是paxos演算法?paxos演算法是分布式計算領域中乙個非常重要的演算法,主要解決分布式系統如何就某個值 決議 達成一致的問題。乙個典型的場景是分布式資料庫的一致問題 如果分布式資料庫的各個節點初始狀態一致,又能執行相同的操作序列,那麼最後能達到乙個一致的狀態。但是如何保證在每個節點上執行相同...
分布式系統之Paxos變種和優化
首先我們來回顧一下multi paxos,multi paxos在basic paxos的基礎上確定一系列值,其決議過程如下 multi paxos中leader用於避免活鎖,但leader的存在會帶來其他問題,一是如何選舉和保持唯一leader 雖然無leader或多leader不影響一致性,但影...
分布式框架Zookeeper與paxos演算法詳解
一 zookeeper是什麼 官方說辭 zookeeper 分布式服務框架是apache hadoop 的乙個子專案,它主要是用來解決分布式應用中經常遇到的一些資料管理問題,如 統一命名服務 狀態同步服務 集群管理 分布式應用配置項的管理等。好抽象,我們改變一下方式,先看看它都提供了哪些功能,然後再...