Sharding分布式事务总结之XA事务(ATOMIKOS)
1.Sharding所支持的XA事务
支持ATOMIKOS 事务,NARAYANA 事务,BITRONIX 事务。
默认的 XA 事务管理器为 Atomikos。
2. ATOMIKOS事务
1.基本原理
一阶段预提交,二阶段提交/回滚。如果二阶段提交失败(数据库服务器断电)会生成日志,待服务器重启恢复后,继续当前提交或者回滚。
2.优缺点
优点:事务操作时会对资源进行锁定,保证数据的强一致性。
缺点:由于对资源锁定会造成同步阻塞,可用性大大降低,效率也不高。比如二阶段提交失败,那么在未恢复前会锁住当前事务下所有资源。
3.使用方法
<!-- 添加sharding-jdbc依赖 -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>5.0.0-alpha</version>
</dependency>
<!-- 使用 XA 事务 -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-transaction-xa-core</artifactId>
<version>5.0.0-alpha</version>
</dependency>
本项目使用的是读取Yaml配置的方式启动sharding,依赖引用为shardingsphere-jdbc-core,其他方式读取配置文件详见官网。
启动时日志输出
注册RM数据源
使用方法
@Transactional与@ShardingTransactiontype()配合使用
本项目经过测试发现官方提供的分布式事务切换注解@ShardingTransactionType(TransactionType.XA) 无效,猜测原因以及解决办法可以看上节内容。
如此便可以成功使用Sharding分布式事务之XA事务,下一节将总结介绍BASE事务,就也就是seat框架的AT模式。