Seata AT模式与TCC模式对比,我们应该选择哪种分布式事务解决方案

简介: Seata AT模式与TCC模式对比,我们应该选择哪种分布式事务解决方案

前言

在前面的博客中,我们依次讲解了Seata AT模式的原理及使用方式,上一篇博客中我们讲解了如何在Spring Cloud中集成Seata TCC模式,那么就有一个疑问,我们在实际项目中,应该选择哪种分布式事务解决方案呢?

优缺点对比

AT模式 TCC模式
新手入门难度 容易 适中
业务侵入性
性能 一般
编码工作量 一般
是否支持复杂sql 不完全支持 支持

1.【新手入门难度】AT模式的代码编写方式和平时一样,只需要在TM入口加上@GlobalTransactional即可,开发人员按照正常逻辑编码完全没有问题;TCC模式的设计思路和AT模式完全不一样,TCC的一阶段和二阶段都是需要开发人员自行编码处理的,在业务处理上需要按照TCC的资源预留方式开发,学习成本上较AT模式要高上一个级别,所以在新手入门难度这一点上,AT模式更加容易;

2.【业务侵入性】AT模式是业务无侵入的,开发人员只需要关注业务SQL即可,二阶段的处理完全由Seata框架托管;TCC模式无论是一阶段还是二阶段,全部的TryConfirmCancel逻辑全部需要开发人员根据业务需求自行编码;所以在业务侵入性上,AT模式更好;

3.【性能】AT模式在一阶段处理完毕后,还会存在行锁,此时如果有其他事务需要操作被行锁锁住的记录时,会被阻塞,直至分布式事务结束才能拿到行锁;TCC模式因为是资源预留的设计方式,只有在一阶段预留资源时存在竞争,一阶段处理完毕后,不管分布式事务是否结束,后续都不存在资源竞争问题,所以TCC模式相较于AT模式,性能是更好的;

4.【编码工作量】AT模式只关注业务SQL,TCC模式需要根据业务设计来实现资源预留方案,二阶段提交和回滚逻辑全部需要开发人员编码实现,所以编码工作量上几乎是AT模式的2~3倍;

5.【是否支持复杂sql】AT模式需要针对提交的业务SQL进行拦截,并进行解析,根据对应的业务SQL生成前后镜像,这也就意味着AT模式并不能支持很复杂的业务SQL;TCC模式不用关心具体的业务SQL,Seata只会根据开发人员编码分别调用TryConfirmCancel方法,所以在这一点上,TCC模式更胜一筹;

该如何选择

根据上述AT模式与TCC模式的对比,我们可以了解到,如果业务功能对性能要求很高,并且属于公司的核心业务,那么建议采用TCC模式;如果该功能对性能要求一般,建议采用AT模式;有一点需要提醒的是,AT模式和TCC模式是可以在一个项目中共存的,所以小伙伴们完全可以根据具体的业务需求选择任意的分布式事务解决方案;感兴趣的小伙伴还可以上github下载我准备好的相关案例:awesome-seata


相关文章
|
4天前
|
Nacos 数据库
分布式事务解决方案Seata
分布式事务解决方案Seata
29 1
|
4天前
|
存储 关系型数据库 MySQL
基于Seata实现分布式事务
通过以上步骤,你可以使用 Seata 实现分布式事务,确保在微服务架构中的事务一致性。Seata 支持多种语言和框架,能够满足不同业务场景的需求。欢迎关注威哥爱编程,一起学习成长。
|
4天前
|
NoSQL 分布式数据库 MongoDB
【MongoDB 专栏】MongoDB 的分布式事务解决方案
【5月更文挑战第11天】本文探讨了MongoDB的分布式事务处理,涉及两阶段提交(2PC)、TCC补偿事务、分布式锁和幂等处理。2PC通过协调者与参与者确保数据一致性,而TCC提供更高性能和容错性。分布式锁解决并发冲突,幂等处理保证事务正确性。根据业务需求选择合适方案,并关注性能、可靠性和容错。
【MongoDB 专栏】MongoDB 的分布式事务解决方案
|
4天前
|
缓存 监控 数据库
分布式系统中缓存穿透问题与解决方案
在分布式系统中,缓存技术被广泛应用以提高系统性能和响应速度。然而,缓存穿透是一个常见而严重的问题,特别是在面对大规模请求时。本文将深入探讨缓存穿透的原因、影响以及一些有效的解决方案,以确保系统在面对这一问题时能够保持稳定和高效。
39 13
|
4天前
|
Windows
Windows系统下安装分布式事务组件Seata
Windows系统下安装分布式事务组件Seata
|
4天前
|
存储 缓存 算法
【专栏】探讨分布式限流所面临的挑战以及目前业界常用的解决方案
【4月更文挑战第27天】在互联网时代,分布式限流是应对高并发、保护系统稳定的关键。它面临数据一致性、算法准确性和系统可扩展性的挑战。常见限流算法有令牌桶、漏桶和滑动窗口。解决方案包括使用分布式存储同步状态、结合多种算法及动态调整阈值。定期压力测试确保策略有效性。随着系统规模增长,限流技术将持续发展,理解并应用限流原理对保障服务质量至关重要。
|
4天前
|
SQL 容灾 数据库
分布式事务Seata
在分布式架构系统中,服务不止一个,一个完整的业务链路肯定也不止调用一个服务,此时每个服务都有自己的数据库增删改查,而每一个写操作对应一个本地事务。如果想要确保全部的业务状态一致,也就意味着需要所有的本地事务状态一致,这在我们之前的学习中肯定是不具备的,如何做到跨服务、跨数据源的事务一致性将是本章节的重点学习内容。
30 2
|
4天前
|
存储 分布式数据库
GaussDB分布式与单机模式的比较
【4月更文挑战第7天】GaussDB分布式与单机模式的比较
1793 5
|
4天前
|
算法 微服务
分布式事务解决方案
分布式事务解决方案
27 0
|
4天前
|
SQL 数据库 Windows
SpringCloud集成seata分布式事务控制
SpringCloud集成seata分布式事务控制
20 0

热门文章

最新文章