【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)

                                                                               S e a t a 1.5.2 ——含各种踩坑记录 \color{#FF1493}{Seata1.5.2 —— 含各种踩坑记录} Seata1.5.2——含各种踩坑记录          


仰望天空,妳我亦是行人.✨
个人主页——微风撞见云的博客
《数据结构与算法》专栏的文章图文并茂生动形象简单易学!欢迎大家来踩踩~
《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~
《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~
《Redis》专栏的文章是在学习Redis时,整理的笔记与记录的思考~
《RabbitMQ》专栏的文章是在学习尚硅谷课程时整理的笔记,方便复习巩固~
希望本文能够给读者带来一定的帮助~文章粗浅,敬请批评指正!


文章目录

    • 【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)
    • 一、各组件版本
    • 二、Seata官网与下载
    • 三、配置Seata
      • 1. Seata配置
      • 2. Nacos配置
      • 3. SQL文件
      • 4. 启动seata
    • 四、整合SpringBoot
      • 1. POM
      • 2. YML
      • 3. 踩坑说明【重要】
        • 坑一
        • 坑二
      • 4. 测试Seata(完结撒花)
  • 结语


【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)

这是一期 踩坑日记,两个月前跟着尚硅谷周阳老师学微服务最后的seata部分,由于版本不同,配置不好,不想用0.9的老版本,1.5.2版本的和老版本配置问题差别太大,当时弄了很久也没有弄好,放弃了。昨天重拾问题,今早解决,完结撒花,特此记录本次seata 1.5.2 版本的各种踩坑日记。

一、各组件版本

  • Seata:1.5.2
  • MySQL:8.0.26
  • Nacos:2.1.1

二、Seata官网与下载

这里啰嗦一句:在看视频的时候,发现弹幕的小伙伴基本上分为几个阵营:“0.9.x”、“1.4.x”、“1.5.2”,这三个版本的配置都有很大差异,尤其是1.5.2版本,配置文件直接改为了yml,并且不再需要手动配置 DataSourceProxy 我就是想尝试新一点的,所以没少踩坑 。大家谨慎选择版本。

在这里插入图片描述

官网地址:http://seata.io/zh-cn/

下载地址:https://github.com/seata/seata/releases

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第1张图片

三、配置Seata

1. Seata配置

解压文件后,你将看到这样的目录:

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第2张图片

修改seata\conf 下的 application.yml(建议先拷贝一份副本备用)

server:
  port: 7091
 
spring:
  application:
    name: seata-server
logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/logs/seata
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash
console:
  user:
    username: seata
    password: seata
seata:
  config:
    # support: nacos 、 consul 、 apollo 、 zk  、 etcd3
    type: nacos
    nacos:
      server-addr: http://127.0.0.1:8848
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      namespace:
      group: SEATA_GROUP
      username: 
      password:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
      data-id: seataServer.properties
  registry:
    # support: nacos 、 eureka 、 redis 、 zk  、 consul 、 etcd3 、 sofa
    type: nacos
    preferred-networks: 30.240.*
    nacos:
      application: seata-server
      server-addr: http://127.0.0.1:8848
      group: SEATA_GROUP
      namespace:
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      cluster: default
      username:
      password:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
 

2. Nacos配置

点击左侧的:配置管理/配置列表,新增一个配置:

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第3张图片

  • DataID: seataServer.properties

  • GROUP: SEATA_GROUP

  • 配置内容

    • 格式为:properties

    • 内容为:

# 存储模式
store.mode=db
 
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
# 注意根据生产实际情况调整参数host和port
store.db.url=jdbc:mysql://127.0.0.1:3306/seata
# 数据库用户名密码
store.db.user=root
store.db.password=root
# 微服务里配置与这里一致
service.vgroupMapping.fsp_tx_group=default
service.vgroupMapping.fsp_tx_group=default
service.vgroupMapping.fsp_tx_group=default

3. SQL文件

找到 seata\script\server\db\mysql.sql 文件,在数据库新建一个seata数据库,执行这个文件

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第4张图片

4. 启动seata

双击 seata\bin 下的 seata-server.bat,如果闪退 cmd 可以看报错内容

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第5张图片

查看 Nacos

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第6张图片

四、整合SpringBoot

这里以 seata-order-service2001 服务为例,另外两个同理。

1. POM

依赖一定要选对,高版本得用这个 ↓ 不然会报错:not support register type: null

<!--seata-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <exclusions>
        <exclusion>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.5.2</version>
</dependency>

2. YML

按照这个写基本上就OK

server:
  port: 2001

spring:
  application:
    name: seata-order-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/seata_order?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver


feign:
  hystrix:
    enabled: false

logging:
  level:
    io:
      seata: info

mybatis:
  mapperLocations: classpath:mapper/*.xml


seata:
  tx-service-group: fsp_tx_group  #这里每个服务都是对应不同的映射名,在配置中心可以看到
  registry:
    type: nacos
    nacos:
      server-addr: localhost:8848
      group: SEATA_GROUP
  service:
    vgroup-mapping:
      #这里也要注意 key为映射名,
      fsp_tx_group: default


3. 踩坑说明【重要】

坑一

这里有个大坑,老师是旧版本的,我们是新版本的,DruidDataSource 配置了反而出错,参考github解决了

报错:

Bean named ‘dataSourceProxy’ is expected to be of type ‘io.seata.rm.datasource.DataSourceProxy’ but was actually of type ‘com.alibaba.druid.pool.DruidDataSource E n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIB EnhancerBySpringCGLIBd38bdd7b’ #3805

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第7张图片
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第8张图片

来自大佬的解释(真心感谢):自1.3以来不鼓励自己注册DataSourceProxy bean。如果您正在使用DataSourceProxy,则不需要关心DataSourceProxy(starter将自动处理它),只需以旧的方式注册并使用datasourcebean。

也就是说,在后续的高版本中,我们不要再去手动配置数据源了,就使用自动创建的数据源即可。

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第9张图片

坑二

由于我的nacos是2.1.1,并且seata是1.5.2,工程父pom中的依赖不再适用。

详情请参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

根据文档,找到适配的依赖版本:
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第10张图片

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第11张图片

4. 测试Seata(完结撒花)

启动, seata、nacos、三个微服务之后

访问:http://localhost:2001/order/create?userId=1&productId=1&count=10&money=100

查看数据库中对应的数据(原始sql语句在老师的笔记中有,实在没有的话,你也可以参考这篇很棒的文章:Spring Cloud 学习笔记(3 / 3))

先正常访问,看看数据库情况:http://localhost:2001/order/create?userId=1&productId=1&count=10&money=100

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第12张图片

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第13张图片

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第14张图片

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第15张图片

添加超时,OpenFeign 默认超时是1s,我们超时20秒,这样可以模拟一个服务异常的场景,观察数据库有无写操作

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第16张图片

在这里插入图片描述

【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)_第17张图片

在这里插入图片描述

由于服务异常,操作回滚,数据全部OK!真 · 完结撒花!!!ヽ(°▽°)ノ ~~~

在这里插入图片描述


结语

初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

积少成多,滴水成河。文章粗浅,希望对大家有帮助!

参考文献:

  • [尚硅谷]seata1.5.2配置使用
  • seata1.2版本整合nacos踩坑案例:not support register type: null ???
  • https://github.com/seata/seata/issues/3805

你可能感兴趣的:(SpringCloud,Java学习笔记,每天一点小知识,java,微服务,spring,boot,spring,cloud,seata)