“引用该定理时必须同时写明二元共识任务、完全异步、确定性协议、可靠信道、至多一个crash stop,以及“协议对所有可容许执行终止”的被否定量词。故障检测器理论进一步追问:需要补充多强的、可…”
形式陈述 ​
在 Chandra–Toueg 框架中,故障模式
其中
完整性与准确性只是怀疑集合类检测器的性质。例如完美检测器
另一类检测器不输出怀疑集合。例如最终领导者检测器 Ω持续给出一个进程标识,并最终让所有正确进程永久指向同一个正确进程;稳定量词、实现边界与“共识最弱检测器”定理由专页承接。检测器总览只强调输出形状可以不同,不能把 completeness/accuracy 机械套到 leader 标识上。
直觉
纯异步系统无法在有限观察内区分“节点已死”和“节点只是极慢”:消息可能只是迟到,进程也可能已经崩溃。故障检测器把这种无法可靠实现的判断封装成一个可能犯错、但受性质约束的预言接口。其强弱由完整性和准确性描述:是否最终怀疑真正崩溃者,是否会误怀疑正确进程。关键不在于检测器是否绝不出错,而在于它容许哪些暂时错误、从何时起必须稳定。
例子与边界
超时器是典型实现:进程在截止时间前未收到心跳便被怀疑。网络拥塞或偶发长延迟会使正确节点暂时遭到误判,因此这种实现不满足始终准确;在部分同步条件下,延迟最终受界后可逐步调大超时,使正确进程最终不再被怀疑。完全异步且消息延迟无上界时,仅靠通信无法实现同时具备强完整性和强准确性的完美检测器;最终完美检测器则允许有限时期的误判。
检测器输出的是怀疑,而非不可撤销的事实,除非规格明确要求永久性。因此,“未怀疑”不等于进程健康,“被怀疑”也不等于进程已经崩溃,协议必须相应地容忍提示被撤回或修正。
推论与应用
异步系统与崩溃故障造成的不可区分性解释了为何需要该抽象。Chandra–Toueg 框架用不同检测器类别刻画异步共识、原子广播等问题的可解性;适当的检测器能越过FLP 不可能性的活性障碍。检测器允许的输出历史会扩展系统的轨迹集合,完整性、准确性或最终领导者是对这些历史的规格;若用模型检查验证使用它的协议,必须把这一环境约束显式编码,而不能把暂时正确的超时样本当作检测器定理。Ω 类把所需信息压缩为最终共同 leader,但“最弱”只在指定崩溃、通信与归约模型中成立。
工程中的心跳可以在部分同步假设下近似怀疑集合或 Ω;租约和 fencing 还要求时钟及外部写入规则,不是故障检测器输出的自动结果。
参考资料
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 10–12, failure information and asynchronous agreement。
- Tushar D. Chandra and Sam Toueg, “Unreliable Failure Detectors for Reliable Distributed Systems,” Journal of the ACM 43(2), 1996,Full paper, completeness/accuracy classes of unreliable failure detectors。