首页
学习
活动
专区
工具
TVP
发布

面试-TCC事务

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

39930

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

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

事务 - TCC模式

TCC github 在前一篇文章中讲到了BASE模式,这种模式可以应用在单库or跨库事务的场景下。...TCC于BASE相比,增加了业务检查和撤销事务的功能。...同时,TCC将2PC数据库层面的动作提升到了服务层面,不同的是TCC的所有动作都是一个本地事务,每个本地事务都在动作完成后commit到数据库: Try相当于2PC的Commit request phase...不过TCC在处理这种情况相比2PC具有一些优势,因为TCC是在服务层面的,当出现这种问题的时候可以很容易通过日志、业务数据排查出来,然后人工介入,而2PC完全是数据库底层的。...D,和本地事务一样,只要commit则数据被持久 实现TCC时的注意事项 实现TCC需要关注以下几个方面: TCC模式在于服务层面而非数据库层面 TCC模式依赖于各服务正确实现Try、Confirm、Cancel

73220

Hmily实现TCC事务控制

目标 通过本案例的学习,掌握Hmily实现TCC事务控制的方法,掌握TCC事务控制的思想。 Hmily介绍 Hmily是一个高性能分布式事务TCC开源框架。...官网介绍:https://dromara.org/website/zh-cn/docs/hmily/index.html TCC事务控制思想 TCC分为三个阶段: Try 阶段是做业务检查(一致性)及资源预留...幂等: 通过前面介绍已经了解到,为了保证TCC二阶段提交重试机制不会引发数据不一致,要求 TCC 的二阶段 Try、Confirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源。.../dtx-tcc-demo-bank1 银行1,操作张三账户, 连接数据库bank1 dtx/dtx-tcc-demo/dtx-tcc-demo-bank2 银行2,操作李四账户,连接数据库bank2...两个测试工程如下: dtx/dtx-tcc-demo/dtx-tcc-demo-bank1 银行1,操作张三账户,连接数据库bank1 dtx/dtx-tcc-demo/dtx-tcc-demo-bank2

27620

Seata之TCC模式解读

在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称的是Atomikos公司,其注册了TCC商标。...概述TCC是Try-Confirm-Cancel的简称。 TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。需要实现三个方法: Try:资源的检测和预留。...通常情况下,采 用TCC则认为Cancel阶段也是一定成功的。若Cancel阶段真的出错了,需引入重试机制或人工处理。...与AT模式与TCC模式的对比 AT模式TCC模式一阶段 prepare在本地事务中,一并提交业务数据更新和相应回滚日志记录调用 自定义的 prepare 逻辑二阶段 commit马上成功结束,自动异步批量清理回滚日志调用...幂等为了保证TCC二阶段提交重试机制不会引发数据不一致,要求 TCC 的二阶段 Try、 Confirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源。

53190

分布式事物TCC

这里简单提一句,如果你要玩儿 TCC 分布式事务,必须引入一款 TCC 分布式事务框架,比如国内开源的 ByteTCC、Himly、TCC-transaction。...如果你在各个服务里引入了一个 TCC 分布式事务的框架,订单服务里内嵌的那个 TCC 分布式事务框架可以感知到,各个服务的 Try 操作都成功了。...此时,TCC 分布式事务框架会控制进入 TCC 下一个阶段,第一个 C 阶段,也就是 Confirm 阶段。 为了实现这个阶段,你需要在各个服务里再加入一些代码。...那订单服务内的 TCC 事务框架是可以感知到的,然后它会决定对整个 TCC 分布式事务进行回滚。 也就是说,会执行各个服务的第二个 C 阶段,Cancel 阶段。...总结一下,你要玩儿 TCC 分布式事务的话:首先需要选择某种 TCC 分布式事务框架,各个服务里就会有这个 TCC 分布式事务框架在运行。

68420

分布式事务TCC(Hmily)

