分布式事务 05 两阶段事务
两阶段提交是什么?
- 定义:称为2PC(2 Phase Commit Protocol),意思为1次事务分为两个阶段,是强一致性、中心化的原子提交协议
- 参与角色:
- 协调者:一个,TM, 协调与管理事务
- 参与者:N个,RM,可以使DB或者某些微服务
两阶段事务分析
以用户下单使用余额+红包的形式完成支付。
假设用户下单操作来自3个系统:下订单、资金账户、红包等系统。下单后支付需要调用资金账户服务与红包服务完成支付
假设100的商品,现使用90元现金与10元红包。
全局提交
- 1阶段:事务准备
- TM询问参与者:是否可以提交?
- 参与者事务执行成功,则返回“同意”
- 参与者事务执行失败,则返回“终止”
- TM询问参与者:是否可以提交?
- 2阶段: 事务提交
- TM根据应答觉得全局方向,并通知所有参与者执行决定
- 都同意,则都提交
- 出现终止提交,则所有参与者都回滚事务
- TM根据应答觉得全局方向,并通知所有参与者执行决定
全局回滚
1阶段中出现相应信息为“终止”或相应超时,TM向所有RM发送“回滚操作”的请求,然后参与者向协调者发送“回滚完成”的消息