acos整合分布式事务框架seata
内容摘要
1.nacos:1.1.4版本
2.seata:1.42版本
3.springcloud:H.R1版本
4.seata使用nacos作为配置中心和注册中心
5.示例使用的AT模式
seata官网地址:Seata
最近看了b站尚硅谷的微服务视频,里面用的seata是0.8的老版本,整合方式和现在新版本还是的有点区别,分享下1.42版本的整合方式。示例代码放这:示例代码.zip
1.去官网下载Seata

解压后目录如下

2.seata配置步骤
2.1打开conf目录下面的file.conf文件,修改存储方式为数据库存储,因为后面用了nacos作为配置中心,这儿其实可以忽略不配置
(注意mysql8.0版本需要高版本驱动,seata默认是低版本,这里直接修改驱动类即可)

2.2打开registry.conf
首先修改registry部分,表示将seata服务注册到nacos中去

2.3然后修改config部分,表示使用nacos作为配置中心,配置参数全部从nacos中读取

2.4打开conf文件中的README-zh.md文件,分别打开client、server、config-center连接,从github中拷贝图中标出的脚本和文件

config-center拷贝这俩文件,一个是往nacos写入配置的.sh脚本,另一个是配置项模板文件


这里注意下config.txt中这个事务组名的配置,可以配置多个,这里就配一个默认的my_test_tx_group作为事务组名

接下来是数据库存储配置,配置项和之前file.conf中的改动基本一样

2.5将config-serter中的数据导入到nacos中,这儿请参考网上的教程,需要下一个git来运行.sh命令脚本,将模板中的配置项全部导入nacos,成功后如图

3.数据库建表
建一个seata的服务端数据库,执行下之前拷贝的建表sql(seata中配置的数据库就连这个)
其他三个库为测试用业务库,每一个库都需要建一个undo_log表

3.springboot子模块集成seata
3.1pom.xml的依赖中,seata除了需要springboot、springcloud-alibaba的依赖外,需要如下4个包,其余的如mybatis、jdbc、feign相关依赖这就不说明了

3.2 yml中的配置如图


3.4在事务启动的客户端的server层实现类上,加一个注解@GlobalTransactional,很像springboot中的@Transactional,这里表示是开启全局事务配置

4.运行demo程序测试事务
三个测试程序,order订单服务、storage库存服务、accout用户账户服务
正常流程为:创建订单->调用库存服务扣减库存->调用账户服务扣减账户余额→修改订单状态
但如果最后扣除账户余额时服务器报异常!所有操作过的订单、库存和账户数据就会事务回滚,如此来测试下

先启动三个服务,先看下三个数据库表中的状态:订单为空、账户1000、库存100

在调用账户扣除服务之前这给他打个断点,观察下中途数据有没有更改

访问测试接口,进入server方法中的断点,这时候看下控制台,事务发起客户端已经打印了Begin new global transaction [192.168.0.107:8091:7088859707401691154],说明全局事务开启了

再看看数据库,这时候前面的订单、库存操作已经执行了

接下来放开断点,调用账户服务扣款并抛运行时异常,看看客户端控制台,已经打印事务回滚了

再看看数据库,数据已经回滚成功,到这就说明AT模式分布式事务配置成功了

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
