首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >搞懂Seata分布式事务AT、TCC、SAGA、XA模式选型

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

作者头像
知识浅谈
发布2022-11-13 09:23:57
发布2022-11-13 09:23:57
3.3K0
举报
文章被收录于专栏:分享学习分享学习

🍁 作者:知识浅谈,CSDN签约讲师,CSDN原力作者,后端领域优质创作者,热爱分享创作 💒 公众号:知识浅谈 📌 擅长领域:全栈工程师、爬虫、ACM算法

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

正菜来了⛳⛳⛳

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

🎈AT模式

🍮实现原理

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

举个🌰

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

自动生成UNDO_LOG回滚日志

代码语言:javascript
复制
DELETE FROM 订单 where id =1001
update 仓储 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是形成一定的事件流,反向的回滚的时候按照反向的事件流进行回滚。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🎈AT模式
    • 🍮实现原理
    • 🍮特点
  • 🎈TCC模式
    • 🍮实现原理
    • 🍮特点
  • 🎈SAGA模式
    • 🍮实现原理
    • 🍮特点
  • 🎈XA模式
    • 🍮实现原理
    • 🍮特点
  • 🍚总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档