1. 概述

JPAAS是一个分布式的开发平台,因此很重要的一件事情就是需要解决分布式事务的问题,JPAAS采用了 SEATA作为平台的 分布式事务解决方案。seata 是阿里的自己在用的分布式事务解决方案,因此可靠性,性能都是毋庸置疑的。

2. 部署步骤

seata 是基于nacos作为配置和注册中心使用的,可以支持高可用,seata 的配置也是基于nacos的。

2.1 创建seata 的事务管理数据库

执行脚本:

2.2 导入seata配置

我们将seata的配置已经导出,只需要在nacos进行导入,导入seata的配置。

这里我们主要需要修改的是几个地方:

2.2.1 数据库的配置:

根据实际情况做相应的更改。

2.2.2 修改事务组(默认不用改)

这个事务组需要在nacos 做相应的配置。

这里需要名称保持一致。

2.2.3 支持MYSQL8

驱动类名修改为:

com.mysql.cj.jdbc.Driver

2.2.4 支持ORACLE

1.修改seata配置信息,数据库类型,数据库驱动,用户名,密码

2.执行oracle数据库环境的seata的数据库脚本

3.将oracle的连接驱动程序jar包复制到服务器当前目录下

2.3 修改 seata 服务的配置

编辑 registry.conf 配置


registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  nacos {
    application = "seata-server"
    serverAddr = "localhost:8848"
    namespace = "public"
    group = "DEFAULT_GROUP"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"
  nacos {
    serverAddr = "localhost:8848"
    namespace = ""
    group = "SEATA_GROUP"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}

这里只需要修改 serverAddr 为 nacos 的地址。

2.4 启动SEATA 服务

配置好后,启动 seata server,如果没有报错,我们可以看到 seata server 在nacos中进行注册成功。

启动命令:

nohup ./seata-server.sh -p 8888 -h 192.168.1.10 &

2.5 SEATA 高可用

其实按照上面的配置好后,只需要 多启动几个 seata-server,这样 seata 的集群就搭建好了。

nohup ./seata-server.sh -p 8888 -h 192.168.1.10 -n 1 &

-n:Server node。在多个 TC Server 时,需区分各自节点,用于生成不同区间的 transactionId 事务编号,以免冲突。

2.6 程序配置

在新建项目时,我们可以这样配置 seata.

seata:
  enabled: true
  application-id: ${spring.application.name}
  tx-service-group: bpm_tx_group
  enable-auto-data-source-proxy: true

  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: ${nacos.address}
      group: DEFAULT_GROUP
      userName: nacos
      password: nacos

  config:
    type: nacos
    nacos:
      namespace:
      serverAddr: ${nacos.address}
      group: SEATA_GROUP
      cluster: default
      userName: nacos
      password: nacos

需要改动的地方为:
tx-service-group: bpm_tx_group,这个需要和 nacos 的配置改成一致。
service.vgroupMapping.bpm_tx_group=default

nacos.address配置指向之前配置的 nacos server。

2.7 升级到seata1.3

从 seata 1.2 升级到 1.3 的方法。

1.客户端只需要修改pom.xml 。
2.服务端替换成1.3。

<dependency>
                <groupId>io.seata</groupId>
                <artifactId>seata-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
                <version>2.2.0.RELEASE</version>
                <exclusions>
                    <exclusion>
                        <groupId>io.seata</groupId>
                        <artifactId>seata-spring-boot-starter</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.alibaba.cloud</groupId>
                        <artifactId>spring-cloud-alibaba-seata</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>io.seata</groupId>
                <artifactId>seata-all</artifactId>
                <version>1.3.0</version>
            </dependency>
文档更新时间: 2021-10-31 14:46   作者:csx