1 什么是TCC事务? TCC是Try、Confirm、Cancel三个词语,TCC分布式事务的三个操作:预处理Try、确认Confirm、撤销Cancel。...如果,采用TCC认为Cancel阶段也是一定成功的。如Cancel阶段真的错误了,也需要重试机制或者人工处理。...TCC需要注意三个异常处理,分别是空回滚、幂等、悬挂 (1)空回滚 在没有调用 TCC 资源 Try 方法的情况下,调用了二阶段的 Cancel 方法,Cancel 方法需要识别出这是一个空回滚,然后直接返回成功...(2)幂等 通过前面介绍已经了解到,为了保证TCC二阶段提交重试机制不会引发数据不一致,要求 TCC 的二阶段 Try、Confirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源 解决思路在上述...因此confirm/cancel业务只需要被Hmily TCC事务框架发现,不需要被调用它的其他业务服务 案列分析: 本实例通过Hmily实现TCC分布式事务,模拟两个账户的转账交易过程。

53010

分布式事务-TCC(Hmily)

TCC是什么: TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confirm、撤销Cancel。...TCC分为三个阶段: 1:Try 阶段是做业务检查(一致性)及资源预留(隔离),此阶段仅是一个初步操作,它和后续的Confirm 一起才能 真正构成一个完整的业务逻辑。 2....通常情况下,采用TCC则 认为 Confirm阶段是不会出错的。即:只要Try成功,Confirm一定成功。若Confirm阶段真的出错了,需引 入重试机制或人工处理。 3....通常情况下,采 用TCC则认为Cancel阶段也是一定成功的。若Cancel阶段真的出错了,需引入重试机制或人工处理。 4....Hmily实现的TCC服务与普通的服务一样,只需要暴露一个接口,也就是它的Try业务。

63820

我说分布式事务之TCC

常见的分布式解决方案有: 最大努力通知型事务 可靠消息一致性事务 TCC事务 本文我们就详细的讲解TCC分布式事务的原理及应用场景。Here we go!...CONFIRM阶段 常见的TCC框架,如:ByteTCC、tcc-transaction 均为我们实现了事务管理器,用来执行CONFIRM阶段。他们能够对各个子模块的try阶段执行结果有所感知。...当TCC框架感知到各个服务的TRY阶段都成功了以后,就会执行各个服务的CONFIRM逻辑。 各个模块内的TCC事务框架会负责跟其他服务内的TCC事务框架进行通信,依次调用各服务的CONFIRM逻辑。...这个其实不必担心,成熟的TCC框架比如TCC-transaction中引入了事务的活动日志,它们保存了分布式事务运行的各个阶段的状态。...这里也体现了TCC解决方案是一个保证最终一致性的柔性事务解决方案。

54020

DAY23:阅读WDDM和TCC模式

必须需要TCC驱动才可以开发Windows Service应用,在里面使用CUDA,然而这TCC的第三点好处也作废了。现在普通卡,无TCC,也能在Windows Service中使用CUDA了。...其实TCC还是有其他好处的。例如说,常见的万恶的WDDM超时。切换成TCC驱动就没事了。 省得以前还得想各种技巧来规避它。...这两种技巧,如果有TCC驱动,可以直接不用学习。这是TCC的又一大好处。以及,还有很多领域需要P2P Access的,例如深度学习。...而此时更换TCC驱动,可以直接享受和Linux下一样的效果。...(其实这是为何很多深度学习机器都是配套Linux的原因,不是因为Windows的授权费用,Windows的钱其实相比一台机器并不贵),这是第三点好处。

2.1K10

tcc-transaction分布式TCC型事务框架搭建与实战案例(基于DubboDubbox)

本文就针对项目拆分后数据库的分布式事务问题,基于tcc-transaction分布式TCC型事务进行框架的搭建,同时引入相关的实战案例,来解决让人头疼的分布式事务问题。...二、tcc-transaction框架介绍 介绍:tcc-transaction是开源的TCC补偿性分布式事务框架,Git地址:https://github.com/changmingxie/tcc-transaction...源码修改比较简单,如下 1.1 修改tcc-transaction总pom.xml文件 该文件里面提供各种aop逻辑,项目启动时扫描指定注解...四、TCC执行流程 业务流程使用记录: 前提:用户下单,建立订单,创建支付记录,支付记录状态为待支付 try: 用户金额冻结 调用积分处理TCC: try:预增加积分 confirm:更新增加积分状态

