Seata分布式事务实现原理

news2024/11/24 19:21:20

        Seata可以解决分布式事务问题,利用@GlobalTransacational(name = "fsp-create-order",rollbackFor = Exception.class)注解就可以实现全局的事务管理,但是我们需要明白原理的实现。

        我们举例创建订单——>调减库存——>调扣余额——>改订单状态。

TC,TM,RM三大组件通俗说明:

 

1.分布式事务的执行流程

  1. TM开启分布式事务,TM向TC注册全局事务记录(事务ID)。

  2. 事务的参与方准备事务资源,RM向TC汇报资源的准备情况。

  3. 执行业务,TM分布式事务第一阶段结束,TM通知TC此时应该向RM获取事务状态信息了。

  4. TC汇总RM上报的事务信息,决定分布式事务是提交/回滚。

  5. TC通知所有的RM提交/回滚事务。

2.AT事务模式到底是如何操作的?

AT模式是Seata为用户提供的一种事务模式,有一阶段加载,二阶段提交/二阶段回滚。

在一阶段中,Seata会拦截SQL语句,在业务SQL执行前解析出要更新的业务数据,保存before image,执行完业务SQL后,保存after image,记录回滚日志undo log,并且加上行锁

 

        在二阶段中,如果各个事务顺利上报提交,Seata只需将前后快照的记录、undo log和行锁删除,即完成数据的清理即可。

        但是如果提交失败,Seata就需要回滚一阶段已经执行完的SQL,还原业务数据,在还原前还需要校对脏写,after image中记录的数据必须和当前的业务数据一样,如果不一致就说明有脏写,要转人工处理。如果数据一致没有脏写,需要利用undo log和before image将数据还原,并删除前后快照记录、undo log和行锁。

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

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

相关文章

Linux--vim

文章目录 Vim的介绍Vim的几种模式命令模式下的基本操作批量化注释Vim的简单配置使用插件 Vim的介绍 Vim是一个强大的文本编辑器,是从vi编辑器发展而来的,在vi编辑器的基础上进行了改进和拓展,具有强大的特性和功能。 Vim是一个自由开源软件&…

CSS特效002:花样的鼠标悬停效果

GPT能够很好的应用到我们的代码开发中,能够提高开发速度。你可以利用其代码,做出一定的更改,然后实现效能。 css实战中,鼠标的悬停有各种各样的效果,下面的这个示例集中了填充、脉搏抖动,关闭,…

Qt插件开发_入门教程

文章目录 前言插件的好处具体流程1. 第一,我们先创建一个主框架应用(**第一个工程**)2. GUI 设计 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f215270ccfac4e038e7261c4b4891ec1.png)3. 创建动态库项目(**第2个工程**)4. 给插件项目添加qt界面类5.在插件工程添加一个头…

矩阵乘积的迹对矩阵求导

矩阵A、B乘积的迹对矩阵A求导 下面来证明。

从研发域到量产域的自动驾驶工具链探索与实践

