两阶段和三阶段详解

张开发
2026/4/9 14:53:50 15 分钟阅读

分享文章

两阶段和三阶段详解
这是一个非常经典的分布式系统核心问题。在了解了分布式数据库的分片和透明性后,两阶段提交(2PC)和三阶段提交(3PC)正是实现事务透明性和一致性透明性的关键协议。简单来说,它们都是为了在分布式系统中,让多个独立的节点上的事务,要么全部成功提交,要么全部回滚,从而保证ACID中的原子性。两阶段提交 (2PC):是大多数分布式数据库(如MySQL XA、TiDB)实现分布式事务的基础。它足够强,但有一些经典缺陷。三阶段提交 (3PC):是2PC的一个改进版本,旨在解决2PC中的某些阻塞问题,但由于其复杂性,在工程实践中应用远不如2PC广泛。第一部分:两阶段提交 (2PC)2PC 将一个事务的提交过程拆分为两个明确的阶段:准备阶段和提交/回滚阶段。它引入了一个核心角色:协调者 (Coordinator),以及多个参与者 (Participants/Cohorts)。1. 执行流程详解阶段一:准备阶段 (Prepare Phase)协调者向所有参与者发送PREPARE消息,询问它们是否可以提交事务。每个参与者收到PREPARE后,做两件事:执行事务:执行事务中的所有操作,并将undo和redo日志写入磁盘。锁定资源:持有事务需要的所有锁资源。参与者根据自身情况,回复投票:VOTE YES:如果执行成功,就回复“就绪”,承诺一定会提交或回滚(但不提交)。

更多文章