拜占庭將軍-分佈式領域的幽靈

拜占庭將軍問題(Byzantine Generals Problem),是由萊斯利·蘭波特在其同名論文中提出的分佈式對等網絡通信容錯問題。

在分佈式計算中,不同的計算機通過通訊交換信息達成共識而按照同一套協作策略行動。但有時候,系統中的成員計算機可能出錯而發送錯誤的信息,用於傳遞信息的通訊網絡也可能導致信息損壞,使得網絡中不同的成員關於全體協作的策略得出不同結論,從而破壞系統一致性。拜占庭將軍問題被認爲是容錯性問題中最難的問題類型之一。
也被稱爲“拜占庭容錯”、“拜占庭將軍問題”。

拜占庭將軍問題是Leslie Lamport(2013年的圖靈講得住)用來爲描述分佈式系統一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子。

這個例子大意是這樣的:

拜占庭帝國想要進攻一個強大的敵人,爲此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。這10支軍隊在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊(一半以上)同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵騎馬相互通信來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們才能保證有多於6支軍隊在同一時間一起發起進攻,從而贏取戰鬥。

拜占庭將軍問題中並不去考慮通信兵是否會被截獲或無法傳達信息等問題,即消息傳遞的信道絕無問題。Lamport已經證明了在消息可能丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。所以,在研究拜占庭將軍問題的時候,已經假定了信道是沒有問題的.
此係統的名字叫做拜占庭將軍問題。從描述中,可以顯然知道,將軍們需要通過少數服從多數的算法在分佈式的場景下進行投票決議一個一致性的決定去執行。

在拜占庭將軍問題中,默認是認爲信使是不會被截獲並且消息會傳遞到的。更多的情況中,將軍中可能會出現叛徒、信使會被截獲冒充、消息無法到達。而叛徒或信使冒充會惡意地向其他將軍投票,給不同將軍展示不同的投票結果,從而破壞了將軍們執行的一致性。而此類錯誤則稱爲拜占庭錯誤。
如果系統能處理拜占庭將軍錯誤正常運行的話,則稱系統擁有拜占庭容錯「Byzantine fault tolerance」,簡稱爲BFT。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章