加载中...

两阶段提交(Two-Phase Commit,2PC)是分布式事务中最经典的原子提交协议,用于保证一个事务横跨多个数据库或服务节点时的原子性:所有参与者要么全部提交,要么全部回滚。
协议引入一个协调者(Coordinator)和多个参与者(Participant)。第一阶段为准备阶段(Prepare):协调者询问所有参与者能否提交,参与者将事务写入日志并锁定资源后回复同意或拒绝。第二阶段为提交阶段(Commit):若所有参与者均同意,协调者广播提交命令;只要有一个拒绝或超时,则广播回滚命令。
2PC 的主要问题是阻塞:参与者在投票同意后必须持锁等待协调者指令,若协调者宕机,参与者将长时间处于不确定状态。工程上更常见的替代是基于消息队列的最终一致性方案、TCC(Try-Confirm-Cancel)以及 Saga 模式。XA 规范是 2PC 在数据库领域的标准化接口。

登录 后参与讨论
暂无讨论,来发表第一条评论吧