Seata-Server分布式事务原理加源码 (七) - TCC事务模式

news2024/11/28 12:35:55

TCC事务模式

首先我们先来了解常规的TCC模式。

什么是TCC

TCC 是分布式事务中的二阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel),他们的具体含义如下:

  1. Try:对业务资源的检查并预留;
  2. Confirm:对业务处理进行提交,即 commit 操作,只要 Try 成功,那么该步骤一定成功;
  3. Cancel:对业务处理进行取消,即回滚操作,该步骤回对 Try 预留的资源进行释放。

TCC 是一种侵入式的分布式事务解决方案,以上三个操作都需要业务系统自行实现,对业务系统有着非常大的入侵性,设计相对复杂,但优点是 TCC 完全不依赖数据库,能够实现跨数据库、跨应用资源管理,对这些不同数据访问通过侵入式的编码方式实现一个原子操作,更好地解决了在各种复杂业务场景下的分布式事务问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDkhZPkr-1676371860444)(image-20220215233609040.png)]

Seata的TCC模式

Seata TCC 模式跟通用型 TCC 模式原理一致。

TCC和AT区别

AT 模式基于 支持本地 ACID 事务关系型数据库

  • 一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。
  • 二阶段 commit 行为:马上成功结束,自动 异步批量清理回滚日志。
  • 二阶段 rollback 行为:通过回滚日志,自动 生成补偿操作,完成数据回滚。

相应的,TCC 模式,不依赖于底层数据资源的事务支持:

  • 一阶段 prepare 行为:调用 自定义 的 prepare 逻辑。
  • 二阶段 commit 行为:调用 自定义 的 commit 逻辑。
  • 二阶段 rollback 行为:调用 自定义 的 rollback 逻辑。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NRkTRQaV-1676371860445)(seata_tcc-1-1644422133604.png)]

特点:

  1. 侵入性比较强,并且需要自己实现相关事务控制逻辑
  2. 在整个过程基本没有锁,性能较强

详细讲解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lx1MbqCY-1676371860445)(image-20220125210417709.png)]

具体使用案例:https://seata.io/zh-cn/blog/integrate-seata-tcc-mode-with-spring-cloud.html

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

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

相关文章

CV——day77 简读论文:视频中交通标志的跟踪检测

视频中交通标志的跟踪检测Detection-by-tracking of traffic signs in videos1 Introduction3 Methods3.1 Faster R-CNN3.2 Proposed shortest-path approach3.3 Tractor-based method3.4 IoU-based method6 ConclusionsDetection-by-tracking of traffic signs in videos 视频…

除了ChatGPT,还能用什么计划管理软件提高效率?

最近一段时间,人工智能工具ChatGPT成为互联网科技圈的热门话题。正如当年的阿尔法狗给世界带来的震动一样,人们讨论的最多的就是:ai智能会不会取代人工,因为ai的效率太高了,但再智能,也有ai永远也取代不了的…

ROS2机器人编程简述humble-第四章-IMPROVED DETECTOR .4

ROS2之TF2小练习-颜色随机器人和障碍物直接距离变化ROS2之TF2小练习-有哪些bug找找看里面给出了:ROS2机器人编程简述humble-第四章-BASIC DETECTOR .3需要改进哪些地方呢?检测之后,距离不变了……如何变化?这个问题可以问chatgpt吗…

【Linux】TCP并发网络编程

多线程网络编程 上一节我们讲到,当我们的多个客户端区连接同一个服务端的时候就会出现问题,这是因为一个返回值只能接收一个客户端传输的消息,那么我们想要多个客户端同时链接服务端,我们就要有这样一个思路,发过来一…

金三银四?铜三铁四才对吧......

往年的金三银四,今年被戏称为“铜三铁四”。知名的大厂HR们都在不断的裁员,能被保住不被裁掉可能就万事大吉了,赛道越来越窄,都在预测未来计算机行业是不是下一个土木工程? 我也算是软件测试岗位的老鸟了,…

2.6 尚品汇 day13 二级路由 饿了么ui 表单使用以及验证(不完整)、上线后的跨域代理(nginx)

二级路由 1.1路由结构 1.2 引入二级路由 1.2.2配置路由信息 1.3 声明导航 1.4配置路由出口 饿了么ui 表单使用以及验证 使用 1.1.1复制结构 1.1.2 在main.js 按需引入 引入首字母大写,-用大写替代,el省略,一定要引用完整 注意Vue.compon…

Smartbi观点 | ChatGPT还处于初级阶段?然而AI早已打入BI内部

