在开始之前,先说两句,首先这节记录还是延续spingcloud系列的。还有最最重要的就是,关于Seata来讲,最难的就是配置,所以在这边给大家一个提醒,一定要耐住性子来学习Seata!
好的,话不多说,开整!
1、准备工作:
启动nacos
2、配置下载1.3.0版本的seata,对seata进行解压,然后进行seata的配置:
2.1、找到conf文件夹下面的file.conf,选择存储方式为db,在这边先说下,seate是有独立的数据库的,而且除此之外还提供了一个数据表的脚本要放到你项目对应的数据库中;
首先先创建seata的数据库,数据库的表是官方提供的,但是在1.0版本之后就不提供了,大家一是可以去找老的版本,二是github中,三是官网中去找的。
2.2、找到conf文件夹下面的registry.conf,这个地方我们选择的注册方式是nacos,因为项目使用的是Alibaba的全家桶,当然最完美的就是注册到nocas,当然这些就安照大家自己的意愿进行选择即可。
2.3 然后我们就可以先进行启动seata,找到bin文件夹下面的seata-server.bat进行启动:然后我们登陆nocas之后就可以看到seata被注册进来了!
3、介绍一下我们的项目,是如何使用到seata的:
3.1、首先项目还是之前的项目,大家不熟悉,或者忘记的话,可以翻阅之前我的文章;
4、项目的逻辑写好之后,就要对三个微服务分别进行yml文件的配置了,步骤都是一样的,我这边记录一个就可以了:
4.1、首先pom文件中,先移除自带的,然后重新引入我们自己的版本
4.2、然后新建这两个文件,这个在官网中可以找到,如果需要的话,可以留言,我这边再提供一下:
然后修改file.conf:大家注意了,这个地方的一个坑,在1.0版本之前,vgroupMapping的写法是vgroup-mapping!这是个坑!
然后修改registry.conf:
5、修改微服务的yml文件中关于seata的配置内容,注意对应关系:大家也要这样进行一个三者对应!
6、这个时候,配置的东西算是搞好了,可以松口气了,大家一定要记住seata最难的就是配置!使用起来就是一个注解:在service的实现类中添加一个注解@GlobalTransactional:
7、ok了,我们分别启动3个微服务,其中订单模块使用debug模式进行启动,然后使用postman进行访问测试:
7.1、进入断点,我们看下order对应的数据库中的管理seata日志的表信息和货源表中的信息:
7.2、我们看到订单表中已经生成关于seata的信息,当然货源,用户中都有:
7.3、然后我们看下货源表中的库存和使用量:
用之前的库存10变成了9;
然后再走一下断点,可以看到用户表中的账户由1000变成900;
7.4、最后,我们看到代码中一定会报错的,然后我们执行完之后,看下数据库中数据的变化:
首先控制台打印出错误信息:
然后,看下订单数据库中seata的日志信息:可以看到刚才的那条信息已经没有了,这表明分布式事务处理结束,同时删除了这条信息!
接着在看下,我们其中的seata服务器的控制台:这个地方写得也是很详细的,执行分布式成功了!
最后,看下3个数据库中的信息:
会员的账户:回滚成为之前的1000
货源:回滚成了之前的10和0
订单表中:删除了生成状态是0的订单,最终没有生成成功支付的订单信息
总结一下:到这里整个关于1.0版本以上的分布式事务管理Seata测试完成,总的来说,内容很多,而且配置大于编码,seata的配置很复杂,而且1.0版本是个分界线,存在不同的坑!
同样,我接下来,还会对1.0以下的一个版本进行配置演示,希望可以帮助到大家,还有就是如果有疑问或者需要代码,可以给我留言,大家一定要动手去做,只有这样才会更加的深刻。
最后感谢大家的支持!
【来源:娱乐小笔记】
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:[email protected]