写点什么

快速搞懂 Seata 分布式事务 AT、TCC、SAGA、XA 模式选型

作者:知识浅谈
  • 2022 年 8 月 02 日
  • 本文字数:1235 字

    阅读完需:约 4 分钟

快速搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型

🍁 作者:知识浅谈,CSDN 签约讲师,后端领域优质创作者,阿里云技术博主,热爱分享创作

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈

🔥 联系方式 vx:zsqtcc


Seata 分布式事务 AT、TCC、SAGA、XA 模式选型总结🤞这次都给他拿下🤞

正菜来了⛳⛳⛳

  • 分布式事务



  • Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

🎈AT 模式

🍮实现原理

阿里 SEATA 独有模式,通过生成反向 SQL 实现数据回滚,需要在数据库额外附加 UNDO_LOG 表,UNDO_LOG 表中保存的是自动生成的回滚 SQL。


举个🌰


insert into 订单 values(1001,...)update 仓储 set num = 300 where gid =100;
复制代码


自动生成 UNDO_LOG 回滚日志


DELETE FROM 订单 where id =1001update 仓储 set num=210 where gid = 100
复制代码

🍮特点

性能:高

模式:AP,存在数据不一致的中间状态

难易程度:简单,靠 SEATA 自己解析反向 SQL 并闻滚

使用要求

  • 所有服务与数据库必须要自己拥有管理权,因为要创建 UNDO LOG 表

  • 最好都是 MySQL,听说也支持 PSQL,不过没试验过


应用场景


  • 高并发互联网应用,允许数据出现短时不一致,可通过对账程序或补录来保证最终一致性。

🎈TCC 模式

🍮实现原理

TCC 是 Try-尝试、Confirm-确认、Cancel-取消 Try 尝试阶段,对资源进行锁定。Confirm 确认阶段,对资源进行确认,完成操作 Cancel 取消阶段,对资源进行还原,取消操作。


在代码与数据表中扩展字段,实现对数据资源的锁定。



🍮特点

性能:好

模式:AP,存在数据不一致的中间状态

难易程度:复杂,SEATA TC 只负责全局事务的提交与回滚指令,具体的回滚处理全靠程序员自己实现(手动写代码)

使用要求

  • 所有服务与数据库必须要自己拥有管理权

  • 支持异构数据库,可以使用不同选型实现


应用场景

  • 高并发互联网应用,允许数据出现短时不一致,可通过对账程序或补录来保证最终一致性。

🎈SAGA 模式

🍮实现原理

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


🍮特点

性能:不一定,取决于三方服务模式:AP,存在数据不一致的中间状态难易程度:复杂,提交与回滚流程全靠程序员编排使用要求

  • 在当前架构引入状态机机制,类似于工作流

  • 无法保证隔离性


应用场景

  • 需要与第三方交互时才会考虑,例如:调用支付宝支付接口->出库失败->调用支付宝退款接口

🎈XA 模式

🍮实现原理

基于数据库的 XA 协议来实现 2PC 又称为 XA 方案。


🍮特点

性能:低模式:CP,强一致性难易程度:简单,基于数据库自带特性实现,无需改表使用要求

  • 使用支持 XA 方案的关系型数据库(主流都支持)

应用场景

  • 金融行业,并发量不大,但数据很重要的项目

🍚总结

Seata 分布式事务 AT、TCC、SAGA、XA 模式选型主要是根据不同的业务进行相应的选型,如 SAGA,需要调用第三方的支付的场景的时候,可以使用这个方案,SAGA 是形成一定的事件流,反向的回滚的时候按照反向的事件流进行回滚。

发布于: 刚刚阅读数: 5
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

🍁 作者:知识浅谈,CSDN签约讲师,后端领域优质创作者,阿里云社区技术博主,热爱分享创作 💒 公众号:知识浅谈 📌 擅长领域:全栈工程师、爬虫、ACM算法 🔥 联系方式vx:zsqtcc

评论

发布
暂无评论
快速搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型_开源_知识浅谈_InfoQ写作社区