知识卡片

松散连接的进程对比完全锁步更能避免同一个bug同时击垮两份副本

普通读书笔记卡 · 1810.c

内容

若让主备进程完全同步执行相同指令序列(锁步),一旦触发时序相关错误,两进程会同一时刻遇到相同错误同时崩溃,容错形同虚设。Guardian让主备只通过检查点做松散状态同步而非逐条锁步,执行路径天然存在差异,这种故意不完全一致反而降低了两副本被同一bug同时命中的概率,让容错面对软件缺陷时更可靠。

参考来源

- 位置:《架构之美》第8章《Guardian:一个容错操作系统环境》8.8.2节《同步》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0181.xhtml) - 结论依据:原文明确"这种方式是非常可靠的,它可以提供比纯粹的锁步(lockstep)方式更好的可靠性。在一些程序错误中,特别在竞态条件(race condition)下,以锁步方式运行的进程会遇到完全相同的程序错误,还会崩溃。采用连接比较松散的方式通常可以避免完全相同的情形并使程序继续执行"。 - 原始内容:这种方式是非常可靠的,它可以提供比纯粹的锁步(lockstep)方式更好的可靠性。在一些程序错误中,特别在竞态条件(race condition)下,以锁步方式运行的进程会遇到完全相同的程序错误,还会崩溃。