Seata事务模式之Saga模式

分布式事务新思路:Saga 模式在微服务中的落地实践 Saga 模式是由和K. Salem提出的,它的核心思想是将一个分布式事务拆解为多个局部事务,每个局部事务完成后都会向下一个服务发送一个消息。如果某个局部事务失败,系统会执行一系列补偿操作(也叫反向操作)来保证系统最终的一致性。在 Saga 模式中,整个事务的执行顺序被分解为一系列的小步骤,每个步骤都会有一个提交和补偿操作。提交操作表示事务成功,补偿操作表示事务失败时需要执行的撤回操作。订单服务:创建订单,并在成功时通知支付服务。如果失败,需要执行补偿操作,取消订单。支付服务。 阅读详情

概述

         Saga模式是Seata提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。

         Saga模式示意图

          理论基础:Hector & Kenneth发表论文Sagas(1987)

适用场景

  • 业务流程长、业务流程多
  • 参与者包含其它公司或遗留系统服务,无法提供TCC模式要求的三个接口

优势

  • 一阶段提交本地事务,无锁,高性能
  • 事件驱动架构,参与者可异步执行,高吞吐
  • 补偿服务易于实现

缺点

  • 不保证隔离性

Saga模式实现

       基于状态机引擎的Saga实现:

       目前Seata提供的Saga模式是基于状态机引擎来实现的,机制是:

              1)通过状态图来定义服务调用的流程并生成json状态语言定义文件;

              2)状态图中一个节点可以是调用一个服务,节点可以配置它的补偿节点;

              3)状态图json由状态机引擎驱动执行,当出现异常时状态引擎反向执行已成功节点对应的补偿节点将事务回滚;

                    注意:异常发生时是否进行补偿也可由用户自定义决定。

              4)可以实现服务编排需求,支持单项选择、并发、子流程、参数转换、参数映射、服务执行状态判断、异常捕获等功能。       

        示例状态图:

        示例状态图

 

分布式事务解决方案seata之saga模式 背景: 随着各行各业数字化转型的深入,以及技术的持续迭代更新,互联网公司的技术也逐渐落地到传统行业,例如金融业。由于业务的快速增长以及为了快速抢占市场等因素,以前单体架构的应用变得不再符合需求。因此,由以前的传统单体架构的系统或应用,演变成面向服务架构的分布式系统。 构建分布式系统,除了根据业务划分服务等偏业务问题,还有随之而来的技术难点,例如分布式事务。在金融行业中,业务系统往往需要聚合多个下游系统或者多个本系统服务,这种长事务如何保证数据一致性。市面上有许多解决方案,但是... 阅读详情

相关推荐

Seata中的Saga事务模式

Seata中的Saga事务模式

qq_41683000的博客 503

分布式事务四大模式全解析:AT、TCC、SAGA、XA 如何选择?

在微服务架构盛行的今天,业务系统日趋复杂,系统间调用频繁,数据库操作涉及多个服务甚至多个数据库。在这种背景下,如何保证数据的一致性,就成为架构设计中不可回避的核心问题。而分布式事务解决方案正是为此而生。本篇文章我们以阿里巴巴开源的分布式事务框架 Seata 为核心,深入解析其支持的四种事务模型:AT 模式、TCC 模式、SAGA 模式和 XA 模式,帮助你在实际工作中做出合理选型。

qq_46371374的博客 1222

Alibaba Spring Cloud 九 Seata 的分布式事务处理模式 SAGA 模式

Seata 的 SAGA 模式 是一种长事务解决方案,基于补偿机制处理分布式事务。SAGA 模式特别适合需要跨多个服务、步骤较多、但最终可以通过补偿操作恢复一致性的场景。

空 1182

分布式事务性能损耗降低:SAGA 模式实现、本地消息表设计及补偿逻辑编写的操作步骤

本文探讨分布式系统中的数据一致性问题,对比传统强一致性方案(如2PC)与柔性事务方案的性能差异。强一致性方案因锁等待和通信开销导致吞吐量下降60%,而柔性事务(如SAGA模式)通过最终一致性设计,将性能提升3-5倍。文章详细解析SAGA模式的实现方法,包括事务拆分原则、编排方式选择(Choreography与Orchestration对比),以及通过本地消息表确保消息可靠传递的关键技术。重点阐述补偿逻辑设计需遵循的幂等性、无副作用等原则,并给出电商、支付等场景的优化案例。实践表明,采用SAGA模式可使分布式

jingjing45678的博客 905

蚂蚁金服分布式事务Seata Saga模式首秀及三种模式详解

1.1 分布式架构演进之 - 数据库的水平拆分蚂蚁金服的业务数据库起初是单库单表,但随着业务数据规模的快速发展,数据量越来越大,单库单表逐渐成为瓶颈。所以我们对数据库进行了水平拆分,将原单库单表拆分成数据库分片。如下图所示,分库分表之后,原来在一个数据库上就能完成的写操作,可能就会跨多个数据库,这就产生了跨数据库事务问题。1.2 分布式架构演进之 - 业务服务化拆分在业务发展初期,“一块大饼”的单业务系统架构,能满足基本的业务需求。但是随着业务的快速发展,系统的访问量和业务复杂程度都在快速增长,单系统架构逐

