分布式系统中的时间抽象与故障处理
1. 引言
在分布式系统中,不同的系统假设(异步、同步、部分同步)各有优劣,适用于特定环境。为了更好地处理系统中的故障和协调进程,我们引入了故障检测器和领导者选举等抽象概念。
2. 故障检测
2.1 系统假设与故障检测需求
- 异步系统没有时间假设,进程和链路抽象直接体现了这一点,但不足以定义同步和部分同步系统。
- 直接为进程和链路抽象添加时间保证会使规范过于复杂,因此引入故障检测器抽象。
2.2 故障检测器的优势
- 避免扩展进程和链路抽象,保持其简单性。
- 可以使用公理性质推理故障检测器的行为,避免显式引用物理时间带来的错误。
2.3 不同类型故障对故障检测的影响
- 崩溃故障 :当远程进程仅可能发生崩溃故障时,通过让远程进程定期执行某些操作,观察者可以准确检测到其崩溃。
- 任意故障(拜占庭故障) :拜占庭进程使得故障检测抽象难以实现,其输出可能不太有用。因为攻击者会使进程在算法中表现正常,难以被检测到。
2.4 故障检测的流程
graph LR
A[观察者进程] --> B[要求远程进程定期执行操作]
B --> C{远程进程是否停止操作}
C -- 是 --> D[判