回滚恢复协议:原理、比较与实现
1. 日志记录协议与恢复方式
日志记录协议需要有效的垃圾回收算法。悲观协议只需保留每个进程的最新检查点,而乐观协议可能需要保留多个检查点。例如,P2 失败会迫使 P1 从检查点 B 而非最新的检查点 D 重启。此外,由于决定因素是异步记录的,乐观日志记录协议中的输出提交通常需要多主机协调,以确保任何故障情况都不会撤销输出。
乐观日志记录协议的恢复可以是同步或异步的:
- 同步恢复 :所有进程运行恢复协议,根据依赖和记录信息计算最大可恢复系统状态,然后执行实际回滚。在无故障执行期间,每个进程在每个状态间隔开始时增加状态间隔索引。依赖跟踪可以是直接或传递的。
- 直接依赖跟踪 :发送者的状态间隔索引会附加在每个传出消息上,使接收者能直接记录消息引起的依赖。恢复时可以将这些直接依赖组合起来,以获得完整的依赖信息。
- 传递依赖跟踪 :每个进程 Pi 维护一个大小为 N 的向量 TDi,其中 TDi[i] 是 Pi 的当前状态间隔索引,TDi[j](j ≠ i)记录 Pi 依赖的 Pj 的任何状态间隔的最高索引。传递依赖跟踪通常会在无故障时带来更高的开销,但允许更快的输出提交和恢复。
- 异步恢复 :失败的进程通过发送回滚公告广播或恢复消息广播来启动新的实例。收到回滚公告后,如果进程检测到自己相对于该公告成为孤立进程,则会进行回滚,并广播自己的回滚公告。由于同一进程的多个实例的回滚公告可能在系统中共存,每个进程通常需要跟踪其状态对所有进程的每个实例的依赖,以正确检测孤立状态。可以通过延迟
超级会员免费看
订阅专栏 解锁全文
1107

被折叠的 条评论
为什么被折叠?



