Skip to content

分布式共识

Distributed consensus · Consensus problem

多个进程在可能故障和通信延迟下对一个值达成一致的任务。

条目类型
定义

形式陈述

固定一个消息传递系统中的参与进程集合 Π、提议值域 V、故障上界、信道与时序条件,并由此得到可容许执行集合 A。每个进程 p 以输入 vpV 启动,并至多一次执行不可撤销的 decidep(v)。一种常用的 crash consensus 规格要求,对每个 αA

  • 完整性:每个进程至多决定一次;
  • 统一一致性:任何两个已经决定的进程,即使其中一个稍后崩溃,也决定相同值;
  • 提议有效性:若某进程决定 v,则 v=vq 对某个参与进程 q 成立;
  • 终止性:每个正确进程最终决定。

有些文献只约束正确进程的决定,称 non-uniform agreement;有些有效性只要求全体输入相同时决定该值,或要求决定通过外部验证谓词。拜占庭模型还要决定是否只采信正确进程提议。引用“共识”结论时,必须同时给出这些版本与 A 的故障、公平性和可靠性量词。

完整性、一致性与有效性属于安全性:有限前缀即可见证违例。终止性是活性,只有在正确进程持续取步、足够消息最终交付以及故障数未超预算的执行中才有含义。

直觉

每个进程只有局部消息前缀,却要作出全局唯一且不可撤销的决定。早决定可能漏掉相反提议,永久等待又违背终止。协议把安全证据做成跨轮次可继承的投票记录,并把活性押在某种最终协调条件上。

多数相交只提供证据相遇的机会。交点进程若可以在两个轮次无条件支持不同值,两个多数仍可能分别批准冲突结果;ballot、任期、锁定或继承规则才决定交点携带什么。

共识:一致决定一个已提议值
例子与边界

二值共识中,“总决定 0”满足完整性、一致性和终止性,却在所有进程输入 1 时违反有效性。相反,“决定自己输入”满足有效性与终止性,却在不同输入执行中违反一致性。三类性质排除了两种平凡逃避。

三个投票者 A,B,C 展示 quorum 仍需状态规则。若第一轮 A,B 都投 x,第二轮 B,C 又可无条件投 y,则多数 {A,B}{B,C} 虽在 B 相交,x,y 仍分别获多数。安全协议必须让 B 的旧证据约束第二轮提案,或禁止它作不相容投票。

两阶段提交决定分布式事务提交或中止,prepared 参与者在协调者故障后可能阻塞。用共识复制提交决定可消除单协调者这一故障点,但 2PC 本身没有在异步 crash 模型中提供 nonblocking consensus。

FLP 不可能性说明完全异步、确定性、可靠消息且允许一次 crash 时,某个可容许调度可以永不决定。PaxosRaft仍能在所有这类时序下保持安全;它们的终止证明另加稳定领导、可达多数与部分同步条件。拜占庭共识又需更大交集与认证假设,不能把 crash 多数公式直接搬过去。

推论与应用

消息传递中,最终领导者检测器 Ω 刻画异步 crash consensus 所需的最终协调信息;Paxos、Raft 与 Viewstamped Replication 把一系列实例填入复制日志。共享内存的共识数层级则按对象类型能为多少进程 wait-free 地解共识分类原语,执行模型与可用对象不同,不能直接沿用消息阈值。

共识与原子广播在固定成员、可靠通信和相同 crash/终止假设下相互归约。原子广播到共识:广播各自提议并决定第一条全序交付消息。共识到原子广播:可靠传播待排序消息,按日志索引反复调用共识决定下一批,并用确定规则排列批内消息;终止还要保证待处理消息不被永久饿死。等价指可解性相互归约,不表示一个 one-shot 实例自动提供无限日志。

协议验证常把 agreement 化为配置上的归纳不变式,把 termination 写成对公平无限执行的性质。模型检查可以找出双决定或永不进展的调度,却不能替规格补入遗漏的公平性与故障上界。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, Chapter 6.
  • Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chs. 5–6。
  • Tushar D. Chandra and Sam Toueg, “Unreliable Failure Detectors for Reliable Distributed Systems,” Journal of the ACM 43(2), 1996, pp. 225–267。
关系图谱18 个相邻概念 · 5 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系