SpringCloud+Nacos整合Seata

资料下载(本文版本1.3.0) seata: https://github.com/seata/seata **seata-server:**https://github.com/seata/seata/releases **参考文档:**http://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html

1. nacos配置

修改seata源码中 ..seata-1.3.0scriptconfig-center下config.txt

service.vgroupMapping.my_test_tx_group=default
# 更改my_test_tx_group为自己服务名称,多个服务复制即可,需要与步骤 3 配置对应
service.vgroupMapping.platform-provider-card-group=default
service.vgroupMapping.platform-provider-ring-group=default

将 Seata 配置添加到 Nacos 中

cd ..seata-1.3.0scriptconfig-center
acos
sh nacos-config.sh localhost

成功后提示init nacos config finished, please start seata-server

在 Nacos 管理页面应该可以看到有多个 Group 为SEATA_GROUP的配置

2. seata-server配置

修改配置文件file.conf

mode修改为db模式(db模式为高可用模式,全局事务会话信息通过db共享,相应性能差些,按实际需求调整模式)

store {
          
   
  ## store mode: file、db、redis
  mode = "db"

  ## database store property
  db {
          
   
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/seata"
    user = "root"
    password = "root"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }
}
修改配置文件registry.conf

切换为nacos模式,group = "SEATA_GROUP" 、cluster = "default"后面配置需对应

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

  nacos {
          
   
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = ""
    cluster = "default"
    username = ""
    password = ""
  }
}
启动seata-server

cmd运行seata-server.bat,这种方法如有错误可看到日志进行处理,不会闪退。

启动成功后会在nacos中看到seata-server服务

3. 项目集成配置

引入seata依赖,根据官方参考文档这里选择了seata-spring-boot-starter配置较简单

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

添加seata相关配置信息,需要在每个服务中配置,并修改tx-service-group为服务名称,并与步骤 1 中nacos配置保持一致

seata:
  application-id: ${
          
   spring.application.name}
  #需要和nacos中配置保持一致
  tx-service-group: platform-provider-ring-group
  config:
    type: nacos
    nacos:
      #需要和server在同一个注册中心下
      serverAddr: 127.0.0.1:8848
      #需要server端(registry和config)、nacos配置client端(registry和config)保持一致
      group: SEATA_GROUP
  registry:
    type: nacos
    nacos:
      #需要和server端保持一致,即server在nacos中的名称,默认为seata-server
      application: seata-server
      serverAddr: 127.0.0.1:8848
      #需要server端(registry和config)、nacos配置client端(registry和config)保持一致
      group: SEATA_GROUP
经验分享 程序员 微信小程序 职场和发展