拜占庭將軍問題 (Byzantine Generals Problem)
来源:互联网 发布:什么叫网络打印机 编辑:程序博客网 时间:2024/06/06 00:53
拜占庭將軍問題 (Byzantine Generals Problem),是由萊斯利蘭伯特提出的點對點通信中的基本問題。 在分佈式計算上,不同的計算機透過訊息交換,嘗試得到一致的共識;但有些時候,系統上協調計算機 (Coordinator / Commander) 或成員計算機 (Member / Lieutanent) 可能因系統錯誤並交換錯的訊息,導致影響最終的系統一致性。拜占庭將軍問題就根據錯誤計算機的數量,尋找可能的解決辦法 (但無法找到一個絕對的答案,只可以用來驗證一個機制的有效程度)。
目录
[隐藏]
* 1 起源
* 2 兩軍問題
* 3 可能的解決辦法
* 4 條件
o 4.1 例子
[编辑] 起源
拜占庭位於現在土耳其的伊斯坦堡,是東羅馬帝國的首都。由於當時拜占庭羅馬帝國國土遼闊,為了防禦目的,因此每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳消息。 在戰爭的時候,拜占庭軍隊內所有將軍和副官必需達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂整體軍隊的秩序。在進行共識時,結果並不代表大多數人的意見。這時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此形成。
[编辑] 兩軍問題
軍隊與軍隊之間分隔很遠,傳訊息的信差可能在途中路上陣亡,或因軍隊距離,不能在得到消息後即時回覆,發送方也無法確認消息確實丟失的情形,導致不可能達到一致性。在分佈式計算上,試圖在非同步系統和不可靠的通道上達到一致性是不可能的。因此對一致性的研究一般假設信道是可靠的,或不存在非同步系統上而行。
[编辑] 可能的解決辦法
N:計算機總數
F:有問題計算機總數
信息在計算機間互相交換後,各計算機列出所有得到的信息,以大多數的結果作為解決辦法。
[编辑] 條件
在 N ≥ 3F + 1 的情況下一致性是可能解決。
[编辑] 例子
有四部計算機,全部正常。
N = 4,F = 0:
例子 1 得到的信息 結果
計算機A O O O O O
計算機B O O O O O
計算機C O O O O O
計算機D O O O O O
4 ≥ 3(0) + 0 是成立,故能得到一致性。
有四部計算機,其中一部是有問題的。
N = 4,F = 1:
例子 2 (計算機D = X) 得到的信息 結果
計算機A O O O X O
計算機B O O X O O
計算機C O X O O O
計算機D X O O O O
4 ≥ 3(1) + 1 是成立,故仍然能得到一致性。
註:有問題計算機的總數可能在交換訊息時上升:
N = 4,F = 2:
例子 3 (計算機C, D = X) 得到的信息 結果
計算機A O O X X ?
計算機B O X X O ?
計算機C X X O O ?
計算機D X O O X ?
4 ≥ 3(2) + 1 是不成立,故不能得到一致性。
目录
[隐藏]
* 1 起源
* 2 兩軍問題
* 3 可能的解決辦法
* 4 條件
o 4.1 例子
[编辑] 起源
拜占庭位於現在土耳其的伊斯坦堡,是東羅馬帝國的首都。由於當時拜占庭羅馬帝國國土遼闊,為了防禦目的,因此每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳消息。 在戰爭的時候,拜占庭軍隊內所有將軍和副官必需達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂整體軍隊的秩序。在進行共識時,結果並不代表大多數人的意見。這時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此形成。
[编辑] 兩軍問題
軍隊與軍隊之間分隔很遠,傳訊息的信差可能在途中路上陣亡,或因軍隊距離,不能在得到消息後即時回覆,發送方也無法確認消息確實丟失的情形,導致不可能達到一致性。在分佈式計算上,試圖在非同步系統和不可靠的通道上達到一致性是不可能的。因此對一致性的研究一般假設信道是可靠的,或不存在非同步系統上而行。
[编辑] 可能的解決辦法
N:計算機總數
F:有問題計算機總數
信息在計算機間互相交換後,各計算機列出所有得到的信息,以大多數的結果作為解決辦法。
[编辑] 條件
在 N ≥ 3F + 1 的情況下一致性是可能解決。
[编辑] 例子
有四部計算機,全部正常。
N = 4,F = 0:
例子 1 得到的信息 結果
計算機A O O O O O
計算機B O O O O O
計算機C O O O O O
計算機D O O O O O
4 ≥ 3(0) + 0 是成立,故能得到一致性。
有四部計算機,其中一部是有問題的。
N = 4,F = 1:
例子 2 (計算機D = X) 得到的信息 結果
計算機A O O O X O
計算機B O O X O O
計算機C O X O O O
計算機D X O O O O
4 ≥ 3(1) + 1 是成立,故仍然能得到一致性。
註:有問題計算機的總數可能在交換訊息時上升:
N = 4,F = 2:
例子 3 (計算機C, D = X) 得到的信息 結果
計算機A O O X X ?
計算機B O X X O ?
計算機C X X O O ?
計算機D X O O X ?
4 ≥ 3(2) + 1 是不成立,故不能得到一致性。
- 拜占庭將軍問題 (Byzantine Generals Problem)
- 关于“拜占庭将军算法”byzantine generals problem
- 拜占庭将军问题 (The Byzantine Generals Problem)
- 拜占庭故障Byzantine fault
- 拜占庭
- 编程之美 拒绝玄学 将帅问题简明解The problem of chinese chess about generals
- C/C++ Programming Generals
- Java Programming Generals
- Practical Byzantine Fault Tolerance
- 拜占庭问题
- 拜占庭问题
- 拜占庭问题
- 拜占庭故障
- Byzantine容错是有害的
- 拜占庭将军问题
- 拜占庭将军问题
- 拜占庭将军问题
- 拜占庭将军问题
- Eclispe下运行cocos2d-X的HelloWorld例子
- 基数排序的C++实现(解析)
- 操作sqlserver数据库方法
- Java生成一个exel文件并写入内容
- keil错误ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
- 拜占庭將軍問題 (Byzantine Generals Problem)
- Centos 6 / RedHat 6 的网络默认配置真扯~!
- 构造函数能不能是虚函数
- 布隆过滤器(Bloom Filter)
- 归并算法、赢者树、败者树
- java第二周 任务一
- vtable
- .NET Micro Framework V4.2 QFE2新版本简介
- 顺序表和链表的区别