分布式架构设计(九)-灵活交易的Saga详解

发布于:2024-10-24 编辑:匿名 来源:网络

-起源-? Saga模型起源于Hector Garcia-Molina和Kenneth Salem发表的论文《Sagas》。它是最早出现的与分布式事务相关的概念。

Saga模型将一个分布式事务拆分为多个本地事务。每个本地事务都有对应的执行模块和补偿模块(对应TCC中的Confirm和Cancel)。

当Saga事务中任意一个本地事务出现问题时,可以通过调用相关的补偿方法来恢复之前的事务,以达到最终的事务一致性。 - 组成 - Saga模型主要分为:子交易(本地交易)的交易链。

每个Saga子事务Tn都有一个对应的补偿定义Cn,用于撤销Tn造成的结果。每个Tn没有“保留”动作,直接提交到库。

执行顺序:子事务序列T1,T2,…,Tn完成(最好情况)或者序列T1,T2,…,Tj,Cj-1,…,C2,C1,0

恢复方法: 向后恢复:补偿所有已完成的事务。如果任何子交易失败。

正向恢复:重试失败的事务。假设每个子交易最终都会成功。

从上面Saga模型的定义来看,Saga模型可以满足事务的三个特性: 原子性:Saga协调器协调事务链中的本地事务要么全部提交,要么全部回滚。一致性:Saga事务可以达到最终的一致性。

持久性:基于本地事务,所以这个功能可以很好的实现。 从数据隔离性分析可以发现,Saga模型无法保证外部原子性和隔离性,因为可以查看其他saga的一些结果。

论文中有相应的表述: - 注释 - Saga 交易与 TCC 交易相同。它们都严重依赖业务改造,因此要求业务方在设计时遵循四种策略: 允许空补偿:网络异常导致交易参与者只收到补偿操作指令,因为没有进行正常操作,所以需要空补偿。

保持幂等性:一笔交易的前向操作和补偿操作都可能被重复触发,因此必须保证操作的幂等性。防止资源挂起:原因是网络异常导致事务的前向操作指令晚于补偿操作指令到达,因此必须丢弃此正常操作,否则会出现资源挂起问题。

提供隔离保证:遵循“长胜于短”的设计 - Saga 和 TCC 的比较 - Saga 和 TCC 虽然都是补偿事务,但也因提交阶段不同而有所不同:Saga 没有 Try 行为,直接 Commit,这样就会留下原始交易操作的痕迹。取消是一种不完美的补偿,需要考虑对业务的影响。

TCC Cancel 是一个完美补偿的回滚。补偿操作将彻底清理之前的原始交易操作,用户不会知晓交易被取消之前的状态信息。

Saga的补偿操作通常可以异步执行,TCC的Cancel和Confirm可以跟进是否需要异步执行。 Saga对业务侵入较少,只需要提供反向操作Cancel;而TCC则需要对业务进行全球流程转型。

TCC 的最小通信次数为 2n,而 Saga 的最小通信次数为 n(n = 子事务数)。 - Saga实现 - 目前业界提供了两种Saga实现方式。

一种是基于业务逻辑层Proxy设计(基于AOP实现),比如华为的ServiceComb;另一种是状态机实现机制,比如阿里巴巴的Seata Saga模式。 Aop Proxy 的实现原理如下:在业务逻辑层调用中添加事务注解@Around("execution(* *(..)) && @annotation(TX)")。

Proxy 在调用真正的业务逻辑之前生成全局事务。唯一的 TXID 标识事务组。

TXID 存储在 ThreadLocal 变量中。它在方法开始之前写入,并在方法完成后清除。

将 TXID 写入远程数据库,并将事务组设置为起始状态。在业务逻辑层调用数据访问层之前,通过RPCProxy代理记录当前的调用请求参数。

如果业务正常,调用完成后,将当前方法的调用记录归档或删除。如果业务异常,查询调用链会反向补偿。

数据访问层设计:原有接口必须保证幂等性并满足局部原子性。提供补偿接口,实现反向操作。

对此,可以在框架层面实现一些通用的补偿实现,以降低使用成本。当然,补偿接口也必须具有幂等性保证。

