“这一等价性让可能性与不可能性在两个抽象间迁移。FLP 不可能性说异步崩溃模型中确定性共识无法保证终止,等价性立即推出确定性原子广播同样不可能;Chandra–Toueg 用故障检测器刻画共识…”
形式陈述 ​
设至少两个进程运行一个确定性的二元共识协议。系统完全异步:没有进程速度、消息延迟或相对调度的已知上界;点对点信道不复制或伪造消息,发给正确进程的每条已发送消息最终且至多交付一次,但交付顺序与延迟任意。故障仅限至多一个进程在某一步后永久停止的 crash-stop。
把满足以下公平性与故障预算的无限执行称为可容许执行:至多一个进程 crash-stop,每个正确进程取得无穷多步,发给正确进程的每条消息最终交付。FLP 断言:对每个满足一致性与有效性的确定性协议,都存在一个这样的可容许执行,其中没有进程决定。因此该协议不可能再对所有可容许执行保证终止。
更精确地说,定理否定下面三项的同时成立:
- 一致性:任何两个作出决定的进程,即使其中一个稍后崩溃,也决定同一个值;
- 有效性:决定值来自允许的输入;证明只需用到全体输入均为
时只能决定 ; - 无条件终止:在每个上述可容许执行中,每个正确进程最终决定。
关键量词是
而不是“每个执行都不决定”,也不是“消息可能永久丢失所以无法决定”。反例执行仍满足对正确进程的公平调度与可靠交付。
直觉
证明反设协议同时满足三项性质,并把某一时刻所有进程的本地状态和在途消息合称为一个分布式配置。若从配置
第一步证明至少有一个双价初始配置。全
第二步是核心事件引理。对双价配置
有了事件引理,调度者不必永久扣住某一条特定消息。它公平枚举待交付消息与进程步骤,每轮先走有限条旁路,再履行当前义务,同时让新配置继续双价。于是每个正确进程仍不断取得步骤,发给它的每条消息也最终送达;但执行永远留在双价区,因此不含决定。不可区分性提供初始双价,事件可交换性则让调度者在不破坏可容许性的前提下反复绕开决定边界。
例子与边界
两进程协议中,进程
一个持续竞争的 Paxos 执行可以不断提高 ballot 而长期不决定,这为“安全但未必活”提供了具体图像;但它不是 FLP 证明本身。Paxos 一旦选定值仍保持一致性,其工程化活性通常依赖最终稳定的领导者和足够长的稳定通信期。FLP 允许协议在许多正常执行中迅速结束,只否定覆盖所有可容许执行的确定性终止保证。
改变任一关键假设都会进入不同问题。部分同步在未知时刻后提供时延界,故障检测器增加关于崩溃的信息,随机化协议把保证改为对随机选择以概率
推论与应用
FLP 把安全性与活性之间的差别变成了系统设计的硬边界。实现可以让一致性在任意异步时序下成立,却只能在额外的时序、领导权或随机性条件下承诺进展;超时器本身只是产生怀疑,若没有最终稳定假设,并不会把完全异步系统变成同步系统。
引用该定理时必须同时写明二元共识任务、完全异步、确定性协议、可靠信道、至多一个crash-stop,以及“协议对所有可容许执行终止”的被否定量词。故障检测器理论进一步追问:需要补充多强的、可能暂时犯错的信息,才足以恢复共识活性。这比把结论缩成“分布式共识不可能”更准确,也更能解释实际协议为何既尊重 FLP 又能在常见网络条件下工作。
参考资料
- Michael J. Fischer, Nancy A. Lynch, and Michael S. Paterson, “Impossibility of Distributed Consensus with One Faulty Process,” Journal of the ACM 32(2), 1985, pp. 374–382.
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, Ch. 12.