# 错误容忍
# 论文
# primary/backup
这篇 paper 提出了一种 VM 错误容忍的方法,简单来说就是设置 Primary/backup。primary 用于提供服务,而 backup 用于做 primary 的备份。如果 primary 挂掉之后,那么 backup 能够自动地接管服务,给外界 client 一种没有发生过故障的错觉。
该方法的核心思想就是保证 primary 和 backup 状态相同,方法也很简单。primary 执行什么操作,backup 也执行什么操作。如果有一个不确定的信息,那么这些信息会被 primary 传送给 backup。这样保证若 backup 和 primary 一直状态相同。
The Design of a Practical System for Fault-Tolerant
# 基本设计
首先是 shared disk 架构,如图所示:
只有 primary 会被暴露在网络中,所以 client 的输入都会输出给 primary。primary 的所有输出都通过 logging channel 给传送给 backup。
确定操作的三个要求:
- primary 必须捕获确定的和非确定的信息。
- 确地将输入和不确定信息应用到 backup
- 不能降低性能
# FT 协议
primary 将 output operation 传递给 backup,并推迟 output,知道 backup 返回确认。但是这也有一个问题,如果 primary 发送 output operation 后立即挂了,那么 output 也会被发送 2 次。但是 tcp 协议可以处理这些重复包。