首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式事务之深入理解什么是2PC、3PC及TCC协议?

、3PC、TCC之类的基本问题,之后再单独去介绍RocketMQ事务消息相关的实践。...4 两阶段提交(2PC) 两阶段提交又称2PC(two-phase commit protocol),2pc是一个非常经典的强一致、中心化的原子提交协议。...6 补偿事务(TCC) 说起分布式事务的概念,不少人都会搞混淆,似乎好像分布式事务就是TCC。实际上TCC2PC、3PC一样,只是分布式事务的一种实现方案而已。...TCC事务的处理流程与2PC两阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质上就是一个应用层面的2PC,需要通过业务逻辑来实现。...TCC的具体原理图如?: 7 消息队列MQ事务 在前面介绍2PC、3PC的时候我们说没有根本解决性能问题,而如果通过MQ的事务消息来进行异步解耦,并实现系统的数据的最终一致性的话会不会好很多呢?

2K20

面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!

2、三段提交(3PC) 三段提交(3PC)是对两段提交(2PC)的一种升级优化,3PC在2PC的第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前,各参与者节点的状态都一致。...3、补偿事务(TCC) 很多初学者总是被TCC2PC、3PC这几个概念搞混淆,傻傻分不清,实际上 TCC2PC、3PC一样,都只是实现分布式事务的一种方案而已。...TCC(Try-Confirm-Cancel)又被称补偿事务,TCC2PC的思想很相似,事务处理流程也很相似,但2PC 是应用于在DB层面,TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现...上边图片源自网络,如有侵权联系删除 TCC的缺点: 应用侵入性强:TCC由于基于在业务层面,至使每个操作都需要有 try、confirm、cancel三个接口。...总结 很浅显的介绍了一下2PC、3PC、TCC的概念,如有错误还望温柔指正,分布式事务一直都是面试中比较热点的问题,也是进阶高级Java工程师必备的知识点。

37920
您找到你想要的搜索结果了吗?
是的
没有找到

面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病!

2、三段提交(3PC) 三段提交(3PC)是对两段提交(2PC)的一种升级优化,3PC在2PC的第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前,各参与者节点的状态都一致。...3、补偿事务(TCC) 很多初学者总是被TCC2PC、3PC这几个概念搞混淆,傻傻分不清,实际上 TCC2PC、3PC一样,都只是实现分布式事务的一种方案而已。...TCC(Try-Confirm-Cancel)又被称补偿事务,TCC2PC的思想很相似,事务处理流程也很相似,但2PC 是应用于在DB层面,TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现...[在这里插入图片描述] 上边图片源自网络,如有侵权联系删除 TCC的缺点: 应用侵入性强:TCC由于基于在业务层面,至使每个操作都需要有 try、confirm、cancel三个接口。...总结 很浅显的介绍了一下2PC、3PC、TCC的概念,如有错误还望温柔指正,分布式事务一直都是面试中比较热点的问题,也是进阶高级Java工程师必备的知识点。

2.8K00

分布式柔性事务的TCC方案

3、业务活动日志成本 适用范围: 1、强隔离性、严格一致性要求的业务活动 2、适用于执行时间较短的业务 - TCC2PC对比 - TCC将事务提交划分成两个阶段,Try即为一阶段,Confirm...从阶段划分上非常像2PC,我们是否可以说TCC是一种2PC或者2PC变种呢?其实不可以,原因如下: 1、2PC的操作对象在于资源层,对于开发人员无感知;而TCC的操作在于业务层,具有较高开发成本。...2、2PC是一个整体的长事务,也是刚性事务;而TCC是一组的本地短事务,是柔性事务。...3、2PC的Prepare(表决阶段)进行了操作表决;而TCC的try并没有表决准备,直接兼备资源操作与准备能力 4、2PC是全局锁定资源,所有参与者阻塞 交互等待TM通知;而TCC的资源锁定在于Try...- 总结 - 因为TCC对业务的强侵入性,使用成本非常昂贵,虽然提供了更灵活的资源锁粒度,对标2PC拥有更高的吞吐量。

86320

分布式架构设计篇(八)-柔性事务之TCC详解

