SpringCloud – Spring Cloud Alibaba 之 Seata分布式事务服务;集成Nacos配置中心(十九)

  • Post author:
  • Post category:其他


阅读本文前可先参考:


https://blog.csdn.net/MinggeQingchun/article/details/126100300

一、Seata 配置中心

“配置中心”,内部存放着各种各样的配置文件,我们可以根据自己的需要从其中获取指定的配置文件,加载到对应的客户端中

Seata 支持多种配置中心:

  • nacos
  • consul
  • apollo
  • etcd
  • zookeeper
  • file (读本地文件,包含 conf、properties、yml 等配置文件)

二、Seata 整合 Nacos 配置中心

1、创建一个SpringBoot项目,将 seata-client 和 nacos-client 的 Maven 依赖添加到项目的 pom.xml 文件

<!-- spring-cloud-starter-alibaba-seata
            在 Spring Cloud 项目中,spring-cloud依赖 也会引入 seata-spring-boot-starter 依赖,在此排除
         -->
        <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>

        <!-- seata-spring-boot-starter
            注:服务端和客户端版本要一致,不然报错:
            no available service 'default' found, please make sure registry config correct
         -->

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.4.2/version>
</dependency>

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>1.2.0及以上版本</version>
</dependency>

注:!!!

seata-spring-boot-starter 服务端和客户端版本要一致,不然报错:

no available service 'default' found, please make sure registry config correct


博主使用 1.4.2 版本

在 Spring Cloud 项目中,通常只需要在 pom.xml 中添加 spring-cloud-starter-alibaba-seata 依赖即可

<!--引入 seata 依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

2、Seata Server 配置

Seata Server 配置

在 Seata Server 安装目录下的

config/registry.conf

中,将配置方式(config.type)修改为 Nacos,并对 Nacos 配置中心的相关信息进行配置

如果使用了 注册中心 ,如 type=”nacos”等要检查nacos的 应用名application、服务注册地址serverAddr、分组group、命名空间namespace、集群cluster、用户名username、密码password是否正确等

config {
  # Seata 支持 file、nacos 、apollo、zk、consul、etcd3 等多种配置中心
  #配置方式修改为 nacos
  type = "nacos"

  nacos {
    #修改为使用的 nacos 服务器地址
    serverAddr = "127.0.0.1:8848"
    #配置中心的命名空间
    namespace = ""
    #配置中心所在的分组
    group = "SEATA_GROUP"
    #Nacos 配置中心的用户名
    username = "nacos"
    #Nacos 配置中心的密码
    password = "nacos"
  }
}

不然报错:

no available service found in cluster 'default', please make sure registry config correct and keep your seata server running


3、Seata Client 配置


Seata Client 配置

在 Seata Client(即微服务架构中的服务)中,通过 application.yml 等配置文件对 Nacos 配置中心进行配置

#-----------------------------------------------------------
#单机版 tc server 配置
# Seata应用编号,默认为 ${spring.application.name}
seata.application-id=springcloud-order-seata
# Seata事务组编号,用于TC集群名,一般格式为:${spring.application.name}-group
seata.tx-service-group=springcloud-order-seata-group
# 注:虚拟组和分组的映射要写对,不然报错:
# no available service 'null' found, please make sure registry config correct
# 虚拟组和分组的映射 seata.service.vgroup-mapping.${seata.tx-service-group}=default
seata.service.vgroup-mapping.springcloud-order-seata-group=default
# 分组和Seata服务的映射,此处default指上面 seata.service.vgroup-mapping.springboot-seata-group 的值 default
#seata.service.grouplist.default=192.168.133.129:8091
# 存储模式 默认 file模式
seata.config.type=file
# 默认为 file
#seata.registry.type=file
#------------------------------------------------------------


#设置使用注册中心
#seata-spring-boot-starter 1.1版本少一些配置项
seata.enabled=true
seata.registry.type=nacos
# 集群
seata.registry.nacos.cluster=default
# 分组
seata.registry.nacos.group=SEATA_GROUP
# 应用名
seata.registry.nacos.application=seata-server
# 服务注册地址
seata.registry.nacos.server-addr=192.168.133.129:8848

注:!!!

Seata应用编号 seata.application-id,默认为 ${spring.application.name}

Seata事务组编号 seata.tx-service-group,用于TC集群名,一般格式为:${spring.application.name}-group

Seata虚拟组和分组的映射 seata.service.vgroup-mapping.${seata.tx-service-group}=default

三者对应关系要写对,不然会报错:

no available service 'null' found, please make sure registry config correct

4、先启动Nacos,再启动 Seata-Server,此时查看Nacos服务列表

(1)临时关闭Linux上防火墙,或者设置端口访问权限

systemctl stop firewalld

(2)因Nacos使用mysql持久化,需要先开启 mysql服务(手动安装或者docker启动,docker启动需要先启动docker和挂载mysql服务,不然重启docker或者mysql导致mysql数据丢失)

(3)先启动nacos服务

sh startup.sh -m standalone


单机环境必须带-m standalone参数启动;不带参数启动的是集群环境



版权声明:本文为MinggeQingchun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。