Mako: Speculative Distributed Transactions with Geo-Replication (OSDI 2025)
一句话总结:把 2PC 与 geo-replication 解耦——shard leader 间推测性 2PC、复制后台跑,用 distributed vector clock + vector watermark 把失败回滚限在 epoch 内,TPC-C 10 shard×24 thread 达 3.66M txn/s,比 SOTA geo-replicated 系统高 8.6×。
问题与动机
Spanner/FaRM 把 2PC 每步同步 geo-replicate,WAN 延迟主宰 critical path,吞吐比单机多核 DB 低千倍。Tapir/Janus 等反而更紧耦合协调与复制。Mako 论点:WAN 下应进一步解耦——leader 内快速 speculative execute+certify,Paxos 复制异步跟进,客户端仍等复制完成才 ACK(强一致)。
关键观察 / 隐含假设
- 观察 1:geo-replication 下提高并发反而因争用降吞吐——transactional workload 与 ML 不同,不能靠 inflight 堆满掩盖 WAN RTT。
- 依赖假设:shard leader 常同 datacenter 共址(Uber/Lyft 类地理分片);跨 DC leader 时用 DPDK 仍不够抵消 WAN。
- 可能失效场景:跨 DC 2PC 主导、leader 故意分散;极高冲突 TPC-C 变体。
- 观察 2:speculative 2PC 在 participant 复制前失败会导致级联 abort——细粒度依赖追踪太贵;vector clock 粗粒度 pairwise 可比即可界定回滚范围。
- 依赖假设:epoch 边界集体决策可接受部分 healthy shard 回滚;CM replicated 始终存活。
- 可能失效场景:百万 shard 时 vector clock 宽度与 gossip 开销——论文 §6.1 讨论压缩但未 production 验证。
- 假设 1:per-core Paxos stream + batch(400 txn)可匹配 leader 多核吞吐,无需全局串行 log。
- 证据强度:强;与 Rolis/Silo 路线一致且有 batch watermark 扩展。
核心方法
阶段:Execute(分布式 OCC)→ Certify(Lock/GetClock/Validate/Install 四轮 RPC,实质 2PC)→ Replication(per-core MultiPaxos stream)→ Replay(vector watermark 安全推进)→ client ACK 当 txn version ≤ watermark。
Vector clock:n 维,certify 时取 involved shard max 组合;保依赖单调。
Failure:epoch 递增;follower progress-check;粗粒度 rollback 受影响 txn;healthy shard 写 INF 结束 entry 缩小回滚。
设计取舍
- 取舍 1:单 DC 无 geo 时比紧耦合 RDMA 系统慢 ~50%——设计目标本就是 WAN。
- 取舍 2:向量时钟粗粒度→可能多 abort 一些无关节点,换 O(1) 依赖元数据。
- 边界条件:Azure 评测;TPC-C + 多 baseline(Calvin、FaRM、Spanner 类等)。
实验与结果
- 10 shards×24 threads:3.66M TPC-C txn/s;8.6× vs SOTA geo-replicated。
- 单 DC:比 RDMA 紧耦合方案低 50%(预期 trade-off)。
- Calvin 等 log-order 方案:吞吐受 replay 限制(§7 实证)。
- Latency:与同步复制方案相近(复制仍 dominate client 等待)。
Critical Analysis
论证链条
「解耦→推测→2PC 失败级联」问题识别准确;epoch+vector watermark 是针对「2PC 非 fault-tolerant」的专门发明,文献调研(§5.1)说明非 trivial。与 Aurora/Rolis 流水线相似但多 shard watermark 扩展是贡献。
假设压力测试
- 已证明:Azure geo 设置下吞吐碾压;争用实验支持「高并发无益」论点。
- 可能失效:极端冲突下推测 abort 风暴;CM 故障恢复复杂度;跨 shard 全失败 3PC 同样级联——Mako 不 magic。
- 论文未覆盖:交互式长事务;与 Spanner TrueTime 语义对比的 client 延迟 tail。
实验可信度
Baseline 选取代表性强;8.6× 醒目但依赖特定 shard/thread 配置。单 DC -50% 诚实披露。
系统性缺陷
实现复杂(OCC+2PC+Paxos+watermark+epoch);运维 CM;vector clock 扩展性待观察;client 仍等 WAN 复制→延迟非 Spanner 级「感觉」。
局限与 Future Work
- 局限 1:非 geo 场景不占优;推测失败时 epoch 回滚仍影响吞吐。
- 局限 2:百万 shard vector clock/watermark gossip 成本。
- Future work 1:压缩 vector clock 与 cross-epoch 增量 watermark 的生产测量。
- Future work 2:与 disaggregated storage / 持久内存 shard 结合时的 2PC 恢复。