拜占庭将军问题是Leslie Lamport 用来为描述 分布式系统共识问题(Distributed Consensus),在 论文 中抽象出来一个著名的例子。
多个拜占庭将军各率领一支军队,想要占领一座防守坚固的城市,这些将军们只能通过信使进行交流,为了简化问题,将各支军队的行动策略限定为进攻或者撤离两种,因为部分进攻和部分撤离可能会导致灾难性后果,所以各位将军必须通过投票来达成一致的策略,即所有军队一起进攻或者所有军队一起撤离。
拜占庭将军问题.png拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达成共识是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题。
拜占庭将军问题的挑战在于,将军中可能会出现叛徒,他们会试图故意误导和迷惑其他将军来破坏整个军事行动。如下图所示:
image.png将军C从将军A和将军B那里收到了两个互相矛盾的信息,此时将军C无法确定谁是叛徒,也无法能够准确的采取行动。
所以在众多将军中,我们不能指定背叛地将军们做些什么,所以我们能做地最好的事情就是让忠诚的将军们达成共识(对忠诚将军的占比有要求)。由此,我们引出分布式系统如何达成共识这一问题。
网友评论