一些概念

什么是分布式事务?

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器(数据库)以及事务管理器分别位于不同的分布式系统的不同节点之上,在微服务后,事务有可能会跨库,必定需要分布式事务的支持。

XA是什么?

XA是一个协议,用于资源管理器 既(数据库) 和 事务管理器(事务管理框架)的 协作。数据库厂商通过实现XA协议 来使应用可以通过事务管理器实现分布式事务。事务管理器通过XA协议提供的函数来操作数据库。XA协议基于二阶段提交,因此XA协议提供的函数主要有:

    1)xa_open,xa_close:建立和关闭与资源管理器(数据库)的连接。

  2)xa_start,xa_end:开始和结束一个本地事务。

  3)xa_prepare,xa_commit,xa_rollback:预提交、提交和回滚一个本地事务。

  4)xa_recover:回滚一个已进行预提交的事务。

  5)ax_开头的函数使资源管理器可以动态地在事务管理器中进行注册,并可以对XID(TRANSACTION IDS)进行操作。

  6)ax_reg,ax_unreg;允许一个资源管理器在一个TMS(TRANSACTION MANAGER SERVER)中动态注册或撤消注册。

数据库表分库后,业务场景下的单库本地事务可能变成跨库分布式事务。虽然非常推崇可以通过合适的分库规则让操作的数据在同库下,继续保证单库本地事务,但不是所有场景下都能适用。如果这些场景对事务的一致性有要求,就不得不解决分布式事务的“麻烦”。sharding-jdbc 目前只只支持弱事务和柔性事务

弱事务

弱事务是把自动提交设置为false,被路由的所有的数据库链接执行完sql后 统一在一个一个的执行commit操作 。因此 在sql执行失败的时候,可以全部回滚,但是当在commit 的时候出现异常,那么这个提交异常的分片链接将执行失败 ,其他的链接的将提交成功,这就导致数据不一致,因此是弱XA。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值