还可以提供补偿注释。在原理接口方法的基础上,在方法名上添加注解,标记补偿方法名:@Compensable(cancelMethod="cancelRecord") ?补偿策略:首先调用执行失败,修改事务组状态;其次,分布式事务补偿服务异步执行补偿状态机引擎Saga的原理如下:流程是——先执行stateA,再执行stateB,最后执行stateC。

“状态”的执行是基于事件驱动的模型。 stateA执行完成后,会生成路由消息并放入EventQueue中。

,事件消费者从EventQueue中检索消息并执行stateB。当整个状态机启动时,会调用Seata Server启动分布式事务,生成xid,然后将“状态机实例”启动事件记录到本地数据库。

当执行到达“状态”时,调用Seata Server注册分支事务并生成branchId,然后将“状态实例”启动执行事件记录到本地数据库。当一个“状态”执行完成后,“状态实例”执行结束事件会记录到本地数据库,然后调用Seata Server上报分支事务的状态。

当整个状态机执行完成后,“状态机实例”执行完成事件会被记录到本地数据库,然后调用Seata Server来提交或回滚分布式事务。 - Saga Aop 代理流程示例 - 交易创建订单交易组正常流程:锁定库存 -> 红包减免 -> 创建订单正常流程 交易创建订单交易组异常流程:异常流程 - 总结 - 我们介绍了XA,2PC,还有四种交易模型,3PC和TCC,但不推荐。

本文的Saga模型是我老板推荐的事务模型,可以适用于大多数同步事务。由于目前华为ServiceComb中的交易模块还不是很独立,因此强烈推荐Seata。

Seata不仅支持Saga模式,还提供状态机的可视化操作和制作,使用成本相对较低。而且Seata的AT模式利用数据库镜像实现了自动补偿机制,进一步优化了Saga模型的缺点。

- 作者简介 - 林怀川毕业于西安交通大学;奈雪教育讲师、企业级源码负责人,原大数金融高级架构师、技术委员会创始人、技术总监;曾任天阳红叶贸易业务部技术总监;多年互联网金融行业(ToB)经验。孙轩毕业于浙江大学,奈学教育创始人兼CEO,原转转公司技术委员会主席,原58集团技术委员会主席,原百度高级研发工程师,腾讯云TVP,阿里云MVP,在线直播播音班《百万架构师》品牌创始人。

