03-初识seata
1.简介
Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决方案。致力于提供高性能和简单易用的分布式事务服务,为用户打造一站式的分布式解决方案。
官网地址:http://seata.io/,其中的文档、播客中提供了大量的使用说明、源码分析。
2.seata的结构
seata事务管理中有三个重要角色:
事务协调者:维护全局事务和分支事务的状态,协调全局事务的提交或回滚。
全局事务管理器:定义全局事务的范围,开始全局事务,提交或回滚全局事务。
RM (Resource Manager) -资源管理器:**资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和提交分支事务的状态,并驱动分支。
整体的架构图:

seata基于上述架构提供了四种分布式事务的解决方案:
XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入。
TCC模式:最终一致性的分阶段事务模型,有业务侵入。
AT模式:最终一致的分阶段事务模型,无业务侵入,是seata的默认的模式。
SAGA模式:长事务模型,有业务侵入。
3.微服务集成seata
(1)引入依赖:
<!--seata-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<!--版本较低,1.3.0,因此排除-->
<exclusion>
<artifactId>seata-spring-boot-starter</artifactId>
<groupId>io.seata</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<!--seata starter 采用1.4.2版本-->
<version>${seata.version}</version>
</dependency>
(2)在application.yml中,配置TC服务信息,通过注册中心nacos,结合服务名称获取TC地址:
seata:
registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
type: nacos # 注册中心类型 nacos
nacos:
server-addr: 127.0.0.1:8848 # nacos地址
namespace: "" # namespace,默认为空
group: DEFAULT_GROUP # 分组,默认是DEFAULT_GROUP
application: seata-tc-server # seata服务名称
username: nacos
password: nacos
tx-service-group: seata-demo # 事务组名称
service:
vgroup-mapping: # 事务组与cluster的映射关系
seata-demo: SH
微服务如何根据这些配置寻找TC的地址呢?
我们知道注册到Nacos中的微服务,确定一个具体实例需要四个信息:
-
namespace:命名空间
-
group:分组
-
application:服务名
-
cluster:集群名
以上四个信息,在刚才的yaml文件中都能找到:

namespace为空,就是默认的public
结合起来,TC服务的信息就是:public@DEFAULT_GROUP@seata-tc-server@SH,这样就能确定TC服务集群了。然后就可以去Nacos拉取对应的实例信息了。

浙公网安备 33010602011771号