Logo
分布式事务

分布式事务 #

适用场景

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