赞
踩
官网下载地址:https://github.com/seata/seata/releases
下载下来解压即可,目前最新版本为1.4.0(下载服务包和源码包)
seata分布式事务解决方案在使用中分为server端和client端。
主要配置文件registry.conf。
Server端存储模式(store.mode)现有file、db、redis三种(后续将引入raft,mongodb),file模式无需改动,直接启动即可,下面专门讲下db和redis启动步骤。
注: file模式为单机模式,全局事务会话信息内存中读写并持久化本地文件root.data,性能较高;
db模式为高可用模式,全局事务会话信息通过db共享,相应性能差些;
redis模式Seata-Server 1.3及以上版本支持,性能较高,存在事务信息丢失风险,请提前配置合适当前场景的redis持久化配置.
注册中心
配置中心
事务分组
事务分组是什么?
事务分组是seata的资源逻辑,类似于服务实例。在file.conf中的my_test_tx_group就是一个事务分组。
通过事务分组如何找到后端集群?
<!-- 集成seata分布式事务 --> <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.4.0</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <version>项目中spring-cloud-alibaba的版本</version> <exclusions> <exclusion> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> </exclusion> </exclusions> </dependency> <!-- seata注册配置中心 --> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.3.2</version> </dependency>
registry { # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa type = "nacos" loadBalance = "RandomLoadBalance" loadBalanceVirtualNodes = 10 nacos { application = "seata-server" serverAddr = "127.0.0.1:8848" group = "SEATA_GROUP" namespace = "naocs中命名空间ID" cluster = "default" username = "nacos登录账号" password = "nacos登录密码" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "nacos" nacos { serverAddr = "127.0.0.1:8848" namespace = "naocs中命名空间ID" group = "SEATA_GROUP" username = "nacos" password = "nacos" }
上传配置到至Nacos配置中心,在下载的源码包中seata-source-1.4.0\script\config-center文件夹下。
config.txt是官方配置好的参数,直接使用nacos文件里面的脚本上传配置即可。参数介绍
./nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 命名空间ID -u nacos账号-w nacos密码
官方教程连接
上传成功后,就可以在nacos上面看见了
# seata配置 seata: registry: type: nacos # 复制的seata config文件夹里面的registry.conf内容 nacos: # 和server端中application一致 application: "seata-server" serverAddr: localhost:8848 group: "SEATA_GROUP" namespace: "命名空间ID" cluster: "default" username: "nacos账号" password: "nacos密码" config: type: nacos nacos: serverAddr: localhost:8848 group: "SEATA_GROUP" namespace: "命名空间ID" username: "nacos账号" password: "nacos密码"
然后在需要使用seata的服务中配置参数(比如有订单模块和用户模块)
mall-order-dev.yml
# seata事务分组
seata:
tx-service-group: mall-order-seata-group
mall-user-dev.yml
# seata事务分组
seata:
tx-service-group: mall-user-seata-group
然后修改nacos中的配置
-- 注意此处0.3.0+ 增加唯一索引 ux_undo_log
CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`context` varchar(128) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
数据源代理(不支持自动和手动配置并存,不支持XA数据源自动代理)
client端启动类上添加@EnableAutoDataSourceProxy注解
官方详细步骤
最后使用
在需要处理分布式事务的类上面添加
@GlobalTransactional(rollbackFor = Exception.class)即可(默认是AT模式)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。