Seata下载安装 | 集成Nacos配置 | 简单栗子
Posted 做猪呢,最重要的是开森啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Seata下载安装 | 集成Nacos配置 | 简单栗子相关的知识,希望对你有一定的参考价值。
1. Seata下载安装:
截至目前最新版本为1.5.1,本文使用的是1.4.2版本;下载地址: 官网下载 | 百度云( 提取码:8w9p)
由于是本地windows做简单实验,下载zip包;linux或者docker部署可以参考官网
2. Seata集成Nacos配置:
2.1. 修改registry.conf:
解压zip,在conf文件夹,对注册中心和配置中心进行相应配置,这里使用的是nacos;
registry
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos
application = "seata-server"
serverAddr = "127.0.0.1:8848"
group = "DEFAULT_GROUP"
namespace = "dev"
cluster = "DEFAULT"
username = "nacos"
password = "nacos"
config
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos
serverAddr = "127.0.0.1:8848"
namespace = "dev"
group = "DEFAULT_GROUP"
username = "nacos"
password = "nacos"
dataId = "seataServer.properties"
2.2. nacos配置中心进行seata服务配置:
- 在上述namespace 、group 新建一个命为seataServer.properties的配置
- 全量的属性配置文件可见官方github的config.txt文件 或者上文百度云链接;关于属性配置含义可查看官网文档
- 这里只进行服务端数据库的配置,保存事务信息;
- 题外:如果2.1中type使用的file,则还需要修改file.conf文件进行数据库储存配置
2.3. seata-server服务启动:
Windows执行bat程序即可,默认端口8091:
3. 举个栗子:
详细代码就不贴了(可以见GitHUb),大概就是:
- 调用订单Order服务接口,先对订单状态进行确认;再feign调用积分Integral服务进行加积分
- 其中积分服务接口,加完积分后触发个异常,也就相当于调用积分服务时异常了
- 使用seata就可以保证异常的时候,订单状态没有发生更改、积分也没有发生更改
- 使用@GlobalTransactional标注方法,这里默认使用Seata的AT模式,需要undo_log表,建表语句如下:
-- 注意此处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;
3.1. 栗子seata依赖说明:
- 使用的spring-cloud-starter-alibaba-seata:2.2.5.RELEASE版本进行自动配置,包括数据源代理
- 内部使用了seata-spring-boot-starter依赖,使用的是1.3.0,导致其内部使用的seata-all依赖也是1.3.0版本
- 如果像下文指定使用1.4.2版本,数据源自动代理的方式不太一样,需要在启动类加上@EnableAutoDataSourceProxy;参考链接
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
<!-- <exclusions>-->
<!-- <!–版本较低,1.3.0,因此排除–>-->
<!-- <exclusion>-->
<!-- <artifactId>seata-spring-boot-starter</artifactId>-->
<!-- <groupId>io.seata</groupId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>
<!--seata starter 采用1.4.2版本 ,需要在启动类加上@EnableAutoDataSourceProxy才会自动对数据源代理-->
<!-- <dependency>-->
<!-- <groupId>io.seata</groupId>-->
<!-- <artifactId>seata-spring-boot-starter</artifactId>-->
<!-- <version>1.4.2</version>-->
<!-- </dependency>-->
以上是关于Seata下载安装 | 集成Nacos配置 | 简单栗子的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务;集成Nacos配置中心(十九)