从阶段划分上非常像2PC,我们是否可以说TCC是一种2PC或者2PC变种呢?其实不可以,原因如下: 2PC的操作对象在于资源层,对于开发人员无感知;而TCC的操作在于业务层,具有较高开发成本。...2PC是一个整体的长事务,也是刚性事务;而TCC是一组的本地短事务,是柔性事务。...2PC的Prepare(表决阶段)进行了操作表决;而TCC的try并没有表决准备,直接兼备资源操作与准备能力 2PC是全局锁定资源,所有参与者阻塞 交互等待TM通知;而TCC的资源锁定在于Try操作,业务方可以灵活选择业务资源的锁定粒度...图片.png ​ 因为TCC对业务的强侵入性,使用成本非常昂贵,虽然提供了更灵活的资源锁粒度,对标2PC拥有更高的吞吐量。...但是相对于2PC的强一致性来说,TCC的实施成本和数据一致性的牺牲带来的相对高吞吐量,总体表现出来的性价比非常低,反而在市面上成熟的大型企业中几乎没有使用。 ​

1.6K1513

事务 - TCC模式

在这种场景下,2PC(及XA)已经无法满足需求,因为它: 性能低下,2PC协议是阻塞式的。当协调的数据库越来越多时,性能无法接受。...同时,TCC2PC数据库层面的动作提升到了服务层面,不同的是TCC的所有动作都是一个本地事务,每个本地事务都在动作完成后commit到数据库: Try相当于2PC的Commit request phase...,外加了业务检查逻辑 Confirm相当于2PC的Commit phase的commit动作 Cancel相当于2PC的Commit phase的rollback动作 流程 以下是TCC的状态图: ?...观察一下你就会发现TCC2PC存在一样的问题: 若【发起方】/【参与方】因崩溃遗失了信息,则会造成有的【参与方】已Confirm,有的【参与方】则被Cancel了,甚至于依然保持在预留状态。...不过TCC在处理这种情况相比2PC具有一些优势,因为TCC是在服务层面的,当出现这种问题的时候可以很容易通过日志、业务数据排查出来,然后人工介入,而2PC完全是数据库底层的。

73820

分布式事务(四)之TCC

我们前边讲过的2PC和3PC都属于两阶段型,两阶段型事务存在长期锁定资源的情况,导致可用性差。接下来我们来介绍的TCC则是补偿型分布式事务。...TCC TCC 事务介绍 TCC方案是可能是目前最火的一种柔性事务方案了。...TCC事务处理流程和 2PC 二阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质就是一个应用层面的2PC,如下为TCC原理图。...以上文中的订单服务为例,2PC中只需要提供一个下单接口即可,而TCC中缺需要提供Try-Confirm-Cancel三个接口,大大增加了开发量。...2PC实现分布式事务分为准备阶段和提交阶段,2PC的关键是在准备阶段,在这个阶段所有参与者必须完成约束检查,达成关于分布式事务一致性的共识。第二阶段,根据之前达成的共识,完成相应的操作。

39100

面试-TCC事务

分布式事务是面试经常被问到的一个问题,今天我们分析一下TCC事务 首先我们看一个场景,如下图 有个订单服务生成订单的时候,会调用库存服务,积分服务,仓储服务的接口,库存服务会进行扣减库存,积分服务进行增加积分...导致库存服务扣减成功,而其他他服务正常更新,那么数据就会有不一致的问题,因此我们在创建订单的时候,就必须保证各个系统要么都成功,要么都失败,所以就有了分布式事务的出现, 分布式事务有很多,今天我们就说其中一个事务TCC...事务的基本操作, 事务中的每一个接口由原来的一个接口,变成了三个接口,分别是try接口,comfirm接口,cancel接口 先是调用所有服务的try接口 如果try都正常,TCC事务就进行Confirm...接口 如果try某个的服务有异常,TCC事务就会进行回滚操作,调用cancel接口 其中我们可以发现,如果订单服务挂了,然后重启,那么之前没有执行完的事务如何处理 其实这里TCC框架会记录分布式事务的活动日志...,可在磁盘的日志文件中记录,也可以记录到数据库,保存各个事务的运行阶段和状态 还有就是当cancel和comfirm执行失败,TCC框架也会根据日志记录和状态进行不断尝试,直到成功.

40730

聊一下分布式事务

引入超时机制来解决2PC的同步阻塞问题。...XA XA是一种基于2PC协议实现的规范。在2PC中没有明确资源是什么,以及资源是怎么提交的等等,而XA就是数据库实现2PC的规范,已知常用的支持XA的关系型数据库有Mysql、Oracle等。...相当于XA来说,TCC可以不依赖于资源管理器,即数据库,它是通过业务逻辑来控制确认和补偿操作的,所以它用了’Cancel’而非’Rollback’的字眼。它是一个应用层面的2PC。...看上去TCC2PC/3PC可能有点像,但是TCC强调的是补偿,而且对于对资源的“预留”,“确认”,“释放”,TCC并没有明确说要如何做,这个具体是要业务来定义的。...分布式事务一致性与Paxos一致性的思考 首先要明确一点的就是对于上述提到的分布式事务解决方案,如TCC、Saga、本地消息表等,其本质都是2PC