JavaMonsterr的博客 1682

Seata中的四种不同的事务模式(XA、AT、TCC、SAGA)

*举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。在释放DB锁之前,先拿到全局锁。

流楚丶格念的博客 5222

Saga模式:分布式事务的优雅解决方案

随着微服务架构的普及,分布式事务管理将成为越来越重要的课题。Saga模式作为一种灵活且高效的解决方案,将在未来得到更广泛的应用。同时,随着工具的不断改进,Saga模式的实现将变得更加简单和可靠。

沛哥儿的专栏 2044

关于RTP时间戳以及播放器对时间戳的处理

首先,了解时间戳几个基本概念: 时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000。 时间戳增量:相邻两帧之间的时间差(以时间戳单位为基准)。 采样频率: 有些地方也叫时钟频率,即 每秒钟抽取样本的次数,例如音频的采...

toshiba689的专栏 3052

分布式事务 SAGA 深度落地:补偿语义、异常防御与流程编排

我们把全局SAGA事务分成7种状态,每个分支步骤单独维护状态,流转规则全部收敛在状态机里,不允许业务代码随意改状态。@dataclassname: straction: Callable # 正向操作compensate: Callable # 补偿操作@dataclasscurrent_index: int = 0 # 当前执行到的步骤下标SAGA这个方案,原理看着简单,落地的难度全在细节里。很多团队用不好SAGA,不是模式本身有问题,是只实现了正常流程,异常场景全漏了。

Speical的博客 372

交流伺服电机绝对式位置控制实战指南

伺服电机控制是工业自动化的核心技术之一,其核心原理是通过闭环反馈实现精确位置控制。绝对值编码器作为关键传感器,能提供单圈内的绝对位置信息,避免了增量式编码器的累计误差问题。在工程实践中,电子齿轮比配置、位置环PID调节等技术直接影响系统动态性能。本文以包装机械为典型场景,详细解析了从硬件选型到参数整定的全流程实现方案,特别是针对单圈绝对值编码器初始化和限位保护等易错环节,给出了经过验证的解决方案。通过合理设置17位编码器的电子齿轮比和优化运动控制算法,最终实现了±0.05°的高精度定位。

weixin_42531588的博客 281

Python爬取拼多多商品数据保姆级教程(附源码及效果图)

本文介绍了使用Python爬取拼多多商品数据的完整教程。通过DrissionPage库模拟浏览器操作,利用正则表达式提取嵌入在HTML中的商品数据(关键步骤是从window.rawData变量获取),解析后转换为结构化数据并导出Excel。教程包含八大步骤:环境配置、浏览器初始化、网络监听、搜索模拟、数据提取(核心是正则匹配JSON)、数据验证、字段解析和Excel导出,最后提供了封装好的函数可直接调用。该方法特别适合课程作业或毕业设计获取电商数据,能爬取商品名称、价格、销量等关键信息,处理了价格单位转换等

weixin_46449236的博客 2078

Seata源码—8.Seata Saga模式的事务处理一

SeataSaga案例通过状态机机制实现分布式事务的提交和回滚,涉及两个Dubbo服务:InventoryAction和BalanceAction。状态机定义文件描述了事务的流程,包括服务调用和补偿操作。SeataSaga通过状态机调度和编排分布式事务的执行,确保事务的一致性和可靠性。案例中,状态机配置和实例存储在数据库中,通过状态机引擎启动和管理事务。Dubbo服务的配置和调用通过XML文件进行定义,确保服务的正确调用和事务的执行。状态机引擎通过流程控制机制处理事务的启动、执行、补偿和重启,确保事务的完整

mjunz的博客 1526

芒果YOLOv7改进48:主干篇:独家首发改进:目标检测新范式骨干PPHGNetv2改进版,充分融合信息特征,提升YOLOv7检测能力

YOLOv7代码改进实践 | 独家首发改进 PPHGNetv2 改进版结构

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1849

(二)分布式事务——Seata、XA、TCC、AT、SAGA模式

分布式事务——Seata一、Seata的架构:1、什么是Seata:二、部署TC服务,微服务集成Seata:三、XA模式:1、认识:2、执行原理:3、Seata的XA模式:4、总结:5、实现:四、TCC模式:1、模式原理:2、优缺点:3、案例:4、新概念:五、AT模式:1、AT模式原理:2、AT模式的脏读问题:3、全局锁:4、全局锁和XA中事务不提交占用锁资源的区分:5、优缺点:6、实现:六、SAGA模式:1、Soga模式原理:2、优缺点:七、四种模式的对比: 分布式事务——Seata 一、Seata的架.

方方土的博客 8297

《UDS协议从入门到精通》系列——图解0x14:清除诊断信息

图解0x14:清除诊断信息,简洁易懂,迅速上手!

车载系统攻城狮 4826

第95节:多模型多卡推理管理

