TCC和XA的区别

TCC和XA的区别和概述

TCC

主要限制

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

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

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

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

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

概述和原理

原来一个接口就可以,现在要提供三个接口
try 数据就生效了,提交了事务
confirm 确定下数据,查询try的数据是否正确
cancle 回滚数据,把try的数据回滚掉

在这里插入图片描述

XA(很少使用了)

主要限制

必须要拿到所有数据源,而且数据源还要支持XA协议。
性能比较差,要把所有涉及到的数据都要锁定,是强一致性的,会产生长事务。

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

适用于单体架构

概述和与原理

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

其中有几个概念:

AP 代表我们的应用程序,参与事务发起和结束。
RM 代表资源管理器,主要负责管理每个数据库的连接数据源
TM 代表事务管理器,负责事务的全局管理,包括事务的生命周期管理和资源的分配协调等。
下面是2pc提交的的大概流程
大概流程

两者的区别

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值