主题
分布式事务
什么是分布式事务
一个微服务通过 feign 调用别的微服务的方法,当被调用的微服务的方法执行完毕,但是调用的微服务报错时,普通的事务只能回滚当前方法,别调用微服务则无法回滚。存在分布式事务问题
解决分布式事务问题可以使用seata 来解决
seata 事务管理中有三个重要角色
- **TC (Transaction Coordinator) -****事务协调者:**维护全局和分支事务的状态,协调全局事务提交或回滚。
- **TM (Transaction Manager) -****事务管理器:**定义全局事务的范围、开始全局事务、提交或回滚全局事务。
- **RM (Resource Manager) -资源管理器:**管理分支事务处理的资源,与 TC 交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
- 整体的架构如图:

Seata 基于上述架构提供了四种不同的分布式事务解决方案:
- XA 模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入
- TCC 模式:最终一致的分阶段事务模式,有业务侵入
- AT 模式:最终一致的分阶段事务模式,无业务侵入,也是 Seata 的默认模式
- SAGA 模式:长事务模式,有业务侵入
无论哪种方案,都离不开 TC,也就是事务的协调者。
使用方法
在类上加上 seata 提供的全局事务管理注解 @GlobalTransactional 注解