天天看点

seata整合spring cloud alibaba并把nacos作为seata的注册中心和配置中心

一、下载seata服务端seata-server

seata-server下载地址:https://seata.io/zh-cn/blog/download.html

这里以seata-server-1.3为例:https://github.com/seata/seata/releases/download/v1.3.0/seata-server-1.3.0.zip

二、执行官网提供的sql文件,修改registry.conf配置文件

1、执行官网提供的sql文件建表

https://github.com/seata/seata/tree/1.3.0/script/server/db

2、修改registry.conf配置文件

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "你的nacos地址"
    group = "SEATA_GROUP"
    namespace = "命名空间"
    cluster = "default"
    username = "nacos用户名"
    password = "nacos密码"
  }
  eureka {
    serviceUrl = "http://localhost:8761/eureka"
    application = "default"
    weight = "1"
  }
  redis {
    serverAddr = "localhost:6379"
    db = 0
    password = ""
    cluster = "default"
    timeout = 0
  }
  zk {
    cluster = "default"
    serverAddr = "127.0.0.1:2181"
    sessionTimeout = 6000
    connectTimeout = 2000
    username = ""
    password = ""
  }
  consul {
    cluster = "default"
    serverAddr = "127.0.0.1:8500"
  }
  etcd3 {
    cluster = "default"
    serverAddr = "http://localhost:2379"
  }
  sofa {
    serverAddr = "127.0.0.1:9603"
    application = "default"
    region = "DEFAULT_ZONE"
    datacenter = "DefaultDataCenter"
    cluster = "default"
    group = "SEATA_GROUP"
    addressWaitTime = "3000"
  }
  file {
    name = "file.conf"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "你的nacos地址"
    namespace = "命名空间"
    group = "SEATA_GROUP"
    username = "nacos用户名"
    password = "nacos密码"
  }
  consul {
    serverAddr = "127.0.0.1:8500"
  }
  apollo {
    appId = "seata-server"
    apolloMeta = "http://192.168.1.204:8801"
    namespace = "application"
  }
  zk {
    serverAddr = "127.0.0.1:2181"
    sessionTimeout = 6000
    connectTimeout = 2000
    username = ""
    password = ""
  }
  etcd3 {
    serverAddr = "http://localhost:2379"
  }
  file {
    name = "file.conf"
  }
}

           

三、将配置信息上传至nacos配置中心

1、官方已经提供好了config.txt,下载地址:https://github.com/seata/seata/tree/develop/script/config-center

2、修改config.txt配置文件中的内容(ps:也可以上传至nacos后在nacos配置中心上进行修改)

需要修改的内容如下:

service.vgroupMapping.nanyiba_global_tx_group=default
store.mode=db
store.db.url=jdbc:mysql://mysqlip:mysql端口号/库名?useUnicode=true
store.db.user=mysql账户
store.db.password=mysql密码

nanyiba_global_tx_group是要修改的地方,这里修改的内容,后面整合时需要的
           

3、将config.txt中的配置信息上传至nacos配置中心

执行命令如下:

sh nacos-config.sh -h 你的nacosIP地址 -p 你的nacos端口 -g SEATA_GROUP -t 命名空间 -u nacos用户吗 -w nacos密码
           

四、启动seata-server服务端

启动命令:
./bin/seata-server.sh -p 8091 -h 你部署seata-server服务器的ip地址 -p 你想配置seata-server的端口号 -m db

具体参数文档:https://seata.io/zh-cn/docs/ops/deploy-server.html

ps:这里如果不指定ip地址,后面整合时,应用启动时它找的是你seata-server内网ip地址
           

五、seata整合spring cloud alibaba

1、pom引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
           

2、application.yml配置文件

spring:
  cloud:
    alibaba:
      seata:
        tx-service-group: nanyiba-global-tx-group #事务分组名称
seata:
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: nacosd地址
      group: SEATA_GROUP
      namespace: 命名空间
      cluster: default
      username: nacos账户
      password: nacos密码
  config:
    type: nacos
    nacos:
      server-addr: nacosd地址
      group: SEATA_GROUP
      namespace: 命名空间
      username: nacos账户
      password: nacos密码
           

六、可能会出现的问题

问题:no available service ‘null’ found, please make sure registry config correct

提示:检查application.yml配置文件的事务分组名称是否和nacos配置中心的保持一致

seata整合spring cloud alibaba并把nacos作为seata的注册中心和配置中心