1.2.1.1.Seata是什么
Seata (Simple Extensible Autonomous Transaction Architecture)是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
官网:Seata/
1.2.2.2.Seata的核心组件
Seata事物管理中有三个重要的核心组件:
-
TC(Transaction Coordinator)-事务协调器:维护分支事务的状态,协调全局事务提交或回滚。
-
TM(Transaction Manager)-事务管理器:定义全局事务的范围,并开始全局事务。
-
RM(Resource Manager)-资源管理器:向TC注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
1.2.2.3.Seata的分布式事务解决方案
Seata提供了四种不同的分布式事务解决方案:
-
XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入.
-
TCC模式:最终一致的分阶段事务模式,有业务侵入
-
AT(auto transaction)模式:最终一致的分阶段事务模式,无业务侵入,也是Seata的默认模式.
-
SAGA模式:长事务模式,有业务侵入
当出现异常进行事务回滚的时候如果里面有远程调用方法,通过spring的@Transactional,只能回滚本地方法,所以就要用到@seata中的@GlobalTransactional来实现事务的回滚
pom
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <version>2021.0.1.0</version> </dependency>
yml
seata: registry: type: nacos #查找TC服务 nacos: server-addr: 111.111.111.111:8848 group: SEATA_GROUP application: pn-mall-seata #TC服务名 tx-service-group: pn-mall-seata-group #事务组名称 service: vgroup-mapping: #事务组与TC cluster的映射关系 pn-mall-seata-group: default
在方法上加@GlobalTransactional