分布式事务Seata-TCC事务模式

news2024/11/15 8:18:26

承接上文Seata强一致性事务模式XA的设计理念

通用TCC模式

TCC是二阶段提交协议,Try-Confirm-Cancel(资源预留、确认操作、取消操作),Try是对当前业务资源的检查,如果成功,则Confirm提交,否则Cancel回滚。

这三个操作都需要自定义实现业务逻辑,这也是TCC和其他的事务模式不同的地方。

XA和AT都是依赖本地数据库事务进行的分布式事务的执行,而TCC完全不依赖数据库,对业务有非常大的侵入性,因为需要自定义实现这三个接口逻辑:实现Try(对业务资源的检查逻辑),Confirm(Try成功后的提交逻辑),Cancel(出现问题的回滚逻辑)。

好处是不依赖数据库,可以跨数据库、跨应用资源,管理这些对不同数据访问侵入式编码方式实现的原子操作,解决各种复杂场景下的分布式问题。

TCC在金融业务场景下用的比较多。

业务应用是TM,负责开启全局事务,事务协调器是TC,服务A和服务B是RM。

业务应用开启全局事务,具体的服务(比如服务A、B)需要实现实现Try、Confirm、Cancel三个接口逻辑。

业务应用开启全局事务,调用每个服务的Try接口,Try没有问题,则调用具体服务的Confirm进行提交或调用Cancel进行回滚。

假设服务A Try没有问题,服务B出现了问题,则调用Cancel接口,如果有一个服务出现问题就需要全局回滚,由事务协调器发起调用服务A的Cancel接口和调用服务B的Cancel接口进行回滚,这就是TCC的整体逻辑。

Seata TCC模式

Seata TCC模式和通用TCC模式原理一样。

所谓的TCC模式是把自定义的分支事务纳入全局事务中管理。

TCC和AT都是二阶段,AT支持本地事务的ACID(关系型数据库),在一阶段,会记录本地事务对数据的更新和记录更新之前的数据到日志undolog(数据快照)中。

第二阶段,如果没有问题,则提交事务和清理日志,若出现问题,则回滚,自动补偿、清理日志、释放资源。

TCC不依赖底层数据库资源的支持,所以在第一阶段,需要调用自己实现的Try接口里面的逻辑,比如银行提交扣款请求。

第一阶段没有问题的话,则第二阶段进行提交,如果第一阶段出现问题了,则第二阶段调用rollback进行回滚。

TCC侵入性比较强,需要自己实现相关的业务逻辑,但在整个过程中是没有锁的。

AT是有锁的,为了防止脏读和脏写。

下单请求给到事务协调者,首先调用订单服务Try方法执行下单中的逻辑,然后调用库存服务,锁定库存,事务协调者如果没有收到问题反馈,就调用每个具体服务的Confirm,即调用订单服务Confirm执行支付逻辑,调用库存服务Confirm执行扣减库存的逻辑,如果扣减库存出问题了,就调用订单服务的Concel执行未支付或回滚的逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/452829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8 DWA(一)

8 DWA DMA简介 DMA(Direct Memory Access)直接存储器存取(可以直接访问32内部存储器,包括内存SRAM,Flash) DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预&#x…

NewBing、Andi、Phind、Perplexity 还有国产kuaisou五个AI搜索引擎的介绍和对比

NewBing NewBing是微软推出的新一代AI搜索引擎,它基于OpenAI的下一代大语言模型,比ChatGPT更强大,专门为搜索定制。NewBing可以理解自然语言的问题,生成简洁、准确、有趣的回答,并提供相关的链接和图片。NewBing还可以…

【Happy Eyeballs算法】Happy Eyeballs算法及curl支持--happy-eyeballs-timeout-ms或者代码实现

参考链接 IPV6 && Happy Eyeballs - 腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1561091 Happy Eyeballs算法 Happy Eyeballs是一个应用于网络双栈环境的算法,于2011年被提出。 Happy Eyeballs有两个主要目标&…

C语言实现杨辉三角

目录 1. 发现杨辉三角的规律 2. 实现杨辉三角(无格式控制) 3. 输出带格式控制的杨辉三角 1. 发现杨辉三角的规律 # 每一行的第一个元素是1 ## 每一行的最后一个元素是1 ### 上一行的两个数相加等于下一行的某个数值 2. 实现杨辉三角&#x…

Linux服务器Anaconda版本安装JupyterLab

1、场景 在Linux服务器上安装JupyterLab并可在远程访问! 2、Anaconda版本 本次安装的Anaconda 版本:Anaconda3-5.2.0-Linux-x86_64.sh 下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 3、安装 3.1 关闭防火墙 # 查看防火…