最近,当我们还沉浸在电影《流浪地球2》MOSS所带来的震感时,ChatGPT又火爆社交媒体,成为全球“新顶流”。 官方数据显示,今年1月,平均每天约有1300万独立访客使用 ChatGPT,累计用户超1亿,创下了互…

Java 基础面试题——关键字

目录1.Java 中的关键字是指什么?有哪些关键字?2.instanceof 关键字的作用是什么?3.访问修饰符 public、private、protected、以及不写(default)时的区别?4.Java 中有没有 goto 关键字?5.在 Java 中&#x…

第一章SpringBoot简介

文章目录什么是SpringBoot了解我们的Spring能干什么Spring的生态为什么需要SpringBootSpringBoot优点SpringBoot缺点SpringBoot的大时代背景微服务分布式分布式的困难分布式的解决云原生上云的困难SpringBoot之Helloworld新添我们的maven相关的配置创建一个maven项目并导入依赖…

Seata-Server分布式事务原理加源码(二) - 分布式事务解决方案

分布式事务解决方案 2PC即两阶段提交协议,是将整个事务流程分为两个阶段,P是指准备阶段,C是指提交阶段。 准备阶段(Prepare phase)提交阶段(commit phase) 举例:比如说相亲对象两…

微服务项目【秒杀商品展示及商品秒杀】

登录方式调整 第1步:从zmall-common的pom.xml中移除spring-session-data-redis依赖 注意: 1)本次不采用spring-session方式,改用redis直接存储用户登录信息,主要是为了方便之后的jmeter压测; 2&#xff09…

魔兽世界WOW私服架设详细教程

1. 写在前面:此教程是针对国服WOW3.3.5.13930版本的,因为目前魔兽单机在此版本下运行最正常。WOW4.0以上版本还有些许问题2. 准备文件(1)WOW3.3.5.13930客户端,没有的可以从这里下载WOW 3.3.2安装文件和WOW3.3.2-3.3.5…

【linux C】daemon函数应用之——进程守护小工具,运维仔看了都说好!并附带shell版本

最近接触到Linux C中的daemon函数,顾名思义,它和守护进程Daemon有关;简单来说Linux Daemon(守护进程)是运行在后台的一种特殊进程; 一般来说,它独立于控制终端并且周期性地执行某种任务或等待处…

认识V模型、W模型、H模型

软件测试与软件工程息息相关,软件测试是软件工程组成中不可或缺的一部分。 在软件工程、项目管理、质量管理得到规范化应用的企业,软件测试也会进行得比较顺利,软件测试发挥的价值也会更大。 要关注软件工程、质量管理以及配置管理与软件测试…

ChatGPT中文网尝鲜,感觉自己快下岗了

最近很火的ChatGPT之初体验 ChatGPT中文网 居然可以回答代码问题 尝试了一下, 它居然说自己是一个人 顺便问了下简单的java代码问题 “使用java语言写一个递归打印D盘中所有文件名的程序” 很流畅的回答了出来,注释还写得比我详细,感觉我离下岗不远了 这就是GPT写的代码 i…

工人不戴安全帽自动检测识别 opencv

工人不戴安全帽自动检测识别通过pythonopencv深度学习网络模型,工人不戴安全帽自动检测识别算法对现场人员穿戴进行全天候不间断识别检测,发现现场人员违规行为着装自动抓拍存档。Python是一门解释性脚本语言。解释性语言:解释型语言&#xf…

C语言中大小端问题

目录 一、什么是大小端 二、 举个例子 三、大小端演示 四、解释"二"中举例的问题 ​五、怎么判断是大端还是小端 六、一个题目 一、什么是大小端 大端模式(大端字节序存储):就是高位字节数据存放在内存的低地址端&#xff…

工序排序问题--约翰逊法精讲

什么是约翰逊法?约翰逊法是作业排序中的一种排序方法。选出最短加工时间i*,若最短加工时间有多个,任选1个.若i*出现在机床1,它对应的工件先安排加工,否则放在最后安排,安排后划去该工件,重复上两个步骤,直…

python3.11下载安装详细教程

python3.11新的功能特性 1. 支持新的字符串格式化功能,允许使用更多的格式化选项; 2. 支持新的数据类型,如结构化数据类型; 3. 支持新的编程模型,如asyncio; 4. 支持新的编程语言特性,如f-s…

别在用scroll去做懒加载了,交叉观察器轻松搞定

Ⅰ、前言 「懒加载」是网页中非常 常见的;为了减少系统的压力,对于一些电商系统出场频率非常高;那么大家一般用什么方式去实现 「懒加载」 呢 ? ① 通过 scroll 的形式: 通过 滚动「scroll」事件,然后去判…