基于springboot的ShardingSphere5.X的分库分表的解决方案之基于seata的分布式事务的解决方案(十五)
在前面的章节我们已经对ShardingSphere5.X的核心功能进行了讲解了,那么作为扩展,我们在本章将为大家讲解ShardingSphere5.X的基于seata的分布式事务的实现。
我们首先需要将seata于以下的几个事务进行比对。
1、ShardingSphere分布式事务概览
1.1、本地事务
1.1.1、支持项
- 完全支持非跨库事务,例如:仅分表,或分库但是路由的结果在单库中;
- 完全支持因逻辑异常导致的跨库事务。例如:同一事务中,跨两个库更新。更新完毕后,抛出空指针,则两个库的内容都能回滚。
1.1.2、不支持项
- 不支持因网络、硬件异常导致的跨库事务。例如:同一事务中,跨两个库更新,更新完毕后、未提交之前,第一个库宕机,则只有第二个库数据提交。
1.2、XA两阶段事务
1.2.1、支持项
- 支持数据分片后的跨库事务;
- 两阶段提交保证操作的原子性和数据的强一致性;
- 服务宕机重启后,提交/回滚中的事务可自动恢复;
- 支持同时使用 XA 和非 XA 的连接池。