导读 本文整理自 2023 年 9 月 5 日百度云智大会 - 智能汽车分论坛,百度智能云自动驾驶云研发高级经理徐鹏的主题演讲《从研发域到量产域的自动驾驶工具链探索与实践》。 全文中部段落附有演讲中 2 个产品演示视频的完整版,精彩不容错过。 (视频观看&…

原文远知行COO张力加盟逐际动力 自动驾驶进入视觉时代?

11月7日,通用足式机器人公司逐际动力LimX Dynamics官宣了两位核心成员的加入。原文远知行COO张力出任逐际动力联合创始人兼COO,香港大学长聘副教授潘佳博士为逐际动力首席科学家。 根据介绍,两位核心成员的加入,证明一家以技术驱…

SAP-MM-查找采购订单的创建和修改日期

在采购订单页面可以查看采购订单的修改和创建,但是有些内容不能完成看到 例如这个订单显示是用户唐创建,但是他不记得是什么时候创建的,怎么创建的? 点击菜单-环境-表头更改、项目更改,可以查看更改内容 通过这个表可…

【解密ChatGPT】:从过去到未来,揭示其发展与变革

🎊专栏【ChatGPT】 🌺每日一句:天行健,君子以自强不息,地势坤,君子以厚德载物 ⭐欢迎并且感谢大家指出我的问题 文章目录 一、ChatGPT的发展历程 二、ChatGPT的技术原理 三、ChatGPT的应用场景 四、ChatGPT的未来趋势 五、总结 引言:随着…

kubernetes集群编排——k8s存储(configmap,secrets)

configmap 字面值创建 kubectl create configmap my-config --from-literalkey1config1 --from-literalkey2config2kubectl get cmkubectl describe cm my-config 通过文件创建 kubectl create configmap my-config-2 --from-file/etc/resolv.confkubectl describe cm my-confi…

ROS学习笔记(5):ros_control

1.ros_control简介 ros_control - ROS Wiki ros_control是为ROS提供的机器人控制包,包含一系列控制器接口、传动装置接口、控制器工具箱等,有效帮助机器人应用功能包快速落地,提高开发效率。 2.ros_control框架 ros_control总体框架: 针对…

vue使用websocket与springboot通信

WebSocket是HTML5下一种新的协议,它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中,都要用到websocket,使得前端页面与后端页进行实时通信,例如,实时查询…

SCI论文公式快捷获取

文章目录 前言IEEE论文公式获取Elsevier论文公式获取Springer的论文公式获取Wiley出版社公式获取SAGE出版社论文公式获取Taylor & Francis Group出版社论文公式获取latex源码转矢量公式 前言 相信许多做科研的同学对于文献公式如何提取很是抓狂,尤其是做PPT时&…

HCIP---企业网的三层架构

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 一.园区网 概念: 园区网是指在园区内建立起来的互联网基础设施,包括网络设备、传输网络、网络管理系统等,其目的是为了方便企业和园区管理方在园区内进…

论文浅尝 | 基于对多条思维链的元推理实现智能问答

笔记整理:屠铭尘,浙江大学硕士,研究方向为知识图谱 链接:https://arxiv.org/abs/2304.13007 1. 动机 1.1 Chain of Thought的诞生 尽管大语言模型在许多自然语言处理任务上表现出色,但由于其本质是token by token的类似…

深度学习环境搭建入门环境搭建(pytorch版本)

从Python安装到深度学习环境搭建 1. Anaconda安装 python可以通过官网下载exe,这里提供的是使用anaconda创建多个虚拟 的python环境,使用Anaconda Prompt管理虚拟环境更方便。 官网地址:Free Download|Anaconda 下载到本地后双击此文…

Mall4cloud 微服务商城系统 2.0 发布

导读现在 jdk17 和 spring boot 以及 spring cloud alibaba 2022 的第三方依赖已经趋于成熟,所以 mall4cloud 也一把梭哈做了升级嗷。 本次更新重点: 系统由 jdk8 最低要求升级到 jdk17spring boot 由 2.7.x 升级到 3.1.xjavax 升级到 jakartaspring-cl…

Flink--简介

1、Apache Flink 是一个实时计算的框架和分布式处理引擎,用于在无边界喝有边界数据流上进行有状态的计算,并且能够在常见的集群上运行,并能以内存速度和任意规模进行计算。 有边界数据流:指的是有开始,也有结束&…

CCF ChinaSoft 2023 论坛巡礼 | NASAC青年软件创新奖论坛

2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…

gdal3.5.0升级及安装cmake

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 本文主要是将gdal旧版本v3.2.1升级到v3.5.0,解决升级过程中的问题。 一、…

智慧社区大屏:连接社区生活的数字桥梁

随着科技的不断发展,智慧社区已经不再只是未来的概念,它已经在我们的眼前悄然崭露头角。智慧社区是一种基于数字技术的社区管理和生活方式,旨在提高社区的安全性、便利性和生活质量。而在这个数字化的社区中,智慧社区大屏起到了连…