xa 全局锁_浅谈TCC和XA的区别和概述

TCC和XA的区别和概述

TCC

主要限制

对业务有侵入性,需要提供了三个接口。

主业务服务和从业务服务都需要进行改造,从业务方改造成本更高。如果从业务方还不是自己的公司的话那更是成本提高了(可能人家都不搭理你),原来只需要提供一个接口,现在需要改造成try、confirm、canel3个接口,开发成本高。

c96116e02ba59723d6804a7825b61707.png

使用范围(业务层面的控制)

分布式架构,TCC是分布式事务,是最终一致性的,不会长期持有所有数据库资源的锁,原理上还是提交本地事务,所以不会存在长事务,这样就和本地事事务没有区别,性能很好。

第一阶段由发起方(发起所在的程序)发出try请求,第二阶段由事务管理器发起confirm/cancel请求,而且采用了异步实现。

概述和原理

原来一个接口就可以,现在要提供三个接口

try 数据就生效了,提交了事务

confirm 确定下数据,查询try的数据是否正确

cancle 回滚数据,把try的数据回滚掉

5f6eace85196d01736e3c90e5a1c655b.png

XA(很少使用了)

主要限制

必须要拿到所有数据源,而且数据源还要支持XA协议。

性能比较差,要把所有涉及到的数据都要锁定,是强一致性的,会产生长事务。

使用范围(资源管理方面的控制)

适用于单体架构

概述和与原理

XA协议是由X/Open组织提出的一个分布式事务处理规范,目前MySQL中只有InnoDB存储引擎支持XA协议。

其中有几个概念:

AP 代表我们的应用程序,参与事务发起和结束。

RM 代表资源管理器,主要负责管理每个数据库的连接数据源

TM 代表事务管理器,负责事务的全局管理,包括事务的生命周期管理和资源的分配协调等。

下面是2pc提交的的大概流程

c7ac6fa99347fda5f6784caeaaa98dfd.png

两者的区别

XA是把所有数据执行成功的通知发送给协调器(第一阶段),协调器在执行commit(第二阶段)

TCC是第一阶段就把事务commit了(try接口),TCC的第二阶段是一个确认(Confirm)的阶段,也就是说只需要调用各个子系统里的confirm逻辑,所以在执行confirm逻辑的时候,并不会持有数据库的锁,所以不会产生性能问题。

山东掌趣网络科技

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值