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

简介: 搞懂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 =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是形成一定的事件流,反向的回滚的时候按照反向的事件流进行回滚。

相关文章
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
7月前
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
729 4
Seata框架在AT模式下是如何保证数据一致性的?
通过以上这些机制的协同作用,Seata 在 AT 模式下能够有效地保证数据的一致性,确保分布式事务的可靠执行。你还可以进一步深入研究 Seata 的具体实现细节,以更好地理解其数据一致性保障的原理。
736 157
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
478 153
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
1193 160
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
599 160
|
9月前
|
SQL
seata是怎么进行分布式事务控制的
seata是怎么进行分布式事务控制的
|
11月前
|
Java 关系型数据库 数据库
微服务SpringCloud分布式事务之Seata
SpringCloud+SpringCloudAlibaba的Seata实现分布式事务,步骤超详细,附带视频教程
885 1
|
数据库 微服务
SEATA模式
Seata 是一款开源的分布式事务解决方案,支持多种事务模式以适应不同的应用场景。其主要模式包括:AT(TCC)模式,事务分三阶段执行;TCC 模式,提供更灵活的事务控制;SAGA 模式,基于状态机实现跨服务的事务一致性;XA 模式,采用传统两阶段提交协议确保数据一致性。
357 5
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata