两种主备方式
- 一、把主服务器的整个状态实时地传输到备用服务器。(包括CPU、内存、IO设备的状态,所以需要很大的带宽)
- 二、副本状态机(replicated state machine)。把服务器抽象成一个确定性的状态机。
- 确定性状态机满足这样的性质:只要初始状态一样,得到的输入一样,输入的顺序也一样,那么它产生的输出和最终状态也是一样的。
- 确定性状态机假设下,需要传输的内容就比较少了。主服务器只要传输“输入”给备用服务器。备用服务器照着输入执行一遍,得到的输出和最终状态也是一样的。
Output Rule
为什么要有Output Rule?
- 设想假如没有output rule
- 主服务器立刻发出了输出
假设主服务器看到了输入I1、I2、I3,并且发出了相应的输出 - 备用服务器看到了I1、I2的日志
- 主服务器崩溃了,I3的日志没有发送出去。
- 于是,备用服务器不会看到 I3 这个输入。所以不会产生相应的输出。
- 但是有些客户端已经收到了与I3对应的输出。
- 客户端所看到的,与备用服务器的现状不符合!
- 所以要有
输出规则
: 主服务器对将要做的输出
存而不发,直到与产生这个输出的相应输入日志已经发到备用服务器(也就是说,备用服务器执行完这些日志,能产生这个输出),并且备用服务器确认已经收到了,然后主服务器才真正向外界发出这个输出。 - 这满足了,如果备