分布式架构设计(九)-灵活交易的Saga详解

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 转转牵头投资建立B2B二手交易平台“菜货侠”,深度探索二手手机产业链

    转转牵头投资建立B2B二手交易平台“菜货侠”,深度探索二手手机产业链

    据投资界11月27日消息,领先的二手交易平台转转在中国,宣布联手线上二手回收平台Flash Recycling以及齐跃、一品等国内领先供应链企业共同投资成立公司,正式上线B2B二手交易平台“彩火霞”。 据了解,新公司将由转转控股并独立运营,联合创始人、副总裁、相昌峰担任新公司的

    06-18

  • Acciona Energia计划在昆士兰州建设600MW光伏电站

    Acciona Energia计划在昆士兰州建设600MW光伏电站

    据报道,西班牙可再生能源巨头Acciona Energia近日表示,已为其规划中的澳大利亚昆士兰州兆瓦级光伏电站签署了供电协议。 拟在该州格拉德斯通地区建设一个3GW大型绿色氢能项目来提供电力。 Acciona表示,昆士兰州政府已批准该公司Aldoga光伏电站的土地,该电站将为昆士兰州政

    06-08

  • 新光维医疗完成近4亿元B轮融资,重点关注内窥镜等医疗器械

    新光维医疗完成近4亿元B轮融资,重点关注内窥镜等医疗器械

    投资社区(ID:pedaily)据8月5日消息,新光维医疗今日宣布获得近4亿元A轮融资B融资。 本轮投资投资者包括Hudson Bay Capital Management、Prime Capital等新投资机构,现有股东Hillhouse Ventures、礼来亚洲基金、经纬中国等继续支持公司。 本轮融资将继续用于内窥镜及相关领

    06-18

  • 杭州5G产学研融合创新园启动

    杭州5G产学研融合创新园启动

    国内首个5G全覆盖、5G产学研条件齐全的创新园——中国(杭州)5G创新园在杭州余杭正式启动。 创新园旨在推动5G在智慧城市、智能网联汽车、工业互联网、社会服务等多个领域的融合应用和创新发展,打造5G创新高地。 5G作为新一代移动通信技术的发展方向,以其高速率、低时延、大

    06-06

  • 一年三轮融资,中银微电子获超亿元B轮融资

    一年三轮融资,中银微电子获超亿元B轮融资

    投资界(ID:pedaily)据1月2日消息,中银微电子宣布完成超亿元B轮融资元。 本轮融资由国投创投领投,老股东卓远资本等持续加大投资。 本次融资所筹资金将进一步用于企业级高速接口IP和Chiplet产品的研发,加速Chiplet产品的快速落地和人才引进。 中银微电子作为重大引进项目

    06-18

  • 知识产权质押信息平台将于近期上线

    知识产权质押信息平台将于近期上线

    国家发改委新闻发言人金贤东19日在例行新闻发布会上透露,知识产权质押信息平台已经建成,将于近期正式上线未来。 平台坚持公益性服务原则,将免费向社会公众提供知识产权质押登记信息、金融产品信息、企业信用信息查询、知识产权业务导航等综合服务。

    06-17

  • 晶芯生物完成近亿元天使轮融资,主导开发视觉诊疗一体化靶向核药物

    晶芯生物完成近亿元天使轮融资,主导开发视觉诊疗一体化靶向核药物

    晶芯生物医学科技(南京)有限公司(以下简称“晶芯生物”) 》)宣布完成近亿元天使轮融资 该轮融资由高榕资本领投,投资方包括VI Ventures、骊宸 Capital和老股东凯泰 Capital。 本轮融资将主要用于加速晶芯生物在研的多个创新靶向核药物推进至临床阶段,升级其核药物研发平

    06-18

  • 【创业24小时】2024年5月28日

    【创业24小时】2024年5月28日

    产业巨头公司爱优腾芒B2024年5月28日一季报:提升效率,求“执行力” 点击查看小红书电商店直播,买手的两项业务运营和商户运营合并。 点击查看叮咚买菜连续六个季度盈利。 前端仓库模式运行是否顺利?点击查看本地生活数据“自热火锅”:降价清仓卖不出去。 自热火锅为何会变

    06-18

  • 新项目NO.34|独家专访美克盛能源副总裁胡金双:数字能源与储能安全领域的“双独角兽”

    新项目NO.34|独家专访美克盛能源副总裁胡金双:数字能源与储能安全领域的“双独角兽”

    随着人类社会的电气化、信息化,我们在享受人类社会所取得的成就的同时科学技术,我们也在享受科学技术的成果。 承担温室效应和气候变化的成本。 大自然向人类发出了预警。 在“双碳”目标背景下,绿色能源如何惠及大众?如何创造更安全的绿色能源生活?本期《看见新项目》专

    06-18

  • 曾估值18亿,刘诗诗和赵丽颖投资的公司赴港IPO

    曾估值18亿,刘诗诗和赵丽颖投资的公司赴港IPO

    明星,刘诗诗的“高聘礼”即将上市。 7月20日,江苏稻草熊影业股份有限公司(以下简称“稻草熊影业”)向香港联交所提交招股说明书,正式启动上市程序。 招股书显示,稻草熊是一家国产剧制作人和发行商,旗下知名剧目有《蜀山战纪之剑侠传奇》、《局中人》等。 熊影业的投稿之

    06-18

  • 扎克伯格希望以 499 美元的价格,用最新的 VR 耳机来挑战 Apple

    扎克伯格希望以 499 美元的价格,用最新的 VR 耳机来挑战 Apple

    Quest 如果不出意外的话,将会发生一些事情。 这个经典的网络迷因也发生在 Meta 身上。 北京时间9月28日凌晨,Meta Connect大会原定于凌晨1点开始直播。 但不知为何推迟了30分钟,上演了一出“重新定义凌晨1点”的大戏。 作为当天发布会的主角的最新VR头戴设备Quest 3,扎克伯

    06-18

  • 炙手可热的金融科技该如何面对机遇与挑战?

    炙手可热的金融科技该如何面对机遇与挑战?

    9月15日22时04分09秒,长征二号FT2火箭将天宫二号空间实验室升空,冲向太空。 飞行器进入预定轨道后,空间实验室任务总指挥弗拉基米尔张又侠宣布,发射任务取得圆满成功!天宫二号是我国第一个真正的空间实验室。 它的设计寿命为两年。 为满足中期居住需求,载人居住环境得到

    06-17