第4章:协议设计派系全图 —— DM 事务的 6 个二选一
把 DM 事务领域的设计选择拆成 6 个二选一维度(OCC/2PL、单版本/MVCC、集中锁/分散锁、有 leader/无 leader、同步 validate/异步、单边/混合 verbs),把所有系统填进派系矩阵
第 3 章按问题维度拆了 8 条主线,本章换成”协议设计派系”——把领域所有论文按 6 个二选一维度归类。这 6 个维度构成了 DM 事务的”协议基因图谱”——任何系统都是 6 维空间里的一个点。读完你应该能拿到这个领域所有 30+ 篇论文的派系归属,并能解释每对二选一背后的工程权衡。这是看任何新论文时**最快定位”它是哪一派”**的工具。
📑 目录
- 1. 6 个二选一维度
- 2. 派系 D1:OCC vs 2PL
- 3. 派系 D2:单版本 vs MVCC
- 4. 派系 D3:集中锁 vs 分散锁
- 5. 派系 D4:有 leader vs 无 leader
- 6. 派系 D5:同步 validate vs 异步
- 7. 派系 D6:单边 verbs vs hybrid
- 8. 完整派系矩阵
- 9. 派系演化趋势
- 自我检验清单
- 参考资料
1. 6 个二选一维度
D1: 并发控制 OCC ←→ 2PL
D2: 版本 单版本 ←→ MVCC
D3: 锁权威位置 集中(MN) ←→ 分散(CN)
D4: leader 模型 有 leader ←→ 无 leader
D5: validate 同步 ←→ 异步/流式
D6: verbs 单边主路径 ←→ hybrid 单边+双边
每个维度独立选择,6 维构成 64 个理论组合(实际只有约 10 个被探索过)。
🌟 关键事实:所有 DM 事务系统都用 OCC(D1=OCC)——这一维几乎没有分歧。其他 5 维都有真实派系存在。
2. 派系 D1:OCC vs 2PL
2.1 派系定义
| 派系 | 协议 | 特征 |
|---|---|---|
| OCC | 乐观并发控制 | 不取锁,commit 时验证 |
| 2PL | 两阶段锁 | 事务开始时取锁 |
2.2 为什么 DM 几乎全选 OCC
第 1 章已经详细论证。简短总结:
| 问题 | 2PL | OCC |
|---|---|---|
| 远端等待语义 | 必须(远端线程持锁) | 不需要 |
| 死锁检测 | 必须(远端协议) | 不存在死锁 |
| 适合 DM 吗 | ✗ | ✓ |
2.3 派系归属
OCC 派(几乎全部):
─────────────────
FaRM, DrTM, FaSST, DrTM+H, FORD, Motor,
Outback, Outpost, LOTUS, CREST, AURA, ...
2PL 派:
────────
(无主流 DM 系统选 2PL)
🌟 结论:D1 维度上,DM 事务是单一派系——全部 OCC。
3. 派系 D2:单版本 vs MVCC
3.1 派系定义
| 派系 | 含义 | 适合场景 |
|---|---|---|
| 单版本 | 每个 record 只有一个最新版本 | 写多 + 短事务 |
| MVCC | 保留多个历史版本 | SI 隔离 + 长事务(snapshot 读) |
3.2 关键 trade-off
| 维度 | 单版本 | MVCC |
|---|---|---|
| 内存占用 | 低 | 高(多版本) |
| 读写阻塞 | 写阻塞读 | 写不阻塞读 |
| GC 复杂度 | 无 | 高 |
| 隔离级别 | SR | SI / SR |
| 事务时长 | 短适合 | 长事务也 OK |
3.3 派系归属
单版本派:
────────
FaRM, DrTM, FaSST, DrTM+H, FORD, AURA-baseline
MVCC 派:
────────
Motor (OSDI'24)
Outpost (ASPLOS'24,可选 MVCC)
↑ 这两个是 MVCC 在 DM 上的代表
3.4 DM 上 MVCC 的特殊挑战
第 3 章 §6 已经详细讨论。核心难点:
- 版本表布局:inline vs chain
- GC 协调:CN 主导 GC(MN 不参与)
- 一致快照:全局 ts 来源(Motor 用 epoch + lease)
3.5 派系预测
⭕ 互补:未来 5 年 MVCC 会进一步成为主流——更多 OLTP 工作负载需要 SI 隔离。Motor 之后会有更多 MVCC 论文。
4. 派系 D3:集中锁 vs 分散锁
4.1 派系定义
| 派系 | 锁权威位置 |
|---|---|
| 集中锁(MN-side) | 锁字在 MN 内存,CN 通过 RDMA CAS 操作 |
| 分散锁(CN-side static) | 应用提供 critical field,每个 key 静态分配到一个 CN |
| 分散锁(CN-side dynamic) | 在线学习 cohort,动态调整 |
4.2 关键 trade-off
| 维度 | 集中锁 | 分散静态 | 分散动态 |
|---|---|---|---|
| atomic IOPS 压力 | 高 | 低 | 低 |
| 应用先验 | 无 | 必须 | 无 |
| 漂移工作负载 | OK | 退化 | 自适应 |
| 实现复杂度 | 低 | 中 | 高 |
4.3 派系归属
集中锁派(最多):
─────────────────
FaRM, DrTM, FaSST, DrTM+H, FORD, Motor, CREST baseline
分散静态派:
──────────
LOTUS (arXiv'25)
分散动态派:
──────────
AURA (本路线主体)
4.4 派系演化方向
集中(FaRM ... FORD ... Motor)
│
│ 撞墙:atomic IOPS 上限
▼
分散静态(LOTUS)
│
│ 撞墙:应用先验、漂移退化
▼
分散动态(AURA)
│
│ 撞墙:实现复杂、跨 cohort 退化
▼
未来:分散动态 + ML 预测?多副本 owner?
🌟 结论:D3 维度是 DM 事务过去 12 年最活跃的维度——FaRM → FORD → LOTUS → AURA 这条主线就是 D3 的演化。
5. 派系 D4:有 leader vs 无 leader
5.1 派系定义
| 派系 | 含义 |
|---|---|
| 有 leader | 某个节点是协调者(事务排序、版本仲裁等) |
| 无 leader | 所有 CN 平等,靠协议自身保证一致 |
5.2 关键 trade-off
| 维度 | 有 leader | 无 leader |
|---|---|---|
| 协议复杂度 | 低(leader 决定一切) | 高(协议必须自洽) |
| 单点风险 | leader 故障 | 无 |
| 性能 | leader 是瓶颈 | 完全分散 |
| 工业接受度 | 高(Spanner / Cockroach) | 中 |
5.3 派系归属
有 leader 派:
──────────────
- 大多数 DM 系统**有"轻量 leader"**:
- FaRM 有 config service(基于 Paxos)
- LOTUS / AURA 有 OwnerMapPublisher(单 leader publisher)
- Motor 有 timestamp coordinator
完全无 leader:
──────────────
- 真正完全无 leader 的 DM 系统不多
- 接近的是 FORD(commit 路径无 leader,但 config 仍需 Paxos)
5.4 一个语义陷阱
⭕ 互补:“有 leader” 和 “Paxos-based”是两件事:
- 大多数 DM 系统用 Paxos / Raft 维护 config / membership
- 但 commit 路径不走 leader(直接 RDMA 单边)
- 所以严格说大多数 DM 是”轻 leader”——leader 不在事务关键路径上
🌟 结论:D4 维度上 DM 主流是”轻 leader”——leader 只管 config,不管 commit。
6. 派系 D5:同步 validate vs 异步
6.1 派系定义
| 派系 | 含义 |
|---|---|
| 同步 validate | 事务在 validate 阶段阻塞等待 RDMA READ |
| 异步 / 流式 validate | 多事务的 validate 流水线,不阻塞 |
6.2 关键 trade-off
| 维度 | 同步 | 异步 |
|---|---|---|
| 单事务延迟 | 高 | 低 |
| 实现复杂度 | 低 | 高 |
| Abort 处理 | 简单 | 复杂(流水线后期 abort 要回滚多事务) |
| 吞吐 | 中 | 高 |
6.3 派系归属
同步派(早期主流):
──────────────
FaRM, DrTM, FORD, Motor (基础版本)
异步 / 流式派:
──────────────
Outback (NSDI'23)
Outpost (ASPLOS'24) ← 当前 SOTA
6.4 异步带来的工程挑战
异步 validate 必须解决:
- 流水线 dependency:如果 tx_A 的 validate 还没完成,tx_B 能不能开始 commit?
- abort 级联:tx_A abort 时如果 tx_B 已经基于它继续了,需要级联 abort
- memory order:保证 validate 看到的版本是真正”已完成”的
🌟 结论:D5 维度未来 3 年会成主流——异步 validate 是 OCC 性能的关键释放。
7. 派系 D6:单边 verbs vs hybrid
7.1 派系定义
| 派系 | 主路径 |
|---|---|
| 单边主路径 | READ / WRITE / CAS / FAA 为主,必要时用控制面 RPC |
| Hybrid | 同时大量使用 SEND/RECV |
7.2 关键 trade-off
| 维度 | 单边 | Hybrid |
|---|---|---|
| MN passive | ✓(纯 DM) | ✗(需要 active server thread) |
| 远端 batch | ✗ | ✓ |
| 协议复杂度 | 低 | 高 |
| 是否纯 DM | ✓ | ✗(半 DM) |
7.3 派系归属
纯单边派(主流 DM):
─────────────────────
FaRM, DrTM, FORD, Motor, LOTUS, CREST, AURA
Hybrid 派:
─────────
FaSST (OSDI'16)
DrTM+H (OSDI'18)
NAM-DB (VLDB'20)
7.4 Hybrid 的存在价值
⭕ 互补:FaSST/DrTM+H 论证了 hybrid 在某些场景比单边快——特别是当:
- 远端能 batch 处理多请求(amortize CPU 开销)
- 单事务有大量小 op(atomic 串行化代价大)
但主流 DM 哲学要求 MN passive——Hybrid 派算”半 DM”。
7.5 SmartNIC 的可能复兴
未来 SmartNIC(DPU)越来越强(DPDK / Bluefield-3):
- 远端 NIC 上能跑用户代码(不占主机 CPU)
- 仍然算”被动主机”——主机 CPU 不参与
- 可能让 Hybrid 派复兴
🌟 结论:D6 维度上主流是单边,但 SmartNIC 可能改写。
8. 完整派系矩阵
8.1 主要系统的 6 维定位
| 系统 | D1 | D2 | D3 | D4 | D5 | D6 |
|---|---|---|---|---|---|---|
| FaRM | OCC | 单版本 | 集中 | 轻 leader | 同步 | 单边 |
| DrTM | OCC+HTM | 单版本 | 集中 | 轻 leader | 同步 | 单边 |
| FaSST | OCC | 单版本 | 集中 | 轻 leader | 同步 | Hybrid |
| DrTM+H | OCC | 单版本 | 集中 | 轻 leader | 同步 | Hybrid |
| FORD | OCC | 单版本 | 集中 | 轻 leader | 同步 | 单边 |
| Motor | OCC | MVCC | 集中 | 轻 leader | 同步 | 单边 |
| Outback | OCC | 单版本 | 集中 | 轻 leader | 异步 | 单边 |
| Outpost | OCC | 单/MVCC | 集中 | 轻 leader | 流式 | 单边 |
| LOTUS | OCC | 单版本 | 分散静态 | 轻 leader | 同步 | 单边 |
| CREST | OCC | MVCC(cell-level) | 集中(masked-CAS) | 轻 leader | 同步 | 单边 |
| AURA | OCC | 单版本 | 分散动态 | 轻 leader | 同步 | 单边 |
8.2 矩阵的几个观察
🌟 观察 1:D1 全是 OCC——这一维没有分歧。
🌟 观察 2:大多数系统在 5 维上一致(OCC + 单版本 + 集中 + 轻 leader + 同步 + 单边)——这是 DM 事务的”主流默认”。
🌟 观察 3:每个有突破的论文只在 1-2 维上偏离主流:
- FaSST/DrTM+H 偏离 D6
- Motor 偏离 D2
- Outback/Outpost 偏离 D5
- LOTUS/AURA 偏离 D3
⭐ 重点:论文写作的暗示——你的工作只需要在一维上做出贡献,其他维度跟主流走。这也是 paper review 的常用判别标准。
8.3 未被探索的组合
6 维 64 个理论组合,被探索的只有约 10 个。开放方向:
| 组合 | 是否被探索 |
|---|---|
| OCC + MVCC + 分散动态 + 异步 + 单边 | 没人做过(合体方向) |
| OCC + MVCC + 分散静态 | 没人做过 |
| OCC + 单版本 + 分散动态 + 异步 + Hybrid | 没人做过 |
9. 派系演化趋势
9.1 12 年的派系迁移
2014 2026
──── ────
D1: OCC ─────────────────────────────→ OCC(不变)
D2: 单版本 ──────────── Motor ─────→ MVCC 渐成主流
D3: 集中 ─────── LOTUS ────── AURA → 分散动态
D4: 轻 leader ──────────────────────→ 轻 leader(不变)
D5: 同步 ──── Outback ── Outpost ──→ 异步/流式
D6: 单边 ──────────────────────────→ 单边(SmartNIC 可能改写)
9.2 主线维度的活跃度
| 维度 | 活跃度(过去 5 年) | 未来 5 年预测 |
|---|---|---|
| D1 OCC vs 2PL | 低(已固化) | 不变 |
| D2 单版本 vs MVCC | 中(Motor 刚开) | MVCC 普及 |
| D3 锁权威 | 极高(LOTUS / AURA) | 进一步深化(多副本 owner?) |
| D4 leader | 低 | 不变 |
| D5 validate | 中(Outback / Outpost) | 异步成主流 |
| D6 verbs | 低(SmartNIC 待观察) | SmartNIC 可能改变 |
9.3 派系组合的预测
未来 3 年最可能出现的论文:
- MVCC + 分散锁(Motor × AURA 合体)
- MVCC + 异步 validate(Motor × Outpost)
- 分散锁 + ML 预测(AURA + LSTM workload prediction)
- CXL-native DM 事务(D6 维度新硬件)
- 多副本 owner(D3 进一步深化)
🌟 建议:博士生选题时看派系矩阵的”空白格”——那里通常有可发表的工作。
✅ 自我检验清单
- 6 个维度:能默写 D1–D6 各自的二选一
- D1 OCC 主导:能解释为什么所有 DM 都用 OCC
- D2 单版本 vs MVCC:能列出 trade-off 表
- D3 三种锁布局:能区分集中、分散静态、分散动态
- D4 轻 leader:能解释”轻 leader”和 Spanner 的”重 leader”区别
- D5 异步 validate:能描述 Outpost 流水线的核心 insight
- D6 hybrid 存在价值:能用一个场景说明 hybrid 何时优于纯单边
- 派系矩阵填空:能给至少 8 个系统填出 6 维归属
- 主流默认:能默写”OCC + 单版本 + 集中 + 轻 leader + 同步 + 单边”
- 每个突破只偏离 1-2 维:能用至少 4 个例子佐证
- 未被探索的组合:能列出至少 3 个未做过的组合
- 派系迁移趋势:能预测未来 5 年最可能产出的方向
📚 参考资料
关键论文(按维度)
D1 OCC vs 2PL:FaRM, FaSST, FORD(全部 OCC) D2 单版本 vs MVCC:FORD(单版本),Motor(MVCC) D3 锁权威:FORD(集中),LOTUS(分散静态),AURA(分散动态) D4 leader:FaRM(轻 leader + Paxos config service) D5 validate:FORD(同步),Outback / Outpost(异步) D6 verbs:FORD(单边),FaSST / DrTM+H(hybrid)
综述
- A Survey on Disaggregated Memory —— 派系总览
- Anuj Kalia’s blog series on RDMA
相邻领域
- Spanner / Cockroach —— 经典分布式事务的派系对照(用于看清”DM 的 D4 轻 leader 跟它们不一样”)