分布式事务(二):分布式事务解决方案之2PC(两阶段提交)

本文介绍了分布式事务中的2PC(两阶段提交)协议,包括其原理、流程和存在的问题。接着,文章探讨了数据库层面的XA解决方案以及其优缺点,并详细阐述了Seata分布式事务框架如何改进2PC,提高性能和资源利用率。Seata作为应用层的中间件,通过事务协调器、事务管理器和资源管理器的角色协作,实现了更高效的分布式事务处理。
摘要由CSDN通过智能技术生成

什么是2PC

2PC即两阶段提交,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase)。2是指两个阶段,P是指准备阶段,C是指提交阶段。

        举例:张三和李四好久不见,一起吃饭。饭店老板要求先买单,才能出票。只有张三和李四都付款,老板才能出票安排就餐。但由于张三和李四都是铁公鸡,形成了尴尬的一面:

  • 准备阶段:老板要求张三付款,张三付款。老板要求李四付款,李四付款。
  • 提交阶段:老板出票,两人拿票纷纷落座就餐。

        整个事务过程由事务管理器和参与者组成,店老板就是事务管理器,张三、李四就是事务参与者,事务管理器负责决策整个分布式事务的提交和回滚,事务参与者负责自己本地事务的提交和回滚。

在计算机中部分关系型数据库如Oracle、Mysql支持两阶段提交协议,如下图:

  1. 准备阶段:事务管理器给每个参与者发送准备消息,每个数据库参与者在本地执行事务,并写本地的Undo/Redo日志,此时事务没有提交。(Undo日志时记录修改前的数据,用于数据库回滚,Redo日志时记录修改后的数据,用于提交事务后写入数据文件)
  2. 提交阶段:如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚消息&#x
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值