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)該提案到本地。
  • 沒有提案被提出則不會有提案被選定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章