46220

分布式事务解决方案模型

分布式事务解决方案几乎都是柔性事务,常见的有2PC/3PC、TCC、MQ最终一致性解决方案,至于工作中用哪种方案,需要根据业务场景选取,2PC/3PC、TCC数据强一致性高,而MQ是最终数据一致。...2 2PC/3PC 2.1 2PC 两阶段提交又称2PC,2PC是一个非常经典的强一致、中心化的原子提交协议。 ​...以上就是3PC相对于2PC的一个提高(相对缓解了2PC中的前两个问题),但是3PC依然没有完全解决数据不一致的问题。 3 TCC TCC2PC、3PC一样,也是分布式事务的一种实现方案。...TCC(Try-Confirm-Cancel)又称补偿事务。其核心思想是:“针对每个操作都要注册一个与其对应的确认和补偿(撤销操作)”。...TCC事务的处理流程与2PC两阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质上就是一个应用层面的2PC,需要通过业务逻辑来实现。

35720

如何在业务中体现TCC事务模型?

TCC 对比 2PC 两阶段提交 TCC 事务模型的思想类似 2PC 提交,下面对比 TCC 和基于 2PC 事务 XA 规范对比。...对比 2PC 提交 image (1).png 第一阶段 在 XA 事务中,各个 RM 准备提交各自的事务分支,事实上就是准备提交资源的更新操作(insert、delete、update 等);而在...与 2PC/XA 两阶段提交的区别 2PC/XA 是数据库或者存储资源层面的事务,实现的是强一致性,在两阶段提交的整个过程中,一直会持有数据库的锁。...TCC 框架扮演了资源管理器的角色,常用的 TCC 开源组件有 Tcc-transaction、ByteTCC、Spring-cloud-rest-tcc 等。...image (2).png 总结 本文介绍了 TCC 分布式事务模型的应用,通过一个实际例子分析了如何应用 TCC 对业务系统进行改造,并且对比了 TCC2PC 两阶段提交,以及 TCC 相关的开源组件

18720

TCC(事务补偿)

TCC(事务补偿) TCC(Try Confirm Cancel)方案是一种应用层面侵入业务的两阶段提交。 其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。...在 TCC 事务机制中认为,如果在 Try 阶段能正常的预留资源,那 Confirm 一定能完整正确的提交。...也就是说只要Try成功,Confirm一定成功(TCC设计之初的定义) 。...3、Confirm与Cancel如果失败,由TCC框架进行==重试==补偿 4、存在极低概率在CC环节彻底失败,则需要定时任务或人工介入 方案总结 TCC 事务机制相比于 XA 事务机制...缺点: 1、TCC 的 Try、Confirm 和 Cancel 操作功能要按具体业务来实现,业务耦合度较高,提高了开发成本。 1、Try-Confirm 2、Try-Canal

7300

读完这一篇,我不信你还不懂分布式事务TCC

前言 前面我们说了两期分布式事务模型,分别是2PC和3PC,2PC模型它的效率比较低,并且会出现事务阻塞等问题,所以引入了3PC模型, 3PC模型在2PC模型的基础上进行了改进,避免了事务阻塞问题,不过对于...2PC和3PC模型,他们依然是阻塞的,也就是说当前事务在 执行的过程中,其他事务都会被阻塞,所以实际上他们的效率都不高,如果对于并发量不发的系统,那么可以选择它们,但是在高并发的 场景下,用2PC模型和...TCC解释 前面的2PC,3PC属于强一致性分布式事务,TCC属于最终一致性分布式事务,T是Try,第一个C是Confirm,第二个 C是Concel,这三个过程都需要工程师自己去编码,所以TCC对业务的入侵很大...总结 完成了TCC的分析,我们可以看出TCC事务之间并没有阻塞,但是事务的成败很大一部分是掌握在开发人员的手上,因为它不像2PC模式的 框架完全是由框架来帮我们完成事务的提交和回滚,在TCC模式中,事务的提交回滚都是要由我们去编写业务代码来实现...,TCC帮我们做的是对任务 的调度,感知分支事务是否正常,再根据结果进行提交或者回滚,所以,我们编写代码的好坏直接影响到TCC事务是否成功。

61020

什么是 “分布式事务” ?

这一篇内容还是避免不了俗套,主要的范围无非是XA、2PC、3PC、TCC,再最后到Seata。 但是,我认为这东西,只是适用于面试和理论的了解,你真要说这些方案实际生产中有人用吗?...2PC XA定义了规范,那么2PC和3PC就是他的具体实现方式。 2PC叫做二阶段提交,分为投票阶段和执行阶段两个阶段。...TCC TCC的模式叫做Try、Confirm、Cancel,实际上也就是2PC的一个变种而已。...冻结、预占库存就是2PC的准备阶段,真正下单成功去扣减库存就是2PC的提交阶段,回滚就是某个发生异常的回滚操作,只不过在应用层面来实现了2PC的机制而已。...事务模式-AT-图片来自阿里云官网 TCC模式 相比AT模式代理JDBC数据源生成UNDO_LOG来生成逆向SQL回滚的方式,TCC就更简单一点了。

84710

分布式事务方案 - TCC

TCC是支付宝提出的分布式事务解决方案,是 try、confirm、cancel 的缩写。...与2PC二阶段提交机制类似,区别在于层面不同,2PC是在数据库层面解决数据库之间的分布式事务,TCC是在应用层面解决分布式系统中的分布式事务。...工作流程 每个分布式事务的参与者都需要实现3个接口:try、confirm、cancel(confirm 对应2PC的事务提交,cancel 对应2PC的事务回滚)。...小结 TCC是应用层面的分布式事务解决方案,类似2PC,也是2阶段提交,分为准备阶段、提交阶段。 实现时需要注意空回滚、幂等、悬挂问题,可以通过记录事务状态来解决。...优点: 可靠性高 实时性高 缺点: 开发复杂度高 因为事务状态管理,需要多次DB操作,性能有一定损耗 TCC框架: https://github.com/changmingxie/tcc-transaction

1.8K10

分布式事务实现原理【BAT 面试题宝库附详尽答案解析】

TCC2PC比较 2PC是资源层面的分布式事务,强一致性,在两阶段提交的整个过程中,一直会持有资源的锁。...TCC 实质上是应用层的2PC ,好比把 XA 两阶段提交那种在数据资源层做的事务管理工作提到了数据应用层。 2PC是资源层面的分布式事务,是强一致性,在两阶段提交的整个过程中,一直会持有资源的锁。...TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁。 TCC相比较于2PC来讲性能会好很多,但是因为同时需要改造try、confirm、canel3个接口,开发成本高。...1、基础概念 最终一致性 RocketMQ是一种最终一致性的分布式事务,就是说它保证的是消息最终一致性,而不是像2PC、3PC、TCC那样强一致分布式事务,至于为什么说它是最终一致性事务下面会详细说明。...参考资料 分布式事务(1)---2PC和3PC原理 分布式事务(2)---TCC原理 分布式事务(3)—RocketMQ实现分布式事务原理 分布式事务:深入理解什么是2PC、3PC 分布式事务、

70010

TCC涉及的关键技术和作用

TCC(Try-Confirm-Cancel)是一种分布式事务处理模式,它包含以下几个关键技术:两阶段提交(Two-Phase Commit, 2PC):在TCC模式中,每个分支事务都被视为一个参与者,...2PC是用于实现协调这些分支事务的技术。...2PC的作用在于确保所有参与者的事务操作是一致的,并且要么全部提交成功,要么全部回滚。补偿操作(Compensating Operation):TCC模式中,针对每个参与者都需要定义一个补偿操作。...事务日志与恢复机制:为了保证事务的持久性和可靠性,TCC模式通常需要记录事务日志,并在系统故障或异常情况下进行事务的恢复。...通过以上关键技术的应用,TCC模式可以提供高可用、高性能、分布式的事务处理能力,保证系统的数据一致性和可靠性。

21121

分布式事务常见解决方案

刚性事务主要的解决方案有: XA协议--落地实现方案有: 2pc,3pc,JTA,JTS,3PC 柔性事务主要解决方案有: 补偿型: TCC,SAGA 异步通知型: 本地事务消息表,MQ事务消息 ---...---- 3pc 3PC针对2PC做出了优化,改善了2pc单点故障问题。...TCC2PC(两阶段提交)协议的区别:TCC位于业务服务层而不是资源层,TCC没有单独准备阶段,Try操作兼备资源操作与准备的能力,TCC中Try操作可以灵活的选择业务资源,锁定粒度。...TCC的开发成本比2PC高。实际上TCC也属于两阶段操作,但是TCC不等同于2PC操作。 4.可补偿操作:Do阶段:真正的执行业务处理,业务处理结果外部可见。...---- 小结: 和XA这种在资源层面实现的分布式事务,在2pc过程中一直持有资源锁,并且需要对应数据源支持XA协议不同,TCC是在业务层面实现的分布式事务,该过程中不会一直持有资源锁,但是每个微服务必须在业务层面实现

47130
领券