分布式事务 #
适用场景
DBPlusEngine 分布式数据库解决方案提供分布式事务的支持,常用的有 XA 和 BASE。分布式事务提供了最终一致性的语义,在 XA 模式下,存储 DB 的隔离级别如果是 Serializable ,可以达到强一致性的语义。下面是使用 XA 事务的方法。
前提条件
以 DBPlusEngine-Proxy 为例,下载并解压 Proxy,参考如下配置,在 conf
目录下配置对应的配置文件后启动 proxy。
配置示例
- 使用 Atomikos 配置
server.yaml
rules:
- !TRANSACTION
defaultType: XA
providerType: Atomikos
- 使用 Narayana 配置
由于 Narayana 配置比较繁琐,DBPlusEngine-Proxy 提供了自动化配置功能,现在用户无需手动配置 jbossts-properties.xml 配置文件,DBPlusEngine 会自动根据用户在 server.yaml 里指定的 Narayana 事务配置,生成对应的 jbossts-properties.xml 配置文件。
server.yaml
rules:
- !TRANSACTION
defaultType: XA
providerType: Narayana
当使用 Narayana 作为 XA 事务管理器时,并且配置了使用 DB 方式存储 XA Recovery 信息,则 DBPlusEngine-Proxy 支持将故障的 Proxy 实例上尚未恢复的事务转移到其他 Proxy 上进行恢复。
配置如下:
- !TRANSACTION
defaultType: XA
providerType: Narayana
props:
recoveryStoreUrl: jdbc:mysql://127.0.0.1:3306/jbossts?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true
# mysql8 使用 com.mysql.cj.jdbc.MysqlDataSource
recoveryStoreDataSource: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
recoveryStoreUser: databaseUser
recoveryStorePassword: databasePwd