Skip to content

故障检测器

Failure detector

为进程提供关于其他进程是否故障的可能不可靠怀疑信息的抽象。

形式陈述

故障检测器是分布式算法可查询的抽象模块,持续输出被怀疑已崩溃的进程集合。其规格由完整性与准确性组成:例如完美检测器 P 要求每个崩溃进程最终被所有正确进程永久怀疑(强完整性),且任何正确进程从不被怀疑(强准确性);最终完美检测器 P 只要求某个有限时刻后不再误判正确进程。检测器可不可靠,其价值在于精确标记为解决任务额外假设了多少时序信息。

直觉

纯异步系统无法区分“节点已死”和“节点只是极慢”;故障检测器把这种不确定时间信息封装成可有误差但受性质约束的提示。

例子与边界

基于超时的实现可能暂时怀疑一个网络拥塞但仍正确的节点,因此不满足始终准确,却可能在网络最终稳定后满足最终准确。在完全异步、消息延迟无上界的系统中,不能仅靠通信实现既永不误判又及时发现所有崩溃的完美检测器。检测器输出是怀疑,不是不可撤销事实,除非规格明确要求永久性。

推论与应用

Chandra–Toueg 框架用不同检测器类别刻画异步共识、原子广播等问题的可解性。工程中的心跳和租约可视为在部分同步假设下逼近某类检测器。

参考资料
  • 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。