nacos 版本 1.3.2
SeaTac版本 1.3.0
dependency也有很多坑需要自己多注意
- 一个分布式事务的解决方案具有高性能和易用性的微服务架构。
- Seata有3个基本组件:
- 事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。
- 事务管理器TM:定义全局事务的范围:开始全局事务,提交或回滚全局事务。
- 资源管理器(RM):管理分支事务正在处理的资源,与TC进行对话以注册分支事务并报告分支事务的状态,并驱动分支事务的提交或回滚。
- Seata管理的分布式事务的典型生命周期:
- TM要求TC开始新的全球交易。TC生成代表全局交易的XID。
- XID通过微服务的调用链传播。
- RM将本地事务注册为XID到TC的相应全局事务的分支。
- TM要求TC提交或回退相应的XID全局事务。
- TC驱动XID对应的全局事务下的所有分支事务以完成分支提交或回滚。
- Maven dependency(去掉重复引用)
<!-- seata-->
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<exclusions>
<exclusion>
<groupId>io.seata</groupId>
<artifactId>seata-all</artifactId>
</exclusion>
</exclusions>
</dependency>
- 配置项目registry.conf
registry {
type = "nacos"
nacos {
application = "serverAddr"
#nacos地址
serverAddr = "10.1.0.192:8848"
namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"
}
}
config {
type = "nacos"
nacos {
serverAddr = "10.1.0.192:8848"
namespace = ""
group = "SEATA_GROUP"
username = "nacos"
password = "nacos"
}
}
- 配置项目application.properties
spring.application.name=order-service
server.port=9091
# Nacos 注册中心地址
spring.cloud.nacos.discovery.server-addr = 127.0.0.1:8848
# seata 服务分组,要与服务端config.txt中service.vgroupmapping的后缀对应
spring.cloud.alibaba.seata.tx-service-group=order-service-group
logging.level.io.seata = debug
对应\seata文件下config.txt(这里配置两个服务)
service.vgroupMapping.storage-service-group=default
service.vgroupMapping.order-service-group=default
- 下载seata服务器并配置(版本不要用其他,版本不同配置方式不同)
- demo地址:https://pan.baidu.com/s/1_KyRN31yzFpJKSf-uP82TA 提取码:1111
根据注解进行事务管理 调用服务Service@GlobalTransactional@Transactional(rollbackFor = Exception.class)
被调用服务Service@Transactional(rollbackFor = Exception.class)
- 下载seata服务器链接:https://pan.baidu.com/s/1IehCitLCGLDLLeokubSz2g 提取码:1111
- 创建数据库seata,并新建表 链接:https://pan.baidu.com/s/1BG-5OpGn3N7ggrQoL9T28g 提取码:1111
- 进入解压后的\seata\conf文件夹右键运行git bash here,并输入如下命令 sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -u nacos -w nacos
- 进入\seata\bin,双击seata-server.bat 运行服务器,可登录nacos后台查看服务