“状态机提供确定性转移语义,复制日志提供共同命令前缀;Paxos、Raft与Viewstamped Replication是日志层的具体协议。状态机复制由此支撑高可用键值存储、配置服务、数据库…”
形式陈述 ​
视图戳复制(VR)是实现复制日志的崩溃容错协议。每次 view change 都按 view 规则选出新的 primary,可视为协议内部的一次领导者选举;在每个 view 中,由 primary 为客户端操作分配递增序号并复制到quorum;操作达到足够副本后提交。primary 失效时执行 view change,新 primary 收集 quorum 状态并选择必须保留的日志前缀。相交集合中的持久记录保证已提交操作不会在视图切换中消失。
直觉
VR 用 view 编号区分历代 primary,用 operation 编号定位日志顺序。正常视图中 primary 只在操作获得 quorum 后提交;视图变更从相交 quorum 收集日志,选择包含最先进安全前缀的新 primary 状态。由于任意两个
例子与边界
三副本容忍一个崩溃。primary 将操作号 10 复制到自身与一个 backup 后形成多数;即使随后崩溃,新视图的两个参与者至少包含这两个中的一个,view-change 记录可把操作 10 带入新日志。客户端重试同一请求时,唯一 client-id/request-number 使副本返回缓存结果而不重复执行。若副本可发送冲突伪造日志,崩溃版 VR 的 quorum 假设不足,需要 BFT 协议。
推论与应用
VR 用 view 编号、operation 编号、正常复制与 view change 具体维护复制日志,再由状态机复制应用 committed 操作。它与 Paxos、Raft共享 quorum 相交这一安全骨架;VR 的语义中心是 primary 更替时怎样继承证据,而不是再次定义复制日志接口。
安全依赖日志证据跨视图保留,活性则依赖最终稳定的时序与正确 primary。工程实现还需 checkpoint、日志截断、客户端去重和成员配置变更,才能把论文级安全前缀变成持久服务。
参考资料
- Barbara Liskov and James Cowling, Viewstamped Replication Revisited, MIT-CSAIL-TR-2012-021, 2012,full technical report。
- Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。