分布式事务两阶段提交与三阶段提交的说明

本文介绍了分布式事务的两阶段提交(2PC)和三阶段提交(3PC)协议,详细阐述了各阶段的流程及优缺点。2PC存在同步阻塞、单点故障和数据不一致等问题,3PC通过增加预提交阶段,降低了这些问题的影响,同时引入超时机制来提高系统容错性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XA规范

X/Open 组织(即现在的 Open Group )定义了分布式事务处理模型。 X/Open DTP 模型( 1994 )包括应用程序( AP )、事务管理器( TM )、资源管理器( RM )、通信资源管理器( CRM )四部分。一般,常见的事务管理器( TM )是交易中间件,常见的资源管理器( RM )是数据库,常见的通信资源管理器( CRM )是消息中间件。

一、两阶段提交(2PC/two-phaseCommit)

思路可以总结为:参与者(RM)将操作的成败通知协调者(TM) ,再由协调者根据所有参与者的返回的状态决定,各个参与者是提交操作还是中止操作。

1、第一阶段(准备阶段/投票阶段)

事务协调者给每个参与者发送prepare消息,每个参与者要么直接返回失败,要么执行本地事务,写本地的redo和undo日志,但是不提交(不 commit)。这个阶段已经开启了锁资源。

2、第二阶段(提交阶段/执行阶段)

如果协调者收到了参与者的失败或者超时的消息,直接给每个参与者发送回滚消息,否则,发送提交消息。参与者根据接收到协调者的指令,执行提交或者回滚,最后释放事务处理过程中使用的锁资源。

3、2PC的缺点

  • 同步阻塞:
  • 单点故障:
  • 数据不一致
  • 不能解决的问题
    协调者在发送commit消息后宕机了,而唯一接收到这条消息的参与者也宕机了,那么即使事务协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被提交。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值