IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 分布式事务框架seata1.4.2整合到SpringCloud Alibaba 2.x -> 正文阅读

[Java知识库]分布式事务框架seata1.4.2整合到SpringCloud Alibaba 2.x

分布式事务框架seata1.4.2整合到SpringCloud Alibaba 2.x

我使用的SpringCloud Alibaba是2.1.0版本,理论上来说如下的整合步骤适合2.x版本

seata支持本地单机部署版,也支持集群部署,我们使用集群版本,但是集群中只有一台机器的方式来部署,为了统一集群的配置,这就需要使用到nacos和mysql

nacos和mysql的安装此处跳过

一、安装并配置Seata1.4.2

下载Seata

Seata官网下载页 https://seata.io/zh-cn/blog/download.html

在这里插入图片描述

下载编译好的binary版本

解压

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7RZWFJz-1651129943250)(/Users/macos/Library/Application Support/typora-user-images/image-20220427123653893.png)]

修改file.conf(废弃步骤,不需要操作,使用下面的配置中心替代)

file.conf用于配置seata的TC服务端的全局事务id等其他数据,我们使用数据库来做存储,默认用的本地文件做存储(无法集群使用)

下面只列出修改点,没有列的内容不需要做改动

store {
	mode = "db"
	db {
    datasource = "druid"
    dbType = "mysql"
    ## mysql8之后要使用这个驱动,否则无需改动
    driverClassName = "com.mysql.cj.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true"
    user = "root"
    password = "12345678"
  }
}

修改registry.conf

registry.conf用于配置seata的TC服务器服务注册和配置中心相关

下面只列出修改点,没有列的内容不需要做改动

registry {
 	type = "nacos"
	nacos {
    # 注册到nacos中的应用名
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = "填自己的namespace,建议给seata服务器单独创一个namespace"
    # 集群名称,就用默认名称:default
    cluster = "default"
    username = "nacos"
    password = "nacos"
	}
}

config {
  type = "nacos"
  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = "填自己的namespace,建议给seata服务器单独创一个namespace"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
    # 读取的配置文件id
    dataId = "seataServer.properties"
  }
}

添加seataServer.properties

上一步中我们让seata的TC服务器从nacos读取配置,接下来就完善nacos中要读取的配置

先从官网下载默认的配置文件

Seata官方gitee https://gitee.com/seata-io/seata/blob/v1.4.2/script/config-center/config.txt

然后在nacos中响应的namespace下创建该配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UhBAGC3z-1651129943251)(/Users/macos/Library/Application Support/typora-user-images/image-20220427125058220.png)]

需要修改一下内容

下面只列出修改点,没有列的内容不需要做改动

store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
# mysql8之后要使用这个驱动,否则无需改动
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=12345678
service.vgroupMapping.my_test_tx_group=default

最后一行中my_test_tx_group为事务组,可以随意更换,相应的需要使用分布式事务的微服务中使用的事务组需要和该参数一致,下面会讲到,=右边的内容为该事务组使用哪一个集群

可以配置多个vgroupMappding,如下:

service.vgroupMapping.my_test_tx_group_1=cluster1
service.vgroupMapping.my_test_tx_group_2=cluster2

这里我们只需要配置1个做测试即可

为TC添加数据库

Seata官方gitee sql脚本 https://gitee.com/seata-io/seata/blob/v1.4.2/script/server/db/mysql.sql

该脚本在Seata的独立数据库中执行,即上一步中配置的db中

启动Seata服务器

在seata的bin目录中执行启动脚本

./seata-server.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uBTVHsG2-1651129943252)(/Users/macos/Library/Application Support/typora-user-images/image-20220427130430291.png)]

二、微服务接入Seata

添加依赖

添加seata微服务依赖,springcloudalibaba项目有默认的seata微服务版本,所以不指定版本

2.1.0的微服务中默认使用0.7.1的seata依赖,所以排除掉更换为1.4.2

同时添加springboot对seata的支持,同1.4.2版本

<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>
<dependency>
  <groupId>io.seata</groupId>
  <artifactId>seata-spring-boot-starter</artifactId>
  <version>1.4.2</version>
</dependency>
<dependency>
  <groupId>io.seata</groupId>
  <artifactId>seata-all</artifactId>
  <version>1.4.2</version>
</dependency>

在bootstrap.yaml中添加seata配置

此处有坑,防坑

如果报错can not get cluster name in registry config 'service.vgroupMapping.xxx-fescar-service-group', please make sure registry config correct

则表示服务没有配置使用哪一个事务组,seata默认的事务组名为{服务name}-fescar-service-group

所以如果报上方错误,表示微服务启动的时候没有配置事务组或没有读取到配置

spring:
  cloud:
		alibaba:
      seata:
        # 对应seataServer.properties中的service.vgroupMapping.my_test_tx_group 集群分组
        # 可能由于版本问题,下面的seata.tx-service-group无法正确读取,所以在此处重新以老版本的方式配置
        tx-service-group: my_test_tx_group

seata:
  # 对应seataServer.properties中的service.vgroupMapping.my_test_tx_group 集群分组
  tx-service-group: my_test_tx_group
  service:
    vgroup-mapping:
      my_test_tx_group: default
  registry:
    type: nacos
    nacos:
      # seata-server注册在nacos中的服务名
      application: seata-server
      server-addr: 127.0.0.1:8848
      group : SEATA_GROUP
      namespace: 你的namespace
      username: nacos
      password: nacos
  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      group: SEATA_GROUP
      namespace: 你的namespace
      dataId: seataServer.properties
      username: nacos
      password: nacos

为RM添加数据库表

因为本地事务提交后就无法再回滚,所以在RM客户端上配置undo_log表保存提交事务前的旧数据,以便分布式事务回滚数据

Seata官方gitee sql脚本 https://gitee.com/seata-io/seata/blob/v1.4.2/script/client/at/db/mysql.sql

该脚本执行在微服务对应的数据库中

整合完成,如何使用?

本地事务,我们使用@Transactional注解在service的方法中使用

当本地事务不满足需求,要用分布式事务时将@Transactional替换成@GlobalTransactional即可,Seata@GlobalTransactional中沿用了@Transactional参数

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:33:07  更:2022-04-30 08:36:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:18:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码