“把满足以下公平性与故障预算的无限执行称为可容许执行:至多一个进程 crash stop,每个正确进程取得无穷多步,发给正确进程的每条消息最终交付。FLP 断言:对每个满足一致性与有效性的确定…”
形式陈述 ​
设系统由一组进程与通信介质组成,行为由各组件的局部转移规则给出。一个执行是配置与事件交替出现的(有限或无限)序列
其中
- 故障上界:至多
个进程按指定故障类型(如崩溃故障)失效; - 通信可靠性:发送给正确进程的消息最终被交付;
- 公平性:每个未故障进程被调度无穷多次,或动作满足指定的弱公平、强公平条件;
- 同步界:若模型为同步或部分同步,进程步伐与消息延迟满足相应上界。
算法性质一律量化于所有可容许执行:断言"算法满足性质
直觉
转移规则只回答系统"能做什么",不回答环境"会做什么"。同一套代码,放进消息可能永远丢失的网络与放进最终必达的网络,能证明的结论完全不同,所以规格里必须有一个明确位置存放"环境承诺"。可容许性就是这个位置:状态机先枚举一切物理上可能的动作交错,可容许条件再筛掉模型明确不打算处理的场景——超过
例子与边界
取异步消息传递模型,假设"至多一个进程崩溃、发给正确进程的消息最终交付、每个正确进程被调度无穷多次"。此时所有进程都走无穷多步且无消息丢失的执行是可容许的;进程
两个常见误用值得单独指出。其一,"异步可靠信道允许任意长但有限的延迟"不同于"延迟存在已知上界":前者是异步模型,后者已经是同步假设,混同二者等于偷换时间模型。其二,FLP 不可能性所构造的永不终止执行完全满足其模型的可容许条件——每个进程走无穷多步、每条消息最终交付、实际可以无故障——因此以"这种调度不现实"为由拒绝它不能反驳定理;想绕开定理,只能显式修改模型,即收紧可容许执行的集合。
在异步系统的可靠信道模型中,可容许执行通常允许任意有限延迟,却要求发给非故障进程的消息最终到达。一个执行若永久不调度某个正确进程,可能违反进程公平性。FLP 证明构造的无限执行需同时保持相应公平条件,不能简单理解为“攻击者停止所有消息”。
推论与应用
可容许执行是分布式算法规格的承重结构:故障模型、调度公平性与网络假设全部经由它进入定理陈述。分布式共识、领导者选举与自稳定算法的正确性都写成“在所有可容许执行中满足某性质”的形式,其中安全性与活性分别承担“任何前缀不出错”与“最终有好事发生”两类断言。轨迹语义给出被量化的执行对象,公平性约束从中筛选环境承诺允许的无限轨迹;时序逻辑或模型检查算法再判断性质,不能反过来替规格偷偷补入公平假设。证明 deadlock-free、lock-free 或个体无饥饿时,必须明确进程是否持续取步骤、动作是持续使能还是反复使能,以及故障进程是否仍在量化范围内。
可解性与不可能性的分界同样由可容许集合的大小决定:加入同步界或故障检测器等假设会收紧集合,使更多任务可解;放宽假设则相反。比较两个算法或两条不可能性结果时,第一步永远是核对它们的可容许执行集合是否一致。
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。
- Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chs. 1–18。