Skip to content

故障检测器

Failure detector

按故障模式为进程提供受约束的怀疑集合、领导者等抽象输出。

条目类型
模型

形式陈述

在 Chandra–Toueg 框架中,故障模式 F 指定各时刻已崩溃的进程;故障检测器历史 H 指定每个进程在每个时刻获得的抽象输出。一个故障检测器 D 是映射

FD(F),

其中 D(F) 是与 F 相容的允许输出历史集合。这个一般定义不限制输出形状:P,P,S,S 输出怀疑集合,而 Ω 输出一个领导者标识。

完整性与准确性只是怀疑集合类检测器的性质。例如完美检测器 P 要求每个崩溃进程最终被所有正确进程永久怀疑(强完整性),且正确进程从不被怀疑(强准确性)。最终完美检测器 P 保留强完整性,只把准确性放宽为最终强准确性:存在有限时刻 T,此后没有正确进程被任何正确进程怀疑。

另一类检测器不输出怀疑集合。例如最终领导者检测器 Ω持续给出一个进程标识,并最终让所有正确进程永久指向同一个正确进程;稳定量词、实现边界与“共识最弱检测器”定理由专页承接。检测器总览只强调输出形状可以不同,不能把 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。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例