Seata的搭建和使用

发布于 2022-04-26  2.76k 次阅读


一,Seata Server的搭建

Seata服务下载地址:https://github.com/seata/seata/releases
 
部署高可用的Seata集群服务采用DB+Nacos的方式

一,Seata数据源的配置

Server端存储模式(store.mode)支持三种:
  • file(默认):单机模式,全局事务会话信息从内存中读写并持久化到本地文件root.data,性能较高(默认)
  • db(5.7以上版本):高可用模式(集群模式),全局事务会话信息通过db共享,性能较差(开发的通用存储方式)
  • redis:Seata-Server 1.3及以上版本支持,性能较高,但存在事务信息丢失的风险,需要提前配置redis的RDB,AOF持久化
  • client:存放client端的SQL脚本,参数配置
  • config-center:各个配置中心参数导入脚本,config.txt(包含server和client)为通用参数文件
  • server:server端数据库脚本及各个容器配置
修改数据源的步骤:
  1. 导入seata的sql文件到数据库
  2. 配置数据源

1,导入seata的sql文件

通过source或者工具导入数据库:

2,修改数据源

在./conf/file.conf文件中修改数据源:

  • mode模式改为db
  • 修改mysql连接配置
store {
  mode = "db"

  db {
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/seata_data"
    user = "root"
    password = "123456789"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }
}

二,Seata对Nacos的配置

Seata整合Nacos的作用:

  • 通过Nacos保存Seata集群配置文件,这样就不需要单机分别配置
  • 注册Seata服务到Nacos,事务参与者,客户端等可用通过nacos访问Seata服务集群(负载均衡)

在传统的方式中使用file.conf的方式维护每一个节点,每一个节点都需要用这个文件进行维护,使用Nacos之后可以统一配置

配置的步骤:

  1. 修改conf/registry.conf文件,配置注册中心和配置中心
  2. 下载config.txt文件(在里面是seata的配置信息)并进行修改
  3. 将config.txt配置信息导入到(1,下载导入脚本  2,执行脚本导入)

config.txt主要保存一些静态变量,具体的变量含义官方文档有具体解释

① 修改./conf/registry.conf文件进行配置

registry {#注册中心
  #注册中心的类,有file 、nacos 、eureka、redis、zk、consul、etcd3、sofa供选择
  type = "nacos"
  #注册中心对Seata集群的负载均衡策略,默认是轮询
  loadBalance = "RandomLoadBalance"
  nacos {
    application = "seata-server"
    #nacos的服务地址
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = ""
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }}
config {#配置中心
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"
  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
  }
}

②  修改config.txt(只需要修改数据源,其他默认即可)

store.mode=db
store.db.url=jdbc:mysql://127.0.0.1:3306/seata_data?useUnicode=true
store.db.user=root
store.db.password=123456789
③ 将config.txt导入Nacos配置中心
1,下载导入脚本
2,执行脚本
执行命令:
./nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 12daxw21-asd1
参数说明:
  • -h:host 默认值localhost
  • -p:port 默认8848
  • -g:配置分组,默认值为"SEATA_GROUP"
  • -t:租户信息,对应Nacos的命名空间ID字段,默认值为空""