两阶段提交(Two-Phase Commit)
缩写:2PC
简述
分布式事务协议:准备阶段各参与者预提交并投票,提交阶段根据协调者决定统一 commit/abort。追求跨资源原子性,代价是延迟与阻塞风险。
为何出现
单机事务无法覆盖多个独立资源管理器。
使用场景
跨库/库与消息等需要原子的遗留集成;理解 XA。
在体系中的位置
协调者 + 参与者;依赖预写日志与超时恢复。
组成与要点
sequenceDiagram
participant C as 协调者
participant P as 参与者
C->>P: prepare
P-->>C: yes/no
C->>P: commit/abort
sequenceDiagram participant C as 协调者 participant P as 参与者 C->>P: prepare P-->>C: yes/no C->>P: commit/abort
实践与应用
• 优先评估是否可改为本地事务+可靠消息/Saga。
• 若用 2PC,监控准备后阻塞与协调者高可用。
• 超时与人工干预流程要事先定义。
注意事项
• 协调者故障可导致参与者阻塞。
• 跨地域 2PC 延迟与可用性差。
对比与易混
2PC vs TCC/Saga;2PC vs 复制共识(Raft 等)。
信号与度量
事务完成时延、启发式结束次数、阻塞事务。
关联术语
• 分布式事务:典型协议
• 协调者 / 参与者:角色
• 最终一致性:较弱但更常见的替代取向