“原子广播是状态机复制的直接排序手段。本页的统一前缀版本与 uniform 分布式共识在固定成员、匹配的 crash/termination 规格及普通可靠广播的辅助传播下可相互归约(见共识与…”
形式陈述
本库的分布式主线可按“可靠广播 → 共识 → 原子广播及其等价定理 → 状态机复制”阅读:可靠广播先固定消息传播与去重责任,共识决定一个值或一个日志位置,本页证明连续共识与全序交付可以互相构造,状态机复制再消费这条一致日志。本页只承担中间的等价定理,不重复定义四个相邻抽象。
固定进程集合
辅助可靠广播采用本库的普通 crash 版本:正确发送者的消息最终到达所有正确进程,正确进程一旦可靠交付,其他正确进程也最终可靠交付,且任何进程都不交付伪造或重复消息。这里不额外要求 uniform reliable agreement。每条待排序消息包含全局唯一的 ID 与完整 payload;crash-stop 进程停止前遵守协议,不会为同一 ID 伪造不同内容。
用原子广播实现共识:每个进程广播自己的提议值,并决定自己交付的第一条消息所含的值。统一前缀保证任何两个已决定进程,即使后来崩溃,也取得同一首条消息。
用共识实现原子广播时,先可靠传播完整消息,再依次运行编号为
决定已经给出了完整内容,因此不再等待本地另一次可靠交付。例如一个进程独自可靠交付
安全性按槽位归纳:uniform 共识使所有决定该槽位的进程取得同一消息集合,固定批内排序和 ID 去重再给出共同交付前缀。决定值来自真实提案,每个提案又只含可靠交付过的消息,因此没有伪造;后来崩溃进程交付过的批次,也会随正确进程完成同一槽位而被交付。
还须排除消息饥饿。对正确进程广播的
这一定理不覆盖动态成员或成员重配置,也不把 crash-stop 归约自动提升为拜占庭版本。后两类模型需要重新定义合法消息、认证、法定人数和活性条件,再分别证明归约。
直觉
原子广播的实质是维护一本所有人一致的日志,而日志无非是"接连不断地回答'下一项是什么'";每一次回答恰好是一个共识问题,所以无穷次共识拼出原子广播。反方向更轻:全序交付的第一条消息本身就是一次全体一致、来源合法且人人可得的决定。这个等价把两个表面不同的抽象钉在同一难度等级上——一个是"就一个值达成一致"的一次性任务,一个是"永远保持同序"的持续性服务,理论上却互为改写。由此得到的方法论收益是双向搬运:关于共识的任何可能性、不可能性或最弱假设刻画,都自动成为关于原子广播的同类结论,反之亦然。
例子与边界
把"原子广播实现共识"的方向走一遍即可看到各性质如何对号入座:设进程
边界方面:仅有可靠广播不足以替代原子广播——它保证消息集合一致却不统一顺序,不同副本按不同交错写日志立即分叉。单独一次共识也不够——一个实例只能决定有限信息,为无穷多条消息定序需要无穷多个实例(或改用多决策的共识变体)。若改变两侧的 uniform 范围、辅助广播的传播责任或终止性量词,即使名称仍叫“共识”和“原子广播”,也须重新证明这些步骤;本页只证明上述 uniform 共识与统一前缀广播版本,其他版本须分别核对已交付消息与故障进程的量词。
推论与应用
这一等价性让可能性与不可能性在两个抽象间迁移。FLP 不可能性说异步崩溃模型中确定性共识无法保证终止,等价性立即推出确定性原子广播同样不可能;Chandra–Toueg 用故障检测器刻画共识可解性的结果,也可转用于原子广播。
工程上,反复运行共识为序列位置填值,可实现复制日志的 committed 前缀;把日志条目按序送入确定性状态机,便得到状态机复制。归约保证的是一致且持续推进的交付序列;本地未提交尾部如何恢复、已交付命令如何持久应用,仍由复制日志和状态机实现分别承担。
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 14–17, consensus and total-order broadcast reductions。
- Tushar D. Chandra and Sam Toueg, “Unreliable Failure Detectors for Reliable Distributed Systems,” Journal of the ACM 43(2), 1996,§7、Figure 7:共识决定完整消息集合后直接交付。本文另明确 uniform 前缀目标所需的一致性和持续实例参与条件。