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


相关文章
|
2月前
|
存储 SQL 微服务
常用的分布式事务解决方案(三)
常用的分布式事务解决方案(三)
|
2月前
|
关系型数据库 MySQL
常见分布式事务的解决方案(一)
常见分布式事务的解决方案(一)
|
24天前
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
|
1月前
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
65 4
|
2月前
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata
|
2月前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
|
2月前
|
消息中间件 中间件 关系型数据库
常用的分布式事务解决方案(四)
常用的分布式事务解决方案(四)
|
2月前
常用的分布式事务解决方案(二)
常用的分布式事务解决方案(二)
|
3月前
|
存储 NoSQL Java
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这篇文章是关于Java面试中的分布式架构问题的笔记,包括分布式架构下的Session共享方案、RPC和RMI的理解、分布式ID生成方案、分布式锁解决方案以及分布式事务解决方案。
一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
|
3月前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
198 2
下一篇
无影云桌面