展开

关键词

面试被问分布式事务(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工程师必备的知识点。

16320

面试被问分布式事务(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工程师必备的知识点。

2K00
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

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

    分布式事务之深入理解什么是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的事务消息来进行异步解耦,并实现系统的数据的最终一致性的话会不会好很多呢?

    1.5K20

    .Net Core with 微服务 - 分布式事务 - TCC

    上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。 TCC Try 准备阶段,尝试执行业务 Confirm 完成业务 Cancel 回滚准备阶段的业务 TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC ,在二阶段进行事务提交。 TCC 就是把 2PC 的二阶段细化了,拆分成了 Confirm 跟 Cancel 两个步骤。 TCC 可以认为是业务层面的2PC 。 下面我们以使用客户积分兑换房间为示例说明一下 TCC 事务。 总结 TCC 事务是 2PC 的一种升级。TCC 相对于 2PC 不再依赖于本地数据库事物能力,它可以使用于应用层面的事务。

    26620

    分布式柔性事务的TCC方案

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

    44120

    分布式事务(四)之TCC

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

    10900

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

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

    8621513

    事务 - 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完全是数据库底层的。

    44220

    聊一下分布式事务

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

    21320

    什么是 “分布式事务” ?

    这一篇内容还是避免不了俗套,主要的范围无非是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就更简单一点了。

    34110

    读完这一篇,我不信你还不懂分布式事务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事务是否成功。

    8020

    事务 - 2PC

    于是就出现了2PC - Two phase commit protocol。事实上2PC不仅仅适用于多数据库事务场景下使用,也适用于所有支持2PC的参与方(Participants)。 算法介绍 2PC的参与方有: 一个作为Coordinator的节点 多个作为Cohort的网络节点 2PC假设: 所有节点都有一个稳定存储用以保存WAL(write-ahead log) 没有一个节点会永远崩溃 2PC的执行步骤: Commit request phase /Voting phase。 更多2PC的异常处理推理详见这篇slides。 在XA中定义了两种参与方:Transaction Manager(TM)和Resource Manager(RM),其中TM=2PC中的Coordinator,RM=2PC中的Cohort。

    38830

    分布式事务方案 - 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.2K10

    分布式事务实现原理【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 分布式事务、

    44610

    分布式事务的 N 种实现

    谈到分布式事务,首先要说的就是 2PC(two phase commit)方案,如下图所示: 2PC 把事务的执行分为两个阶段,第一个阶段即 prepare 阶段,这个阶段实际上就是投票阶段,协调者向参与者确认是否可以共同提交 ,Seata 提供了简化方案,代码实例见 : Seata Samples 实现2 TCC 介绍 TCC(Try-Confirm-Concel) 模型是一种补偿性事务,主要分为 Try:检查、保留资源,Confirm 原理 每个子节点,要实现 TCC 接口,才能被管理。 总结 我们先对这些实现方案进行一个总结: 基础原理 实现 优势 必要前提 2PC Seata 简单 关系型数据库 2PC TCC 不依赖关系系数据库 实现 TCC 接口 2PC 事务消息 高性能 实现事务检查接口 方案:将A模块采用 Seata 模式、B/C采用TCC模式就能完美解决。

    9430

    一文理解分布式事务的解决方案

    2PC的优缺点 2PC的优点是能利用参与者(RM)自身的功能进行本地事务的提交和回滚,对业务逻辑零侵入(相对TCC解决方案)。 但2PC也存在三大缺点:同步阻塞、单点故障和数据不一致问题。 TCC 不管是2PC还是3PC都是依赖于数据库的事务提交和回滚。 但有时一些业务不仅仅涉及到数据库,例如发送一条短信、上传一张图片等业务层的逻辑。 TCC其本质是一个应用层面上的2PC,同样分为两个阶段,如下图所示: ? 对于2PC中出现单点故障问题或超时问题,TCC的解决方案是不停重试:不停地重试没有收到响应的Confirm/Cancel接口直到成功为止,如果重试策略失败就通过记录和报警进行人工介入。 总结 TCC事务将分布式事务从资源层提到业务层来实现,可以让业务灵活选择资源的锁定粒度,并且全局事务执行过程中不会一直持有锁,所以系统的吞吐量比2PC模式要高很多。

    13520

    【JavaP6大纲】分布式事务篇:补偿事务(TCC

    补偿事务(TCC)? 补偿事务(TCC) 针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。 优点: 跟2PC比起来,实现以及流程相对简单了一些,但数据的一致性比2PC也要差一些 缺点: 缺点还是比较明显的,在2,3步中都有可能失败。 TCC属于应用层的一种补偿方式,所以需要程序员在实现的时候多写很多补偿的代码,在一些场景中,一些业务流程可能用TCC不太好定义及处理

    25620

    XA规范与TCC事务模型

    事务协调者(Transaction Manager),因为 XA 事务是基于两阶段提交协议的,所以需要有一个协调者,来保证所有的事务参与者都完成了准备工作,也就是 2PC 的第一阶段。 如果事务协调者收到所有参与者都准备好的消息,就会通知所有的事务都可以提交,也就是 2PC 的第二阶段。 XA 事务的执行流程XA 事务是两阶段提交的一种实现方式,根据 2PC 的规范,XA 将一次事务分割成了两个阶段,即 Prepare 和 Commit 阶段。 XA VS TCC TCC 事务模型的思想类似 2PC 提交,下面对比 TCC 和基于 2PC 事务 XA 规范对比。 ? 区别 2PC/XA 是数据库或者存储资源层面的事务,实现的是强一致性,在两阶段提交的整个过程中,一直会持有数据库的锁。

    1.2K30

    再论分布式事务:从理论到实践

    因此,这两个平台是不可能使用同一套分布式事务框架的,2PC不行,tcc也不行,异步消息也不行。    2PC的强一致性依赖于数据库,而TCC的强一致性依赖于应用层的Commit与cancel。 2PC需要对整个资源加锁,因此不适用于高并发的分布式场景;而tcc只对需要的资源进行加锁,加锁的粒度小,且try commit Cancel都是本地短事务,因此能在保证强一致性的同时最大化提高系统可用性 2PC是有数据库来保证回滚,而TCC是应用层实现回滚:为每一个try操作提供一个对应的cancel操作。而异步消息,1PC适用于理论上一定会成功的场景,难以回滚。 但对于2PCTCC,理论上看起来是并行的,但工程实践中有可以串行。

    54160

    相关产品

    • 智慧会务

      智慧会务

      腾讯云智慧会务可以广泛运用于商务会议、行业论坛、企业年会、路演、演讲等诸多场景,通过小程序或者H5的能力,结合人脸识别、电子名片、同声传译、视频直播等技术,实现会议组织的在线化、数字化、无纸化。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券