Logo
分布式事务

背景信息 #

SphereEx-DBPlusEngine 提供了三种模式的分布式事务 LOCAL, XA, BASE

参数解释 #

rules:
  - TRANSACTION
    defaultType: # 事务模式,可选值 LOCAL/XA/BASE
    providerType: # 指定模式下的具体实现

操作步骤 #

使用 LOCAL 模式 #

global.yaml 配置文件内容如下:

rules:
  - TRANSACTION
    defaultType: LOCAL

使用 XA 模式 #

global.yaml 配置文件内容如下:

rules:
  - TRANSACTION
    defaultType: XA
    providerType: Narayana/Atomikos 

说明:

SphereEx-DBPlusEngine 内置了 Narayana 的相关依赖,可以直接配置使用。 推荐使用 providerType: Narayana,推荐配置示例如下:

transaction:
  defaultType: XA
  providerType: Narayana
  props:
    recoveryStoreDataSource: com.zaxxer.hikari.HikariDataSource
    # 以 MySQL 为例,需要提前创建 jbossts 数据库
    recoveryStoreUrl: jdbc:mysql://127.0.0.1:3306/jbossts?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
    recoveryStoreUser: 
    recoveryStorePassword: 
    # 可选配置,指定连接池的最大连接数,默认为10,线上环境必须根据业务并发情况进行合理调整。
    recoveryStoreMaxPoolSize: 10
    # 可选配置,指定连接池的最小连接数,默认为1,线上环境必须根据业务并发情况进行合理调整。
    recoveryStoreMinPoolSize: 1
    # 可选配置,指定连接池的连接超时时间,默认为30秒
    recoveryStoreConnectionTimeoutMilliseconds: 30000
    # 可选配置,指定连接池的空闲连接超时时间,默认为60秒
    recoveryStoreIdleTimeoutMilliseconds: 60000
    # 可选配置,指定连接池的最大生命周期时间,默认为30分钟
    recoveryStoreMaxLifetimeMilliseconds: 1800000
    # 可选配置,配置事务超时时间,默认为 300 秒
    defaultTimeout: 300 

测试环境可选通过文件方式存储 XA 事务恢复日志,配置示例如下:

transaction:
  defaultType: XA
  providerType: Narayana
  props:
    recoveryStoreType: File

使用 BASE 模式 #

global.yaml 配置文件内容如下:

rules:
  - TRANSACTION
    defaultType: BASE
    providerType: Seata 

搭建 Seata Server,添加相关配置文件,和 Seata 依赖,具体步骤参考 DBPlusEngine 集成 Seata 柔性事务