paxos的重要概念:
提案(proposal):proposal訊息包括提案編號(proposal id)和提案的值(最終一致值value)
paxos演算法角色:
client:客戶端,主要是向分布式系統發出請求,並等待響應。例如:對分布式檔案伺服器中檔案的寫請求
proposer:提案發起者,提倡客戶請求,試圖說服acceptor對此達成一致,並在發生衝突時充當協調者以推動協議向前發展。
acceptor:決策者,可以批准提案;如果某個提案被選定,那麼該提案裡的value就被選定了。
learners:最終決策的學習者,充當該協議的複製。
規則:總結:如果acceptor沒有接受過提案,有提案就接受最先到達的提案。乙個acceptor必須接受它收到的第乙個提案
乙個提案被選定需要被半數以上的acceptor接受
如果某個value為v的提案被選定了,那麼每個編號更高的被acceptor接受的提案的value必須是v
如果某個value為v的提案被選定,那麼之後任何proposer提出的編號更高的提案的value必須是v
對於任意的mn和vn,如果提案[mn,vn]被提出,那麼肯定存在乙個由半數以上的acceptor組成的集合s,滿足一下兩個條件中的任意乙個:
要麼s中每個acceptor都沒有接受過編號小於mn的提案(之前沒有接受提案)
要麼s中所有acceptor批准的所有編號小於mn的提案中,編號最大的那個提案的value值為vn。
如果acceptor沒有接受過提案,有提案就接受最先到達的提案
proposer提交提案的時候,如果acceptor已經接受過提案,提交的提案的value必須和上次一樣不變
如果acceptor接受提案時,要求填的編號不能比上次的提案編號小,如果編號小,會忽略。提交提案的值,acceptor接收時候,value必須和上次接收的value一樣。
proposer提交提案的時候,如果acceptor已經接受過提案,提交的提案的value必須和上次一樣不變
如果acceptor接受提案時,要求提案的編號不能比上次的提案編號小,如果編號小則忽略。提交提案的值,acceptor接收的時候,value也必須上次接受的value一樣。
提案的生成規則及接收
提案者給決策者傳送prepare請求,提案者建立乙個編號為n的提案傳送給多數派決策者,今後不會再接收比n小的數,然後多數派響應乙個v或者null給提案者,提案者發現沒有對應的提案,然後需要建立自己的value, 然後傳送accept請求,編號為n,值為value([n,v]),如果此時決策者的編號出現大於n,則返回null或者error等資訊,使提案者重新增加編號的值,繼續傳送prepare請求,如果編號是n則直接響應回來。
learner學習方式
acceptor接收了乙個提案,就將該提案傳送給leaner
優點:learner能快速獲取被選定的value
缺點:通訊次數為(m*n)
acceptor接收了乙個提案,將該提案傳送給主learner,主learner在通知其他learner
優點:通訊次數減少(m+n+1)
缺點:單點問題(主learner可能出現故障)
acceptor接收了乙個提案,將該提案傳送給learner集合,learner集合再通知其他learner
優點:集合中learner個數越多,可靠性越好
缺點:網路通訊複雜度搞。
paxos演算法活性
上圖失去活性的問題可以通過選出乙個主proposer,都通過主proposer去傳送提案
分布式系統03 一致性演算法之Paxos
在前兩篇文章中,已經給各位介紹了分布式事務與分布式事務解決方案。在解決分布式事務時,cap 三者無法同時滿足,往往都會選擇一定程度上的犧牲分布式系統的強一致性而滿足系統的高可用性。在滿足分布式系統的最終一致性時,就需要用到分布式一致性演算法。paxos 演算法解決的問題是乙個分布式系統如何就某個值 ...
理解分布式一致性協議Paxos
question 大名鼎鼎的paxos協議是啥?ansower 分布式一致性協議 這麼逼格的術語,就問你怕不怕?能不能搞的中國話一點,簡單一點,而不是翻譯 paxos made 呢?一直覺得lesile lamport的腦迴路和常人不一樣好伐。文章前面部分一眼都懂,後面的,眼睛瞄瞎都不一定看得懂。本...
分布式一致性演算法
補習了一下分布式相關知識,嗯,還是有很些不懂地方,閱讀不少不錯資源,記錄一下有時間回頭再讀。分布式儲存的強一致性實現方式 1.quorum w r n 2.同步複製 如 pacifica 3.複製狀態機 分布式一致性協議paxos raft zab等 學習分布式系統需要怎樣的知識?cse 552 f...