背景信息 #
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 柔性事务