92520

分布式事务(四)之TCC

接下来我们来介绍的TCC则是补偿型分布式事务。 TCC TCC 事务介绍 TCC方案是可能是目前最火的一种柔性事务方案了。...在该论文中,TCC还是以Tentative-Confirmation-Cancellation命名。正式以Try-Confirm-Cancel作为名称的是Atomikos公司,其注册了TCC商标。...国内最早关于TCC的报道,应该是InfoQ上对阿里程立博士的一篇采访。经过程博士的这一次传道之后,TCC在国内逐渐被大家广为了解并接受。...TCC事务处理流程和 2PC 二阶段提交类似,不过2PC通常都是在跨库的DB层面,而TCC本质就是一个应用层面的2PC,如下为TCC原理图。...TCC变种 国内厂商在TCC实战中,提出了三种TCC变种实现: 通用型TCC,如果我们上面介绍的TCC模型实例,从业务服务需要提供try、confirm、cancel 补偿性TCC,从业务服务只需要提供

37400

分布式事务方案 - TCC

TCC是支付宝提出的分布式事务解决方案,是 try、confirm、cancel 的缩写。...与2PC二阶段提交机制类似,区别在于层面不同,2PC是在数据库层面解决数据库之间的分布式事务,TCC是在应用层面解决分布式系统中的分布式事务。...TCC 分为2个阶段: 准备阶段 调用方调用各个服务的 try 接口,各个服务执行资源检查和锁定,看自己是否有能力完成,如果允许,则锁定资源。...小结 TCC是应用层面的分布式事务解决方案,类似2PC,也是2阶段提交,分为准备阶段、提交阶段。 实现时需要注意空回滚、幂等、悬挂问题,可以通过记录事务状态来解决。...优点: 可靠性高 实时性高 缺点: 开发复杂度高 因为事务状态管理,需要多次DB操作,性能有一定损耗 TCC框架: https://github.com/changmingxie/tcc-transaction

1.8K10

XA规范与TCC事务模型

TCC 把事务运行过程分成 Try、Confirm / Cancel 两个阶段,每个阶段的逻辑由业务代码控制,避免了长事务,可以获取更高的性能。 TCC的各个阶段 TCC 的具体流程如下图所示: ?...应用 TCC 的优缺点 实际开发中,TCC 的本质是把数据库的二阶段提交上升到微服务来实现,从而避免数据库二阶段中长事务引起的低性能风险。...所以说,TCC 解决了跨服务的业务操作原子性问题,比如下订单减库存,多渠道组合支付等场景,通过 TCC 对业务进行拆解,可以让应用自己定义数据库操作的粒度,可以降低锁冲突,提高系统的业务吞吐量。...另外 TCC 的事务管理器要记录事务日志,也会损耗一定的性能。...XA VS TCC TCC 事务模型的思想类似 2PC 提交,下面对比 TCC 和基于 2PC 事务 XA 规范对比。 ?

2.2K30

【分布式事务】tcc-transaction分布式TCC型事务框架搭建与实战案例(基于DubboDubbox)

本文就针对项目拆分后数据库的分布式事务问题,基于tcc-transaction分布式TCC型事务进行框架的搭建,同时引入相关的实战案例,来解决让人头疼的分布式事务问题。...二、tcc-transaction框架介绍 介绍:tcc-transaction是开源的TCC补偿性分布式事务框架,Git地址:https://github.com/changmingxie/tcc-transaction...源码修改比较简单,如下 1.1 修改tcc-transaction总pom.xml文件 该文件里面提供各种aop逻辑,项目启动时扫描指定注解...四、TCC执行流程 业务流程使用记录: 前提:用户下单,建立订单,创建支付记录,支付记录状态为待支付 try: 用户金额冻结 调用积分处理TCC: try:预增加积分 confirm:更新增加积分状态

58340
领券