前言:近期在使用seata做分布式项目的搭建,分享一篇搭建的过程
至于seata是什么?有什么用?请点击:分布式事物及seata介绍
springcloud-nacos-seata
分布式事务组件seata的使用案例,demo内采用:AT模式,集成nacos、springboot、springcloud、mybatis-plus,数据库采用mysql
案例使用的框架版本:
- spring-cloud-alibaba-seata 2.1.0.RELEASE
- spring-cloud-starter-alibaba-nacos-discovery 0.2.1.RELEASE
- springboot 2.0.6.RELEASE
- springcloud Finchley.RELEASE
Nacos-server
demo使用版本为nacos-server-1.1.3,采用本地单机部署方式
- 下载地址:https:///alibaba/nacos/releases
下载好后,解压文件,进入文件bin目录下,执行startup文件启动(Windows双击startup.cmd运行文件)
启动成功后可以使用:http://127.0.0.1:8848/nacos/index.html,访问nanos的控制管理台
登录使用默认帐号与密码均为:nacos
- 更多Nacos使用教程:https://nacos.io/zh-cn/docs/quick-start.html
Seata-server
seata服务端,是一个独立运行的进程,下载地址: https:///seata/seata/releases
- 本demo版本采用0.8.0,单机本地部署
Seata-server-registry文件配置
seata下载好后,接下来我们对seata的配置文件进行配置
- 打开seata文件目录下的conf/registry.conf
- 修改使用nacos作为注册中心,并且配置下面的nacos的地址为本机(默认使用nacos默认端口号8848,如果你有修改nacos服务的端口号,那么可以将端口号加上去)
接下来把文件内容往下翻,找到config的配置
此处配置代表我们seata-server所使用的配置详情,我们这里等会会将配置都写到nacos上面去(nacos具有配置中心的功能)。所以类型选nacos,地址配置也同上
registry.cof文件配置完毕
Seata-server-config文件配置
接下来我们将配置seata-server的一些运行配置
打开conf/nacos-config.txt文件,该文件为配置模版文件,我们在该文件内进行配置,等会使用自带的sh脚本将文件内的内容注册到nacos上去
该文件,初学者只需要关注service.vgroup_mapping.xxxxxxx属性,该属性用于指定seata的事物分组,必须与我们自己服务application配置文件内spring.cloud.alibaba.seata.tx-service-group的值相同。
关于该属性的作用:
该属性用于分组seata的资源逻辑,类似于服务实例。程序会通过该值确定TC的集群名称,拿到集群名称程序通过一定的前后缀+集群名称去构造服务名,各配置中心的服务名实现不同。拿到服务名去相应的注册中心去拉取相应服务名的服务列表,获得后端真实的TC服务列表。
这样设计的好处是,事务分组可以作为资源的逻辑隔离单位,当发生故障时可以快速failover。
关联事物的服务你可以配到同一个组下,但是就算你不配到同一组,也依旧可以回滚
注册配上nacos
刚才我们配置的nacos-config.txt文件只是一个模版,我们现在需要将里面的配置导入到nacos上去
cd conf
sh nacos地址 #例:sh 127.0.0.1
这里使用的是一个sh脚本文件进行注册,如果是Windows用户,可以使用git的命令窗口(Git Bash Here)进行执行该sh脚本
导入成功后,在我们可以在nacos的web控制查看到注册好的配置
启动seata-server
bin目录下的seata-server即为启动文件
客户端配置
seata服务端配置好了,下面需要配置客户端
项目示例完整代码地址:91zc demo使用的SQL在README.md文件内
注意:@GlobalTransactional注解为开启分布式事物的注解
注意点:
还是需要注意分组的配置,需要和我们之前在服务端内配置的分组对得上