【分布式事务系列】Seata服务端的注册和统一配置

496 阅读2分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

将配置上传到Nacos配置中心

下载Seata源码,在源码包中有一个script文件夹,目录结构如下:

  • client:存放客户端的SQL脚本,参数配置

  • config-center:各个配置中心参数导入脚本,config.txt包含server和client,它为通用参数文件

  • server:服务端数据库脚本及各个容器配置

    进入config-server目录,包含config.txt和不同配置中心的目录,这个目录下存放shell脚本和py脚本,config.txt存放的是seata客户端和服务器的所有配置信息。

在config-center/nacos目录下,执行脚本命令如下:

sh nacos-config.sh -h 10.0.100.254 -p 8848 -g SEATA_GROUP

这个脚本的作用是把config.txt中的配置信息上传到Nacos配置中心,config.txt中提供的是默认配置,在实际使用时可以先修改该文件的内容,再执行上传操作,上传完成后根据实际情况在nacos控制台上修改相关参数。

Seata服务端修改配置加载位置

进入${SEATA_HOME}/conf目录,修改registry.conf文件中的config配置项,配置如下:

registry {
  type = "nacos"

  nacos {
    application = "seata-server"
    serverAddr = "10.0.100.254:8848"
    group = "SEATA_GROUP"
    namespace = ""
    cluster = "default"
    username = ""
    password = ""
  }
   }
   
   config {
  type = "file"

  nacos {
    serverAddr = "10.0.100.254:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = ""
    password = ""
    dataId = "seataServer.properties"
  }
   }

完成Seata服务端的注册和统一配置的管理。

Spring Cloud集成Seata 实现分布式事务

通过一个电商平台的购买逻辑,基于Spring Cloud环境集成Seata 实现分布式事务。

在整个业务流程中,涉及到三个服务,分别如下:

  1. 订单服务:创建订单
  2. 账户服务:从账户中扣除余额
  3. 库存服务:扣减指定商品的库存服务

用户执行下单请求时,会调用下单业务的REST接口,接口会分别调用库存服务和订单服务,订单服务还会调用账户服务先进行资金冻结,整个流程涉及到这三个服务的分布式事务问题。