1982年,L.兰波特(Leslie Lamport)、R.肖斯塔克(Robert Shostak)等人在论文《拜占廷将军问题》(The Byzantine Generals Problem)中提出这一概念,其核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。
分布式计算中的经典共识问题。
1982年,L.兰波特(Leslie Lamport)、R.肖斯塔克(Robert Shostak)等人在论文《拜占廷将军问题》(The Byzantine Generals Problem)中提出这一概念,其核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。
可靠的分布式系统必须解决故障组件给系统不同组件发送冲突消息的问题,这个情形类似于10个拜占廷将军带领各自的军队驻扎在敌人城市的外围,这一敌人足以抵御5支拜占廷军队的同时袭击。假如这10支军队是在分开的包围状态下同时攻击,则需要至少6支军队同时袭击才能成功。军队之间依靠通信兵相互通信来协商进攻意向及进攻时间,将军之间必须在同一个作战计划上达成协议,其中可能出现叛徒阻碍作战计划的一致。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占廷将军们能否找到一种分布式的协议或算法来实现远程协商,保证忠诚将军能够达成一致,从而赢取战斗,这就是拜占廷将军问题。兰波特在论文中把问题简化成“命令官与副官”问题,并提出了几种解决办法。他同时已经证明在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此,在研究拜占廷将军问题的时候,已经假定信道是没有问题的,并在这个前提下,去做一致性和容错性相关研究。
拜占廷容错系统是指能够容忍拜占廷将军问题的系统。20世纪80年代的美国麻省理工学院德雷珀(Draper)实验室的FTMP和霍尼韦尔(honeywell)公司的MMFCS和斯坦福研究院(Stanford research institute,SRI)的SIFT,但拜占廷容错系统的性能一直是个瓶颈。直到1999年,M.卡斯特罗(Miguel Castro)和B.利斯科夫(Barbara Liskov)提出了实用拜占廷容错算法,即PBFT(practical Byzantine fault tolerance)算法,极大提高了拜占廷容错系统的性能,在这之后也出现了不少改进的方法。
拜占廷容错应用在很多分布式系统中。例如比特币,它是一个P2P的电子货币系统,是通过工作量证明和密码学的结合来克服拜占廷将军问题,从而构造一个全球的分布式系统。