什麼是Paxos算法

Paxos算法是Lesile Lamport提出的一種基於消息傳遞且具有高度容錯特性的一致性算法。
分佈式系統中的節點通信存在兩種模型: 共享內存和消息傳遞。
基於消息傳遞通信模型的分佈式系統,不可避免會發生進程變慢被殺死,消息延遲、丟失、重複等問題,Paxos算法就是在存在以上異常的情況下仍能保持一致性的協議。


Paxos算法使用一個希臘故事來描述,在Paxos中,存在三種角色,分別爲
Proposer(提議者,用來發出提案proposal), 
Acceptor(接受者,可以接受或拒絕提案), 
Learner(學習者,學習被選定的提案,當提案被超過半數的Acceptor接受後爲被批准)。
下面更精確的定義Paxos要解決的問題: 
1、決議(value)只有在被proposer提出後才能被批准 
2、在一次Paxos算法的執行實例中,只批准(chose)一個value 
3、learner只能獲得被批准(chosen)的value


所有事務請求必須由一個全局唯一的服務器來協調處理,這樣的服務器被稱爲leader服務器,而餘下的其他服務器則成爲follower服務器。
leader服務器負責將一個客戶端事務請求轉換成一個事務proposal,並將該proposal分發給集羣中所有的follower服務器。
之後leader服務器需要等待所有follower服務器的反饋,一旦超過半數的follower服務器進行了正確的反饋後,那麼leader就會再次向所有的follower服務器分發commit消息,要求其將前一個proposal進行提交。


ZAB協議需要確保那些已經在leader服務器上提交的事務最終被所有服務器都提交。
ZAB協議需要確保丟棄那些只在leader服務器上被提出的事務。
如果讓leader選舉算法能夠保證新選舉出來的leader服務器擁有集羣中所有機器最高編號(ZXID)的事務proposal,那麼就可以保證這個新選舉出來的leader一定具有所有已經提交的提案。


ZAB兩種基本的模式:崩潰恢復和消息廣播。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章