Paxos一致性协议
Paxos問題指分布式系統中存在故障fault,但不存在惡意corrupt節點場景(消息可能丟失但不會造假)下的共識達成(Consensus)問題。
Paxos是第一個被證明的共識算法,原理基于兩階段提交并進行擴展。算法中將節點分為三種類型:
倡議者proposer:提交一個提案,等待大家批準為結案,往往是客戶端擔任。
接受者acceptor:負責對提案進行投票,往往服務器擔任。提議超過半數的接受者投票及被選中。
學習者learner:被告知提案結果,并與之統一,不參與投票過程??蛻舳撕头斩硕伎蓳?。
每個節點在協議中可以擔任多個角色。
Paxos的特點:
一個或多個節點可以提出提議
系統針對所有提案中的某個提案必須達成一致
最多只能對一個確定的提案達成一致
只要超過半數的節點存活且可互相通信,整個系統一定能達成一致狀態
總結Paxos兩階段提交
兩個階段分別是準備(prepare)和提交(commit)。準備階段解決大家對哪個提案進行投票的問題,提交階段解決確認最終值的問題。
簡單來說,提案者發出提案后,收到一些反饋,有兩種結果,一種結果是自己的提案被大多數節點接受了,另外一種是沒被接受,沒被接受就過會再試試。提案者收到來自大多數的接受反饋,也不能認為這就是最終確認。因為這些接收者并不知道自己剛反饋的提案就是全局的絕對大多數。所以,引入新的一輪再確認階段是必須的,提案者在判斷這個提案可能被大多數接受的情況下,發起一輪新的確認提案。這就進入了提交階段。提交階段的提案發送出去,其他階段進行提案值比較,返回最大的,所以提案者收到返回消息不帶新的提案,說明鎖定成功,如果有新的提案內容,進行提案值最大比較,然后替換更大的值。如果沒有收到足夠多的回復,則需要再次發出請求。
一旦多數接受了共同的提案值,則形成決議,稱為最終確認的提案。
兩個階段分別是準備(prepare)和提交(commit)。準備階段解決大家對哪個提案進行投票的問題,提交階段解決確認最終值的問題。
簡單來說,提案者發出提案后,收到一些反饋,有兩種結果,一種結果是自己的提案被大多數節點接受了,另外一種是沒被接受,沒被接受就過會再試試。
提案者收到來自大多數的接受反饋,也不能認為這就是最終確認。因為這些接收者并不知道自己剛反饋的提案就是全局的絕對大多數。所以,引入新的一輪再確認階段是必須的,提案者在判斷這個提案可能被大多數接受的情況下,發起一輪新的確認提案。這就進入了提交階段。提交階段的提案發送出去,其他階段進行提案值比較,返回最大的,所以提案者收到返回消息不帶新的提案,說明鎖定成功,如果有新的提案內容,進行提案值最大比較,然后替換更大的值。如果沒有收到足夠多的回復,則需要再次發出請求。
一旦多數接受了共同的提案值,則形成決議,稱為最終確認的提案。?
總結
以上是生活随笔為你收集整理的Paxos一致性协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAP 实际应用案
- 下一篇: Spring 的优点