Paxos 與拜占庭將軍問題


拜占庭將軍問題是由 Paxos 算法作者萊斯利·蘭伯特提出的點對點通信中的基本問題。 該問題要說明的含義是,在不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。 所以,Paxos 算法的前提是不存在拜占庭將軍問題,即信道是安全的、可靠的, 集群節點間傳遞的消息是不會被篡改的。 一般情況下,分布式系統中各個節點間采用兩種通訊模型:共享內存(Shared Memory)、 消息傳遞(Messages Passing)。而 Paxos 是基於消息傳遞通訊模型的。 

Paxos算法:

(1)三種角色

  • Proposer:提案者
  • Acceptor: 表決者
  • Learner: 同步者

(2) Paxos 算法的一致性

Paxos 算法的一致性主要體現在以下幾點:

  • 每個提案者在提出提案時都會首先獲取到一個具有全局唯一性的、遞增的提案編號 N, 即在整個集群中是唯一的編號 N,然后將該編號賦予其要提出的提案。
  • 每個表決者在 accept 某提案后,會將該提案的編號 N 記錄在本地,這樣每個表決者中保存的已經被 accept 的提案中會存在一個編號最大的提案,其編號假設為 maxN。每個表決者僅會 accept 編號大於自己本地 maxN 的提案。
  • 在眾多提案中最終只能有一個提案被選定。
  • 一旦一個提案被選定,則其它服務器會主動同步(Learn)該提案到本地。
  • 沒有提案被提出則不會有提案被選定。
  • 參考:Paxos 與拜占庭將軍問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM