形式陈述
若所有副本从相同初始状态开始,状态转移是确定的,并按相同全序执行同一命令序列,则每一步后副本状态和输出都相同。共识或原子广播用于让正确副本就命令顺序达成一致。
直觉
与其不断同步整个状态,不如让副本先对“接下来执行哪条命令”取得一致,再各自在本地重放同一计算。
例子与边界
复制日志、配置服务和数据库元数据常采用该方法。读取系统时间、随机数或外部服务会引入非确定性,必须转化为已排序输入或通过协议协调。
推论与应用
Paxos 与 Raft 常作为复制日志的共识层;状态机复制进一步支撑高可用键值存储、协调服务和区块链执行模型。
参考资料
- Fred B. Schneider, “Implementing Fault-Tolerant Services Using the State Machine Approach,” 1990.
- Leslie Lamport, “The Part-Time Parliament,” 1998.