window springcloud 整合 seata nacos (1.3)

  1. 下载seata资源 设置server端

  1. 查找springcloud和seata的对应版本

查看对应的版本关系的网址:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

  1. 下载seata 以及对应的资源

seata下载地址: Releases · seata/seata · GitHub

seata 官网文档: Seata 是什么

对应资源下载地址(选择对应的资源路径进行下载): Releases · seata/seata (github.com)

  1. 配置seata需要的数据库

  1. seata 存储模式分为三种

· file: (默认) 单击模式, 全局事务会话信息在内存中读写并持久化本地文件 root.data,性能较高(默认)

· db: (mysql版本需要在 5.7+) 高可用模式, 全局事务会话信息通过db共享,相应性能差些。

在下载好的资源中有seata需要的数据库的sql语句 地址如下: script\server\db

这里使用mysql 在数据库中运行mysql.sql导入seata需要的数据库

修改seata中的配置文件 : seata\conf\file.conf

修改内容如下:

· db存储模式 + Naocs (注册&配置中心)部署

  1. 配置Nacos注册中心 负责事务参与者(微服务) 和TC通信

修改对应的配置文件 seata\conf\registry.conf

注意:如果配置了seata server使用nacos作为配置中心,则配置信息会从nacos读取,file.conf可以不用配置。 客户端配置registry.conf

使用nacos时也要注意group要和seata server中的group一致,默认group是"DEFAULT_GROUP"

将配置中心所需要用到的配置注册到nacos中

修改下方的配置文件 配置文件的路径如下: script\config-center\config.txt

配置事务分组, 要与客户端配置的事务分组一致

#my_test_tx_group需要与客户端保持一致 default需要跟客户端和registry.conf中registry中的cluster保持一致

(客户端properties配置:spring.cloud.alibaba.seata.tx‐service‐group=my_test_tx_group)

事务分组: 异地机房停电容错机制

my_test_tx_group 可以自定义 比如:(guangzhou、shanghai...) , 对应的client也要去设置

seata.service.vgroup‐mapping.projectA=guangzhou

default 必须要等于 registry.confi cluster = "default"

将修改好的配置文件注册到nacos中 通过git命令来使用 脚本位置: script\config-center\nacos

在这个路径下右键选择git bash Here

在弹出的命令框中执行一下命令:sh nacos-config.sh -h xxx.xxx.xxx.xxx -p 8848

参数说明

-h: host,默认值 localhost

-p: port,默认值 8848

-g: 配置分组,默认值为 'SEATA_GROUP'

-t: 租户信息,对应 Nacos 的命名空间ID字段, 默认值为空 ''

  1. 启动seata

seata的启动方式 在对应路径下双击一下内容

双击 seata-server.bat 启动seata 默认端口号 8091

  1. 配置seata client

2.1 在涉及到事务的数据库中运行一下sql语句

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, PRIMARY KEY (`id`), UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.2 在涉及到事务的服务中添加一下配置

spring:

cloud:

alibaba:

seata:

tx-service-group: default_tx_group # 配置事务分组

# seata 相关配置

seata:

registry:

# 配置seata的注册中心, 告诉seata client 怎么去访问 seata server

type: nacos

nacos:

server-addr: 124.223.48.35:8848 #nacos地址

application: seata-server # seata注册名称

username: nacos # nacos 用户名

password: nacos # nacos 密码

group: SEATA_GROUP # naocs 分组名称

config:

type: nacos

nacos:

server-addr: 124.223.48.35:8848

username: nacos

password: nacos

application: seata-server # seata注册名称

group: SEATA_GROUP # naocs 分组名称

2.3 在要使用的方法上添加 @GlobalTransactional 注解

大功告成!!!! 完结撒花

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring CloudSeata都是分布式系统开发中常用的框架,它们可以一起使用来实现分布式事务管理。下面是Spring Cloud整合Seata的步骤: 1. 引入Seata的依赖 在Spring Boot项目的pom.xml文件中,添加Seata的依赖: ```xml <dependency> <groupId>io.seata</groupId> <artifactId>seata-all</artifactId> <version>${seata.version}</version> </dependency> ``` 其中${seata.version}需要根据实际情况进行替换。 2. 配置Seata的配置文件 在Spring Boot项目的resources目录下,创建一个名为file.conf的文件,并配置Seata的全局配置信息。示例如下: ```ini transport.type=TCP transport.server=NIO transport.heartbeat=true transport.enableClientBatchSendRequest=false transport.threadFactory.bossThreadPrefix=NettyBoss transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler transport.threadFactory.shareBossWorker=false transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector transport.threadFactory.clientSelectorThreadSize=1 transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread transport.threadFactory.bossThreadSize=1 transport.threadFactory.workerThreadSize=default transport.shutdown.wait=3 service.vgroupMapping.my_test_tx_group=default service.seata.grouplist[default]=localhost:8091 client.rm.async.commit.buffer.limit=10000 client.rm.lock.retryInterval=10 client.rm.lock.retryTimes=30 client.rm.report.retryCount=5 client.rm.report.success.enable=false client.rm.table.meta.check.enable=false client.rm.table.undo.data.validation=false ``` 其中,service.vgroupMapping.my_test_tx_group是指将分布式事务组名为my_test_tx_group的应用程序映射到default分组,service.seata.grouplist[default]是指定Seata Server的地址和端口号。 3. 配置Spring Cloud的数据源 在Spring Boot项目中,需要将数据源配置为Seata的代理数据源。在application.properties或application.yml文件中,添加以下配置: ```yaml spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false spring.datasource.username=root spring.datasource.password=root # Seata DataSourceProxy spring.cloud.alibaba.seata.tx-service-group=my_test_tx_group spring.cloud.alibaba.seata.enable-auto-data-source-proxy=true ``` 其中,spring.datasource.*是指定应用程序使用的数据源,spring.cloud.alibaba.seata.*是指定使用Seata代理数据源。 4. 配置Spring Cloud的Feign客户端 如果应用程序中使用了Feign客户端,则需要配置Feign客户端的拦截器,以便在进行远程调用时启用Seata的分布式事务管理。在Spring Boot项目中,需要定义一个名为FeignConfiguration的类,并在其中添加以下配置: ```java @Configuration public class FeignConfiguration { @Bean public RequestInterceptor requestInterceptor() { return new SeataFeignClientInterceptor(); } } ``` 其中,Seata

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值