使用状态机实现幂等性

文章目录 背景幂等概念适用场景示例代码上述代码状态流转 背景 在某些场景下,可以使用状态机来实现幂等性。将业务流程抽象为一个状态机,定义各个状态之间的转换规则。当收到一个请求时,根据当前状态和请求类型来判断是否允许执行操作&#x…

MySQL高级篇——存储引擎和索引

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题_java黑马笔记 目录 一、存储引擎 1.1、查看、设置存储引擎的命令 1.2、InnoDB引擎 1.2.1、特点 1.2.2、优势 1.2.3、InnoDB事务的ACID特…

[读书笔记] 从问题和公式角度理解 Diffusion Model

[小全读书笔记] 从问题和公式角度理解 Diffusion Model 1. Diffusion Model的结构1.1 定义与限制1.2 定义与限制的数学体现 2. Diffusion Model的模型训练2.1 似然函数转换成ELBO2.2 拆解ELBO2.3 求解关键: q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1…

垃圾回收概述

什么是垃圾 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收?什么时候回收?如何回收? 垃圾收…

在线审片工具是什么,安捷秀如何在线审片?

当影视内容完成拍摄后,即进入漫长、繁复的后期制作过程,审片就是后期制作过程中一个非常重要的环节。传统的审片需要专门的场地、音画设备,召集人员在特定时间进行,人财物的成本都非常高,在此情况下,在线审…

GeoServer使用MySQL数据库出现“Error decoding wkb”错误的一种情况

错误 请看一下GeoServer官方文档的警告 Warning:Currently the MySQL extension is unmaintained and carries unsupported status. While still usable, do not expect the same reliability as with other extensions. 没事不要特立独行使用MySQL当GeoServer的空间数据库&am…

文件和用户管理

Linux基础 提示:个人学习总结,仅供参考。 一、Linux系统部署 二、服务器初始化 三、文件和用户管理 提示:文档陆续更新整理 文件和用户管理 Linux基础一、Linux目录结构二、文件管理1.文件类型2.文件管理命令 三、用户管理1. 用户/组基本概…

MySQL隐式类型转换

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式发生的。例如,MySQL会根据需要自动将字符串转换为数字,反之亦然。 转换规则 如果一个或两个参数都为NULL,则比较结果为NULL 。但是相等比较…

Android Wifi 扫描

今天拿了个新需求,要求为工厂开发一个扫地机模组检测功能的App,需求逻辑: 1.可以选择机器支持的WBR3 模组和WR3 模组; 2.可以选择机器热点名称的前缀:Thamtu 和 SmartLife,还有自定义输入前缀&#xff1b…

Java概述

Java语言简史: 是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。 是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet&…

foldersync使用感受

foldersync简介 ​ FolderSync pro是一款功能非常强大的设备本地存储(包括SD卡)文件/文件夹与云存储同步应用。它可以将手机中的文件自动同步到云端空间,支持包括 FTP、WebDAV、Dropbox、 Google Docs 在内的众多空间。 FolderSync Pro 支持各种不同的云服务商和文件…

CTA策略趋势类

趋势策略 趋势策略日内策略Hilbert 策略R-Braker 策略Dual Thrust 策略菲阿里四价策略空中花园策略 日间策略移动平均线MACD 策略Aberration 策略ATR 策略动量策略肯特纳通道自动识别趋势的追涨交易策略 趋势策略 市场只有两种状态:震荡和单边。 而两种市场状态只…

springboot项目:瑞吉外卖 前后端详细分析 part4

part 1 part 2 part 3 part 4 本页 文章目录 5 套餐管理5.1 新增套餐5.1.1 整体分析5.1.2 前端分析5.1.3 后端分析 持续更新中 5 套餐管理 5.1 新增套餐 5.2 套餐信息分页查询 5.3 删除套餐 其他小功能都比较简单且类似,不再赘述 5.1 新增套餐 5.1.1 整体分析 套…

jmeter取样器javaRequest脚本8

1,创建一个maven工程2,通过maven编译打包生成一个jar包3,重启jmeter,新建java request请求4,开始执行脚本本文永久更新地址: 1,创建一个maven工程 在pom.xml文件中添加 maven下载地址:https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMe…

【MySQL】关于 SQL 语句执行分析的二三事

一、为什么要发生这件事 确实, 平时我们增删改查写的好好的, 各种业务代码,各种小接口写的不亦乐乎,正常是没时间干这个的,但是但是,这不是还有点技术追求嘛,假如我们平时测一个小接口&#xf…