转自:https://segmentfault.com/a/1190000005969526
TCC
简介
TCC
是由支付宝架构师提供的一种柔性解决分布式事务解决方案,主要包括三个步骤:
TCC流程
TCC
的关键流程如下图(以下单和扣减库存为例子)
Q: 预生成订单失败了,为什么要通过TCC
执行预处理数据回滚?
A: 可能预生成订单成功,但是接口返回失败(超时失败),所以预处理在某些情况下是有预处理数据,需要清理
TCC异常场景
在整个流程,我们主要需要关注的是cancel
失败和confirm
失败引起的数据不一致现象
注意事项
-
TCC
服务支持接口失败重试,所以对TCC
暴露的接口都需要满足幂等性(根据事务Id很好满足) -
基于
TCC
的中心化事务一致性解决方法,各个应用服务器如果需要感知某次事务是否成功的成本很高,所以对于自身而言进行事务补偿成本就会很高.举个例子:
1⃣️每次成功的执行本应用服务器的事务以后,都需要把成功执行的事务Id记录
2⃣️继续confirm
或者将confirm
完的数据回滚,对用户都很不友好,特别是需要confirm
订单或者回滚订单数据
3⃣️可以根据事务开始的时间,并且设计一个事务超时时间,如果在这个时间范围以外事务还没有处理完成,就可以当做这个事务已经失败,将预处理数据删除
总体来说,事务补偿机制,心智负担过于沉重.所以只能依赖TCC
服务器的失败重试机制,如果失败重试机制不能处理,只能人肉去处理(建议全程人肉,因为同时进行失败重试和人肉的话,因为如果失败重试和人肉都在操作同一条数据,还需要考虑这种竞争的场景,对重试次数需要限定)
后记
-
是否一定需要TCC服务器?
不一定,可以让交易链路来充当TCC
服务器的角色,但是长期来看,TCC
相当于是一个公用的组件,所以其它地方也需要TCC
分布式事务,可以公用这一个组件(交易链路可以完成TCC
所能完成的一切操作,把TCC
单独部署一个服务,仅仅是考虑整个系统的抽象结构和功能复用) -
这里说的预处理,指的是什么? 在整个分布式事务中预处理的含义其实很广泛,比如订单,所谓的预处理就是生成订单,但是用户真实是看不到这些订单的,至于具体实现是在一张新表中记录还是在原有的订单表是加上标记位,具体实现方式由自己统筹考虑(当然还需要考虑记录事务Id);像减库存这种预处理,可以直接减少原始库存,再通过另外一张表来记录这次事务Id操作了哪个Sku的库存数量,当然也可以不减少库存只记录操作,但是这种方式在计算实际库存的时候复杂度会提高(需要减掉预处理的那部分)
相关推荐
而TCC分布式事务组件则是Hyperf对分布式事务处理的一个重要补充,使得开发者能够在微服务环境中处理复杂的业务逻辑,保证数据的一致性。 TCC模式的核心思想是将一个全局事务拆分为多个本地事务,每个本地事务对应一...
在Java中实现TCC分布式事务,首先需要理解以下关键组件: 1. **业务服务(Business Service)**:提供实际的业务操作,如扣减库存、增加订单等。业务服务需要实现Try、Confirm和Cancel接口,分别对应初步操作、确认...
在线教育平台中引入TCC分布式事务框架,可以实现服务间调用的事务性,确保在任何情况下数据的一致性,为学习者和教育者提供稳定可靠的学习管理服务。 基于微服务和TCC分布式事务设计的在线教育平台,已经在实际运营...
本项目"基于Hyperf的TCC分布式事务-tcc-transaction.zip"提供了在Hyperf框架下实现TCC事务的示例,帮助开发者理解和应用TCC模式。 首先,我们需要了解Hyperf。Hyperf是一款基于Swoole 4.4+开发的高性能、全异步的...
### REST-TCC分布式事务 #### 一、引言与背景 在RESTful Web服务领域,原子性事务的支持一直是讨论的热点。尽管HTTP协议定义的GET、PUT、DELETE等请求具有幂等性,使得单个服务的客户端交互具备了一定程度的可靠性...
# 基于TCC分布式事务框架的分布式事务管理系统 ## 项目简介 本项目是一个基于TCC(TryConfirmCancel)分布式事务框架的分布式事务管理系统。TCC是一种分布式事务处理模式,通过将事务分为Try、Confirm和Cancel三个...
首先,我们来深入理解TCC分布式事务模型。TCC由三个阶段组成:尝试(Try)、确认(Confirm)和取消(Cancel)。在尝试阶段,系统会检查业务操作是否可以执行,如果可以则预留资源;确认阶段,当所有参与者都成功完成...
TCC分布式事务
tcc分布式事务
基于Java的TCC分布式事务框架 项目概述 TCC(TryConfirmCancel)是一种分布式事务处理模式,广泛应用于需要保证数据一致性的分布式系统中。本项目提供了一个基于TCC模式的分布式事务框架,支持多种存储方式(如...
# 基于TCC分布式事务的支付系统 ## 项目简介 本项目是一个基于TCC(TryConfirmCancel)分布式事务模型的支付系统。TCC是一种用于确保分布式系统中事务一致性的机制,通过将事务分为尝试(Try)、确认(Confirm)和...
# 基于TCC分布式事务框架的订单支付系统 ## 项目简介 本项目是一个基于TCC(TryConfirmCancel)分布式事务框架的订单支付系统。TCC是一种用于处理分布式事务的补偿性事务模型,确保在分布式系统中多个服务之间的...
本文将深入探讨TCC分布式事务解决方案以及如何在Java环境中使用tcctransaction库。 TCC(Try-Confirm-Cancel)模式由三个阶段组成: 1. Try(尝试):在这一阶段,各个服务执行本地事务的尝试操作,检查业务资源...
### TCC 分布式事务解决方案详解 #### 一、什么是TCC事务? TCC事务是一种分布式事务处理模型,尤其适用于微服务架构中的场景。TCC是Try、Confirm、Cancel三个单词首字母的缩写,代表着分布式事务处理过程中的三个...
在这个名为"TCC-Transaction分布式事务DEMO"的项目中,我们将深入探讨TCC模式以及如何在基于Mysql数据库的环境中实现它。 **TCC模式详解** TCC(Try-Confirm-Cancel)是一种补偿型的分布式事务处理模式,主要由三...
来自51CTO技术栈!!! 之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。
总的来说,这个压缩包提供了一个实际的TCC分布式事务代码示例,有助于我们理解TCC的工作原理和如何在项目中运用。通过深入研究这些源码,我们可以更好地掌握分布式事务的处理方式,提升在大型分布式系统中的开发能力...
5. **分布式事务协调者(如TCC,Try-Confirm-Cancel)**:TCC模式下,每个服务都提供Try、Confirm和Cancel三个操作。Try是尝试执行业务操作,Confirm是确认执行,Cancel是取消操作。在所有服务的Try操作成功后,再...
- **TCC模式**:TCC模式(Try-Confirm-Cancel)是一种通过预检查(Try)、确认(Confirm)和取消(Cancel)三个阶段来保证分布式事务一致性的方法。 - **Saga模式**:Saga模式是一种长活事务模式,通过一系列本地...
通过分析和学习Hmily框架的源码,开发者可以更好地理解和实践TCC分布式事务模式,提升系统在分布式环境下的稳定性与可靠性。同时,也能为自己的项目选择或设计合适的分布式事务解决方案提供参考。