Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔记

本文章主要是记录这几个组件的组合搭建, 以单机环境为例, 集群环境有待后续尝试.

一. Nacos

下载地址:  https://github.com/alibaba/nacos/releases

1. 创建数据库(MySQL): nacos_config, 运行 conf 文件夹下 nacos-mysql.sql 文件

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java

2. 将 application.properties 文件中 db 属性值修改为自己的数据库相关信息

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_02


3. 将 bin/startup.cmd(Win10环境) 中的 MODE 属性修改为 standalone (单机, 默认为集群, 启动会报错)

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_03

4. 到此就可以运行 startup.cmd 启动nacos了, 默认端口为 8848, 可以通过  http://localhost:8848/nacos 进行访问, 默认用户名/密码: nacos/nacos




二. Seata

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

1. 将 file.conf 中的 mode 修改为 db, 同时修改 db 中数据库相关信息

2. 将 file.conf.example 中的 mode 修改为 db, 同时修改 db 中数据库相关信息

3. 将 registry.conf 中的 registry 和 config 的type属性修改为 nacos

4. 添加nacos配置

地址:  https://github.com/seata/seata/tree/develop/script/config-center

这一步跟1.0之前的版本不一样, 下载的文件包中不再包含config.txt等配置文件, 需要自己到github上进行下载. 需下载的文件有 config.txt 以及 nacos文件夹中的 nacos-config.sh

这里还有需要注意的地方就是 config.txt文件必须是在nacos-config.sh 文件的「上一级目录」中, 而且所在的路径不能有「空格」

例如:

  • D:\config.txt
  • D:\conf\nacos-config.sh

修改config.txt中相关配置

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_04

win环境下运行nacos-config.sh需要借助git工具

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_05

当看到如下内容则表示已经添加完毕

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_06

修改nacos配置列表中 store.db.url 的值

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_07

直到这个时候才可以运行 bin/seata-server.bat 启动 seata

Nacos1.3.2 + Seata1.3.0 + MySQL8 + SpringCloud 排坑笔_java_08

三. MySQL8

安装步骤略

四. 创建SpringCloud项目

1. 导包

<dependencies>
    <!-- nacos -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <!-- seata -->
    <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-spring-boot-starter</artifactId>
        <version>1.3.0</version>
        <!-- 这里需要排除自身的seata-all -->
        <exclusions>
            <exclusion>
                <artifactId>seata-all</artifactId>
                <groupId>io.seata</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 导入与之前下载的seata版本一致的包 -->
    <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-all</artifactId>
        <version>1.3.0</version>
    </dependency>

    <!-- feign -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. application.yml

seata:
  enabled: true
  # 该属性需要与前面config.txt文件中的service.vgroupMapping后的值保持一致
  tx-service-group: my_test_tx_group
  config:
    type: nacos
    nacos:
      namespace:
      serverAddr: 127.0.0.1:8848
      group: SEATA_GROUP # 这个值未生效, 在nacos中依然为DEFAULT_GROUP, 待检查原因
  registry:
    type: nacos
    nacos:
      # seata 在nacos中的服务名
      application: seata-server
      serverAddr: 127.0.0.1:8848
      # 分组需和seate分组一致
      group: SEATA_GROUP

项目正常启动, 终于不会报 「no available server to connect.」 这个错误提示了