“设至少两个进程运行一个确定性的二元共识协议。系统完全异步:没有进程速度、消息延迟或相对调度的已知上界;点对点信道不复制或伪造消息,发给正确进程的每条已发送消息最终且至多交付一次,但交付顺序与…”
形式陈述 ​
在异步消息传递系统中,不假设存在已知常数可以上界消息延迟、正确进程两步之间的间隔或不同进程的相对速度;协议也没有可用于正确性证明的共享全局时钟。对任意有限等待阈值
异步性只删去时间上界,不决定可靠性与故障。常见可容许执行另外要求:每个正确进程取得无穷多步,发给正确进程的每条消息最终交付,故障数不超过预算。于是允许的延迟可以任意大,却必须在每条具体公平执行中是有限的;永久丢失属于信道故障,永久停止取步的进程则要么崩溃、要么违反调度公平性。
直觉
异步调度者可以把任何关键事件推到更晚,却不能违反另行承诺的最终交付与公平性。协议观察到的只是一个有限前缀;在这个前缀之后,沉默节点既可能已经崩溃,也可能下一步就恢复运行。两条执行对观察者不可区分,因此超时只能产生怀疑,不能成为无条件的故障证明。
异步模型中的安全证明通常更稳健:消息再慢也不能制造两个决定。活性却需要排除对手永远在关键点改变领导者或延迟消息的能力,往往必须引入最终领导、部分同步或随机化。
例子与边界
进程
一条公平异步执行还可让第
崩溃故障与公平性都独立于时序模型。“正确”只表示未崩溃;要保证它继续执行,还须在可容许执行中加入进程公平性。异步也不消除本地顺序与消息因果,因果广播仍可保持 happens-before;缺失的是可用于截止期推理的时长界。
推论与应用
FLP 不可能性表明:完全异步、确定性、可靠消息并允许一次 crash-stop 时,不存在覆盖所有可容许执行的共识终止保证。它没有否定正常调度下快速决定,也没有削弱协议的安全不变量。
故障检测器把关于崩溃的额外信息显式做成 oracle;最终领导者检测器
实践系统通常借随机化或部分同步补入活性所需的信息;在最终时序稳定后,自适应超时才可能具体化 Ω 一类接口。Paxos 等协议由此形成“异步下保安全、时序稳定后求进展”的分工。理解协议时,应分别说明纯异步执行中保住什么,以及活性额外依赖哪个 oracle 或时间假设。
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, Chapters 8 and 14。
- Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004, Chapter 2。
- Cynthia Dwork, Nancy Lynch, and Larry Stockmeyer, “Consensus in the Presence of Partial Synchrony,” Journal of the ACM 35(2), 1988, pp. 288–323。