简介
两阶段提交又称2PC(two-phase commit protocol),2pc是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调者节点(coordinator)和N个参与者节点(partcipant)。
下面我们就以一个尽量贴近实际业务场景的操作来举例:“假设在一个分布式架构的系统中事务的发起者通过分布式事务协调者(如RocketMQ,在早期RocketMQ版本不提供事务消息特性时,有些公司会自己研发一个基于MQ的可靠消息服务来实现一定的分布式事务的特性)分别向应用服务A、应用服务B发起处理请求,二者在处理的过程中会分别操作自身服务的数据库,现在要求应用服务A、应用服务B的数据处理操作要在一个事务里”?
在上面这个例子中如果采用两阶段提交来实现分布式事务,那么其运行原理应该是个什么样的呢:
第一阶段:请求/表决阶段
既然称为两阶段提交,说明在这个过程中是大致存在两个阶段的处理流程。第一个阶段如图所示,这个阶段被称之为请求/表决阶段。是个什么意思呢?
就是在分布式事务的发起方在向分布式事务协调者(Coordinator)发送请求时,Coordinator首先会分别向参与者(Partcipant)节点A、参与这节点(Partcipant)节点B分别发送事务预处理请求,称之为Prepare&#