思维导图
1.概述
1.1 概念
Seata 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。
2. 事务概述
2.1 角色
- TC((Transaction Coordinator)): 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。
- TM(Transaction Manager):事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。
- RM (Resource Manager):资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
2.2 工作图
3.Seata事务模式
3.1 AT 模式
3.1.1 概念
无侵入式的分布式事务解决方案,用户只需关注自己作为一阶段的业务SQL,Seata框架会自动生成事务进行二阶段提交和回滚操作。
3.1.2 两个阶段
一阶段,业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
二阶段,提交异步化,非常快速地完成。回滚通过一阶段的回滚日志进行反向补偿。
3.1.3 以订单服务为例
3.2 TCC 模式
3.2.1 概念
TCC 是分布式事务中的三阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),具体含义如下:
Try尝试阶段:对业务资源的检查并预留;
Confirm确认阶段:对业务处理进行提交。即commit操作,只要 Try 成功,那么该步骤一定成功;
Cancel取消阶段:对业务处理进行取消。即回滚操作,该步骤回对Try预留的资源进行释放。、
3.2.2 优缺点
1. 优点
TCC 不需要依赖数据库,能够实现跨数据库、跨应用资源管理。对这些不同数据访问通过侵入式的编码方式实现一个原子操作。更好地解决了在各种复杂业务场景下的分布式事务问题。
2. 缺点
TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现。 对业务系统有着非常大的入侵性,设计相对复杂。
3.2.3 TCC和AT区别
1. AT 模式基于支持本地 ACID 事务的关系型数据库
一阶段 prepare 行为,在本地事务中,一并提交业务数据更新和相应回滚日志记录。
二阶段 commit 行为,马上成功结束,自动异步批量清理回滚日志。
二阶段 rollback 行为,通过回滚日志,自动生成补偿操作,完成数据回滚。
2. TCC 模式不依赖于底层数据资源的事务支持
一阶段 prepare 行为:调用自定义 的 prepare 逻辑。
二阶段 commit 行为:调用自定义 的 commit 逻辑。
二阶段 rollback 行为:调用自定义 的 rollback 逻辑。
3.3 Saga 模式
3.3.1 概念
Saga模式是SEATA提供的长事务解决方案,在Saga模式业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。
3.3.2 工作图
3.3.3 适用场景
- 比如,老系统,封闭的系统(无法修改,同时没有任何分布式事务引入)。
- 或者事务参与者可能是其他公司的服务或者是遗留系统,无法改造。
- 那么AT、XA、TCC模型将全部不能使用,这时就可以使用Saga模式。
参考博客:https://blog.csdn.net/qq_45738250/article/details/129210294
标签:回滚,Seata,SpringCloud,事务,阶段,提交,TCC,分布式 From: https://www.cnblogs.com/jelly12345/p/17369279.html