當前位置:成語大全網 - 漢語詞典 - 如何理解拜占庭將軍的問題

如何理解拜占庭將軍的問題

——【簡單理解】。

因為Lamport是分布式系統的鼻祖,所以我將從分布式系統的角度來說。如果要保證分布式系統的壹致性和可用性,就必須對錯誤的節點進行處理,防止系統出現用戶可以觀察到的錯誤。在我看來,拜占庭將軍的問題提出了壹個錯誤的模型。即錯誤節點可以做任何事情(不受協議限制),比如不響應,發送錯誤信息,發送不同的決定給不同的節點,不同的錯誤節點聯手做壞事。總之,沒有壹個節點會有比這更嚴重的錯誤。顯然,拜占庭錯誤是過分悲觀的模型,因為這種錯誤在實際環境中是罕見的。那麽為什麽要研究這個模型呢?壹個最簡單的理由是,如果壹個壹致性算法在存在F個拜占庭錯誤時能保證系統的壹致性,那麽這個算法在存在F個任意其他錯誤時也能保證系統的壹致性。誤差模型有上限,必然有下限(沒有更弱的模型)。這個下限就是“故障停止”模式。這個模型的假設是,當壹個節點出了問題,這個節點就會停止運行,其他所有節點都知道這個節點出了問題。用同樣的邏輯,如果壹個壹致性算法在系統存在F個錯誤時不能保證壹致性,那麽這個算法就不能處理任何其他的F個問題。使用這些誤差模型,我們可以比較不同的算法,並討論特定算法的成本。

-【關於算法】。

第壹個解決拜占庭將軍問題的算法是Lamport在1980年發表的《在有故障的情況下達成協議》[/en-us/um/people/Lamport/pubs/reaching . pdf]。本文描述了具有拜占庭錯誤的節點數(f)為1時的算法。上面匿名用戶發布的鏈接是Lamport和1982發表的壹篇文章,描述了第壹個可以處理f≥1的算法。這個問題接下來的進展是1999,是芭芭拉·利斯科夫(三位女性圖靈獎獲得者之壹)提出的。然而,在詳細列舉這壹進展之前,我們需要提到拜占庭壹般問題和FLP定理之間的關系。除了錯誤模型,系統壹致性的另壹個重要方面是討論在不同的系統假設(異步/同步通信,以及任務完成時間是否有上限)和相應的算法/協議下達到壹致性的可能性。由於FLP(具有壹個故障進程的分布式壹致性的可能性),在異步+無響應上限的情況下,沒有有效的算法可以掩蓋節點崩潰(比故障停止更強,節點崩潰並且其他節點不知道)。所以所有解決拜占庭問題的算法都有同步假設(要麽同步保證安全性,要麽同步保證活性)。