11位拜占庭將軍去打仗, 他們各自有權力觀測敵情並作出判斷, 進攻或撤退, 那麼怎麼讓他們只用傳令兵達成一致呢?
一種很符合直覺的方法就是投票,
每位將軍作出決定後都將結果"廣播"給其餘所有將軍, 這樣所有將軍都能獲得同樣的11份(包括自己)結果, 取多數, 即可得到全軍都同意的行為.
但如果這11位將軍中有間諜呢? 假設有9位忠誠的將軍, 5位判斷進攻, 4位判斷撤退, 還有2個間諜惡意判斷撤退, 雖然結果是錯誤的撤退, 但這種情況完全是允許的. 因為這11位將軍依然保持著狀態一致性.
暫時從戰爭故事中抽離出來, 分布式資料庫最糟糕的問題絕對不是寫入或者讀取失敗, 而是狀態不同步, 還感知不到. 這個的後果就是correctness不能保證, 那程式就沒有任何意義了.
2個間諜怎麼破壞狀態一致性呢? 他們跟5位判斷進攻的將軍說, 我們支援進攻, 那麼這5位將軍統計發現7位支援進攻, 4位支援撤退, 將發動進攻. 又跟4位撤退的將軍說, 我們支援撤退, 一統計, 5票進攻, 6票撤退, 立馬撤退. 這場戰爭必輸無疑了.
避免這種狀態不同步的問題, 我稱之為"廣義拜占庭將軍問題".
拜占庭將軍問題
前進中的可信計算 拜占庭將軍問題 閔應驊 乙個可信的計算機系統必須容忍乙個或多個部件的失效。失效的部件可能送出相互矛盾的資訊給系統的其他部件。這正是目前網路安全要對付的情況,如銀行交易安全 存款安全。美國2001 9 11遭恐怖襲擊之後,大家普遍認識到銀行的異地備份非常重要。紐約的一家銀行可以在東京...
拜占庭將軍問題
假設有4個將軍圍攻乙個敵人,只有三個將軍同時出擊才可以將敵人擊敗,任意兩個或者乙個將軍出擊均會被敵人擊敗,4個將軍通過一對一的通訊機制協商共同出擊時機,同時4個將軍中有乙個是內奸,他會混淆通訊結果,避免3個將軍協商出統一的出擊時機。拜占庭將軍 pbft 問題既指在這種情況下將軍們如果達成共識,共同擊...
拜占庭將軍問題
拜占庭將軍問題 byzantine failures 是由萊斯利 蘭伯特提出的點對點通訊中的基本問題。含義是在存在訊息丟失的不可靠通道上試圖通過訊息傳遞的方式達到一致性是不可能的。因此對一致性的研究一般假設通道是可靠的,或不存在本問題。在很久很久以前,拜占庭是東羅馬帝國的首都。那個時候羅馬帝國國土遼...