多模型推理:在同一硬件平台上同时部署多个不同或相同的深度学习模型,满足多任务需求。多卡推理:利用多块 GPU 资源,提升推理吞吐量与并发能力。目标:合理分配 GPU 资源,实现高效、低延迟的推理服务。

yumeiguo的博客 218

Seata四种事务模式AT、TCC、SAGA 、 XA详解

我们知道Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了,为用户打造一站式的分布式解决方案,包括事务管理、本地事务协调、分布式事务日志和分布式锁等组件。之前我们学习了、本篇文章我们了解一下Seata是如何通过四种事务模式解决分布式事务问题的。

一个喜欢诗和远方的程序媛 3677

hwasan / asan详细分析踩内存之一:Use after free

UAF漏洞全称为use after free ,即利用已经被free掉的堆块被再次利用,该漏洞的存在是因为程序编写者在free堆块部分没有将该堆块的fd指针改为0,进而导致该堆块可以被申请回来,3.内存块被free后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。2.堆块free后,对应指针没有被设置为NULL,即还可以调用会该堆块,当我们申请一个比该堆块小于等于的size时。

1398

Seata源码—8.Seata Saga模式的事务处理二

本文详细介绍了SeataSaga状态机引擎的工作原理及其在分布式事务中的应用。首先,通过状态机定义和Dubbo服务调用配置,分析了SeataSaga的状态机与分布式事务的关系。接着,探讨了状态机数据库的启动和基于数据库的状态机配置初始化过程。文章还深入解析了状态机引擎的核心组件,包括状态机定义仓储组件、状态机引擎接口、流程上下文构建器、状态日志存储组件等。通过源码分析,展示了状态机实例的创建、流程上下文的发布、状态操作组件的使用以及服务调用组件的执行过程。最后,文章总结了状态机引擎如何通过业务处理器处理当前

mjunz的博客 1466

SAP NetWeaver Business Client (NWBC) 的深入解析

SAP NetWeaver Business Client(NWBC)作为 SAP 提供的一种用户界面,旨在为终端用户提供无缝集成传统 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序的体验。SAP NetWeaver Business Client(NWBC)是 SAP 推出的用户界面,旨在为终端用户提供单一入口,集成传统的 SAP GUI 事务和新开发的基于 Web Dynpro ABAP 的应用程序。在实际业务场景中,NWBC 的应用提升了用户的工作效率和体验。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1605

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Seata Saga模式:长事务解决方案探索

Seata Saga模式:长事务解决方案探索 【免费下载链接】incubator-seata 项目地址: https://gitcode.com/gh_mirrors/in/incubator-seata ...

gitblog_00846的博客 1069

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Seata源码—8.Seata Saga模式的事务处理

如果出现异常,则会进行重试处理。在流程处理控制器ProcessController的process()方法中,首先会调用自定义业务处理器CustomizeBusinessProcessor的process()方法来处理状态机当前需要执行的状态State,然后会继续调用自定义业务处理器的route()方法将自定义业务处理器路由到状态机下一个要执行的状态State。它可以支持不同种类的状态机配置,也就是状态机定义、状态机实例、状态实例,既可以放在数据库里,也可以放在其他存储里,默认是放在数据库里的。

weixin_33971721的博客 80

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring Cloud系列—Seata分布式事务解决方案TCC模式和Saga模式

在此之后,拥堵在网络上的一阶段Try数据包被TCC服务收到,出现了二阶段Cancel请求比一阶段Try请求先执行的情况,由于已经执行过二阶段的Cancel(空回滚),因此TCC服务执行晚到的Try之后,将永远不会再收到二阶段的Confirm或者Cancel,造成TCC服务悬挂。TC在调用TCC服务的一阶段Try操作时,可能会出现因网络拥堵而导致的超时,此时事务管理器会触发二阶段回滚,调用TCC服务的Cancel操作,Cancel调用未超时(空回滚)。假设存在全局事务T1和T2,都需要执行余额-30的操作。

sniper_fandc的博客 1448

详解Seata的四种事务模式:AT、TCC、SAGA、XA

详解Seata的四种事务模式:AT、TCC、SAGA、XA

m0_66220639的博客 2046

HoRain云--分布式事务模式对比:TCC、SAGA与Seata

摘要:本文对比了分布式事务中的TCC、SAGA和Seata框架的核心区别与应用场景。TCC模式通过Try-Confirm-Cancel实现强一致性,适合高并发短事务;SAGA通过正向/补偿服务链实现最终一致性,适合长事务;Seata作为框架支持AT/TCC/SAGA等多种模式,提供一站式解决方案。文章从概念层级、机制特点、实现方式及适用场景进行详细分析,并给出选型建议:强一致选TCC,长事务选SAGA,快速接入用Seata AT模式。帮助开发者根据业务需求平衡一致性、性能与开发成本。

2401_86544677的博客 1086

Seata SAGA模式:长事务处理的终极解决方案

Seata SAGA模式:长事务处理的终极解决方案 【免费下载链接】incubator-seata :fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution. ...

gitblog_00316的博客 1018
上一篇: Seata事务模式之AT模式
下一篇: 分布式事务解决方案-Seata
博享未来
博客等级 码龄12年 4757粉丝 139原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值