三阶段提交(3PC)

在 2PC 的准备与提交之间增加预提交阶段,参与者可在超时后自行推断结果,降低阻塞概率;其正确性依赖同步网络与无分区假设,实际使用有限。

阶段询问 → 预提交 → 提交
改进参与者不再无限阻塞,超时可按规则决定
局限对网络分区与时钟假设敏感,工程中使用较少

与 2PC 的对比

维度2PC3PC
阶段数准备、提交询问、预提交、提交
阻塞风险参与者可能长期等待超时可推断,降低阻塞
假设前提无特殊网络假设同步网络、无分区
工程采用广泛有限
理解 3PC 的价值在于认识 2PC 的阻塞来源,而非鼓励在生产中替换 2PC。

易错点

  • 在存在网络分区的环境中按 3PC 假设设计,仍会不一致
  • 把 3PC 当作 2PC 的默认替代,忽略其假设前提

数据来源与参考

  • Skeen & Stonebraker 三阶段提交相关论文(1983)
  • 《数据密集型应用系统设计》(Kleppmann)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