关于seata的详细使用成功案例
**前言:seata 用于解决微服务分布式事务问题,在一定程度上,可以很大程度的保证分布式事务的一致性,而且seata对于项目本身不会有业务上的入侵,完全是热插拔的一个功能,只需要使用@GlobalTransactional 注解,即可实现分布式事务的回滚,可以大大减少传统分布式架构,为了解决分布式事务一致而费力的去写补偿接口和补偿机制而带来的开发成本和维护成本
seata 官网:https://seata.io
一、项目环境 springboot+springcloudalibaba+seata+nacos
二、seata服务端的部署:
先查看官网文档

请严格按照官网给出的版本组合来构建你的项目,如果你的项目的版本与官网的不匹配,强烈建议你修改你的版本,与官网的推荐版本一致,否则后续可能会出一些奇奇怪怪的问题,无法排除 。去官网下载seata 服务端
下载对应的包,tar 是Linux使用的,zip是widows使用的,我这里下载的是Windows版本的1.3.0版本的
3. 解压
4
减压过后,需要到官网去下载一个config.txt的文件,这里面是所有seata的配置 下载地址:https://github.com/seata/seata/blob/1.4.0/script/config-center/config.txt
然后放到 bin的同级目录下
4. 打开config.txt,修改里面的配置
找到conf文件夹下的file.conf文件,打开并编辑

修改配置:将mode改为“db”,其他非db的配置,不再生效。表示使用集群模式,此模式为高可用模式,并修改数据库连接信息,这里的数据库连接是指,seata服务端使用的专职数据库,与个人业务数据库无关,接下来我会讲到建立seata数据库

将seata服务注册到nacos上
找到 conf文件下的registry.conf文件,打开并编辑
标红的地方是要修改成自己的配置的建立seata服务端转职数据库,建表语句下载
https://github.com/seata/seata/tree/1.4.0/script/server/db
下载自己对应的数据库建表语句,用于建立seata服务端的数据库
下载nacos-config.sh推送脚本,这个脚本的作用是,将config.txt文件里面的配置,推送到nacos去,当然如果你不嫌麻烦,你也可以按照config.txt里面的配置,一条一条的往nacos的配置中心去建

然后,双击运行nacos-config.sh,开始推送配置到nacos推送过后,在nacos上你会看到一堆配置,不要问为何那么多,seata就是这样设计的,它偏偏就要搞一大堆配置,然后还分别存放

启动seata 服务端。找到前面减压的安装包,找到bin目录下的seata-server.bat,双击运行,启动服务

启动成功!到此,服务端的部署已经大功告成!
三、seata客服端(也就是自己的项目端的配置)
- 引入jar依赖包

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--为项目整合spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
特别说明:jar包的版本,必须完全按照官网的推荐来引入,这里在开篇就已经说过了,这里再强调一遍
- 项目配置
spring:
cloud:
alibaba:
seata:
tx-service-group: my-test-tx-group
seata:
config:
type: nacos
nacos:
server-addr: 127.0.0.1:8848
username:
namespace:
password:
group: SEATA_GROUP
到此,客服端的配置已经完成,启动项目过后,可以在服务端看到注册成功
