您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
ShardingSphere-JDBC——分布式事务使用手册(下)
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
ShardingSphere-JDBC——分布式事务使用手册(下)
Apache ShardingSphere
2021-01-20
IP归属:未知
32280浏览
# ATOMIKOS 事务 Apache ShardingSphere 默认的 XA 事务管理器为 Atomikos。 ## 数据恢复 在项目的 `logs` 目录中会生成`xa_tx.log`, 这是 XA 崩溃恢复时所需的日志,请勿删除。 ## 修改配置 可以通过在项目的 classpath 中添加 `jta.properties` 来定制化 Atomikos 配置项。 详情请参见[Atomikos官方文档](https://www.atomikos.com/Documentation/JtaProperties)。 # NARAYANA 事务 ## 引入 Maven 依赖 ```xml <propeties> <narayana.version>5.9.1.Final</narayana.version> <jboss-transaction-spi.version>7.6.0.Final</jboss-transaction-spi.version> <jboss-logging.version>3.2.1.Final</jboss-logging.version> </propeties> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 XA 事务时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-transaction-xa-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-transaction-xa-narayana</artifactId> <version>${shardingsphere.version}</version> </dependency> <dependency> <groupId>org.jboss.narayana.jta</groupId> <artifactId>jta</artifactId> <version>${narayana.version}</version> </dependency> <dependency> <groupId>org.jboss.narayana.jts</groupId> <artifactId>narayana-jts-integration</artifactId> <version>${narayana.version}</version> </dependency> <dependency> <groupId>org.jboss</groupId> <artifactId>jboss-transaction-spi</artifactId> <version>${jboss-transaction-spi.version}</version> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>${jboss-logging.version}</version> </dependency> ``` ## 定制化配置项 可以通过在项目的 classpath 中添加 `jbossts-properties.xml` 来定制化 Narayana 配置项。 详情请参见[Narayana官方文档](https://narayana.io/documentation/index.html)。 ## 设置 XA 事务管理类型 Yaml: ```yaml props: xa-transaction-manager-type: Narayana ``` SpringBoot: ```yaml spring: shardingsphere: props: xa-transaction-manager-type: Narayana ``` Spring Namespace: ```xml <shardingsphere:data-source id="xxx" data-source-names="xxx" rule-refs="xxx"> <props> <prop key="xa-transaction-manager-type">Narayana</prop> </props> </shardingsphere:data-source> ``` # BITRONIX 事务 ## 引入 Maven 依赖 ```xml <propeties> <btm.version>2.1.3</btm.version> </propeties> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用 XA 事务时,需要引入此模块 --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-transaction-xa-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-transaction-xa-bitronix</artifactId> <version>${shardingsphere.version}</version> </dependency> <dependency> <groupId>org.codehaus.btm</groupId> <artifactId>btm</artifactId> <version>${btm.version}</version> </dependency> ``` ## 定制化配置项 详情请参见[Bitronix官方文档](https://github.com/bitronix/btm/wiki)。 ## 设置 XA 事务管理类型 Yaml: ```yaml props: xa-transaction-manager-type: Bitronix ``` SpringBoot: ```yaml spring: shardingsphere: props: xa-transaction-manager-type: Bitronix ``` Spring Namespace: ```xml <shardingsphere:data-source id="xxx" data-source-names="xxx" rule-refs="xxx"> <props> <prop key="xa-transaction-manager-type">Bitronix</prop> </props> </shardingsphere:data-source> ``` # SEATA 事务 ## 启动 Seata 服务 按照 [seata-work-shop](https://github.com/seata/seata-workshop)中的步骤,下载并启动 Seata 服务器。 ## 创建日志表 在每一个分片数据库实例中执创建 `undo_log`表(以 MySQL 为例)。 ```sql CREATE TABLE IF NOT EXISTS `undo_log` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'increment id', `branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id', `xid` VARCHAR(100) NOT NULL COMMENT 'global transaction id', `context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization', `rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info', `log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status', `log_created` DATETIME NOT NULL COMMENT 'create datetime', `log_modified` DATETIME NOT NULL COMMENT 'modify datetime', PRIMARY KEY (`id`), UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table'; ``` ## 修改配置 在 classpath 中增加 `seata.conf` 文件。 ```conf client { application.id = example ## 应用唯一主键 transaction.service.group = my_test_tx_group ## 所属事务组 } ``` 根据实际场景修改 Seata 的 `file.conf`和 `registry.conf` 文件。
原创文章,需联系作者,授权转载
上一篇:Agile Alliance 测试看Agile-如何提升敏捷团队的测试能力
下一篇:ShardingSphere-JDBC——分布式事务使用手册(上)
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号