拜占庭将军问题 (Byzantine Generals Problem),是由莱斯利兰伯特提出的点对点通信中的基本问题。 在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机 (Coordinator / Commander) 或成员计算机 (Member / Lieutanent) 可能因系统错误并交换错的讯息,导致影响最终的系统一致性。拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法 (但无法找到一个绝对的答案,只可以用来验证一个机制的有效程度)。
起源
拜占庭位于现在土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,军队可能有叛徒和敌军间谍,左右将军们的决定,扰乱军队整体的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
两军问题
军队与军队之间分隔很远,传讯息的信差可能在途中路上阵亡,或因军队距离,不能在得到消息后即时回复,发送方也无法确认消息确实丢失的情形,导致不可能达到一致性。在分布式计算上,试图在异步系统和不可靠的通道上达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在异步系统上而行。
可能的解决办法
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 是不成立,故不能得到一致性。
源自:http://zh.wikipedia.org/wiki/%E6%8B%9C%E5%8D%A0%E5%BA%AD%E5%B0%86%E5%86%9B%E9%97%AE%E9%A2%98
分享到:
相关推荐
拜占庭将军问题,源自古代拜占庭帝国的军事通讯难题,是分布式计算领域中的一个经典问题。在该问题中,一群将军分布在敌人的包围中,他们必须通过不完全可靠的信使来协调进攻或撤退的决定。由于存在叛徒(即故障节点...
【拜占庭将军问题】是分布式系统中一个重要的理论模型,由Leslie Lamport, Robert Shostak,和Marshall Pease在1982年提出。这个问题旨在探讨在不可靠的通信环境下,如何确保一组分散的将军(代表分布式系统的节点)...
拜占庭将军问题的核心在于如何在不可靠的网络环境中,尤其是在存在恶意节点(叛徒)的情况下,确保系统的一致性和正确性。在拜占庭将军问题的场景中,将军们需要达成一种共识,即决定何时进攻或撤退,而这个共识必须...
经过翻译和校对的拜占庭将军问题。
此程序用来模拟工作量证明链如何解决拜占庭将军问题,使用Objective-C语言,需要使用Xcode开发工具运行并执行演示,演示结果打印在Xcode控制台。 压缩包解压密码:liangjingcheng
拜占庭问题 拜占庭问题最早由 Leslie Lamport 等学者于 1982 年在论文《The Byzantine Generals Problem》中正式...拜占庭问题即讨论在此情况下,如何让忠诚的将军们能达成行动的一致。 拜占庭问题(Byzantine Probl
拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠...
该资源摘要信息对区块链技术的发展历史进行了详细的解读,包括共识简史、拜占庭将军问题、分布式系统、共识算法、拜占庭将军问题的理论证明、分布式系统与拜占庭将军问题、Paxos 共识算法等知识点。
拜占庭将军问题是分布式计算中的经典问题对系统针对任意对抗性故障的恢复能力进行建模。 现有的该问题的解决方案往往非常复杂,其中许多采用某种形式的递归。 本文提出了一种解决该问题的新算法。 一个非常简单的...
### 拜占庭将军问题解析 #### 一、引言与背景介绍 拜占庭将军问题是由Leslie Lamport、Robert Shostak和Marshall Pease在SRI International共同研究提出的一个理论模型。该问题主要探讨了在分布式计算系统中如何...
### 拜占庭将军问题解析 #### 一、引言与背景 拜占庭将军问题(The Byzantine Generals Problem)是计算机科学领域中一个经典的分布式系统问题,由Leslie Lamport、Robert Shostak和Marshall Pease在1982年提出。...
### 拜占庭将军问题解析 #### 一、引言与背景 拜占庭将军问题(The Byzantine Generals Problem)是由Leslie Lamport、Robert Shostak和Marshall Pease三位计算机科学家在1982年提出的一个理论模型。这一问题主要...
TrInc(Trust in tiny Incumbent)是针对这一问题提出的一种解决方案,它强调在大规模分布式系统中引入小型可信硬件,以应对拜占庭将军问题和equivocation(矛盾性)问题。这篇论文的作者包括John R. Douceur、Jacob...