分布式事务

ShardingSphere-Proxy 接入的分布式事务 API 同 ShardingSphere-JDBC 保持一致,支持 LOCAL,XA,BASE 类型的事务。

XA 事务

  • ShardingSphere-Proxy 原生支持 XA 事务,默认的事务管理器为 Atomikos。 可以通过在 ShardingSphere-Proxy 的 conf 目录中添加 jta.properties 来定制化 Atomikos 配置项。 具体的配置规则请参考 Atomikos 的官方文档

  • 使用 Narayana事务管理器,需要参考以下步骤。

  1. 将 Narayana 所需 jar 拷贝至 /lib 目录。参考如下:
  1. <properties>
  2. <narayana.version>5.9.1.Final</narayana.version>
  3. <jboss-transaction-spi.version>7.6.0.Final</jboss-transaction-spi.version>
  4. <jboss-logging.version>3.2.1.Final</jboss-logging.version>
  5. </properties>
  6. <dependency>
  7. <groupId>org.apache.shardingsphere</groupId>
  8. <artifactId>shardingsphere-transaction-xa-narayana</artifactId>
  9. <version>${shardingsphere.version}</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.jboss.narayana.jta</groupId>
  13. <artifactId>jta</artifactId>
  14. <version>${narayana.version}</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.jboss.narayana.jts</groupId>
  18. <artifactId>narayana-jts-integration</artifactId>
  19. <version>${narayana.version}</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.jboss</groupId>
  23. <artifactId>jboss-transaction-spi</artifactId>
  24. <version>${jboss-transaction-spi.version}</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.jboss.logging</groupId>
  28. <artifactId>jboss-logging</artifactId>
  29. <version>${jboss-logging.version}</version>
  30. </dependency>
  1. conf/server.yaml 中加入如下配置:
  1. - !TRANSACTION
  2. defaultType: XA
  3. providerType: Narayana
  1. 新增 jbossts-properties.xml 文件来定制化 Narayana 配置项,它的加载路径顺序:user.dir (pwd) > user.home > java.home > classpath。 详情请参见Narayana官方文档
  • 使用 Bitronix事务管理器,需要参考以下步骤。
  1. 将 Bitronix 所需 jar 拷贝至 /lib 目录。参考如下:
  1. <properties>
  2. <btm.version>2.1.3</btm.version>
  3. </properties>
  4. <dependency>
  5. <groupId>org.apache.shardingsphere</groupId>
  6. <artifactId>shardingsphere-transaction-xa-bitronix</artifactId>
  7. <version>${shardingsphere.version}</version>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.codehaus.btm</groupId>
  11. <artifactId>btm</artifactId>
  12. <version>${btm.version}</version>
  13. </dependency>
  1. conf/server.yaml 中加入如下配置:
  1. - !TRANSACTION
  2. defaultType: XA
  3. providerType: Bitronix
  1. Bitronix 配置详情请参见Bitronix官方文档

BASE 事务

BASE 目前没有集成至 ShardingSphere-Proxy 的二进制发布包中,使用时需要将实现了 ShardingSphereTransactionManager SPI 的 jar 拷贝至 conf/lib 目录,然后切换事务类型为 BASE。