认识Seata

简介: Seata是阿里巴巴开源的分布式事务解决方案,通过事务协调者(TC)、事务管理器(TM)和资源管理器(RM)协同工作,实现全局事务一致性。支持XA、AT、TCC、SAGA四种模式,其中AT为默认模式,具备最终一致性与低侵入性,广泛应用于微服务架构中。

解决分布式事务的方案有很多,但实现起来都比较复杂,因此我们一般会使用开源的框架来解决分布式事务问题。在众多的开源分布式事务框架中,功能最完善、使用最多的就是阿里巴巴在2019年开源的 Seata 了。

https://seata.io/zh-cn/docs/overview/what-is-seata.html

其实分布式事务产生的一个重要原因,就是参与事务的多个分支事务互相无感知,不知道彼此的执行状态。因此解决分布式事务的思想非常简单:

就是找一个统一的事务协调者,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。大多数的分布式事务框架都是基于这个理论来实现的。

Seata也不例外,在Seata的事务管理中有三个重要的角色:

  • TC (Transaction Coordinator) -事务协调者:维护全局和分支事务的状态,协调全局事务提交或回滚,相当于监控中心。
  • TM (Transaction Manager) -事务管理器:定义全局事务的范围、开始全局事务、提交或回滚全局事务。
  • RM (Resource Manager) -资源管理器:管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

Seata的工作架构如图所示:

其中,TMRM可以理解为Seata的客户端部分,引入到参与事务的微服务依赖中即可。将来TMRM就会协助微服务,实现本地分支事务与TC之间交互,实现事务的提交或回滚。

TC服务则是事务协调中心,是一个独立的微服务,需要单独部署。

Seata支持四种不同的分布式事务解决方案:

  • XA:强一致性,唯一一个强一致,无业务侵入,注解即可
  • AT:最终一致性,无业务侵入,注解即可,是默认的模式
  • TCC:最终一致性,有业务侵入,适合复杂定制化业务
  • SAGA:最终一致性,有业务侵入,适合长事务模式,较少使用
相关文章
|
6月前
|
SQL 容灾 数据库
分布式事务Seata
Seata是阿里开源的分布式事务解决方案,提供XA、AT、TCC、SAGA四种模式,解决微服务架构下的跨库跨服务事务一致性问题。通过TC(事务协调者)、TM、RM三大角色实现全局事务管理,支持高可用部署与无缝集成Spring Cloud,助力系统实现最终一致或强一致性事务。
802 0
|
消息中间件 Java API
面试官:如何实现链式调用?
面试官:如何实现链式调用?
1050 0
|
SQL 关系型数据库 数据库
学习分布式事务Seata看这一篇就够了,建议收藏
学习分布式事务Seata看这一篇就够了,建议收藏
25507 2
|
Java 数据库连接 Go
如何在Spring Boot应用中使用Nacos实现动态更新数据源
如何在Spring Boot应用中使用Nacos实现动态更新数据源
1385 0
|
6月前
|
运维 网络协议 Shell
【网络运维】Ping不通?别慌!用Telnet和Netstat精准排查端口连通性
本文介绍网络排查两大利器:Telnet与Netstat。通过Ping只能检测服务器是否在线,而Telnet可测试端口连通性,区分“连接被拒”与“超时”;Netstat则用于服务端查看端口监听状态,识别如仅监听127.0.0.1导致外网无法访问的问题。结合ss命令和“三板斧”流程,快速定位网络故障。
|
6月前
|
SQL 关系型数据库 数据库
分布式事务
本文介绍了分布式事务的概念、典型场景及解决方案。在微服务架构下,一次业务操作需跨多个数据库和远程调用协作完成,传统本地事务无法保证整体一致性。通过Seata框架可实现分布式事务控制,其AT模式无侵入、高性能,基于两阶段提交与undo log实现最终一致;XA模式则提供强一致性但性能较低。文章还结合下单、支付等场景演示了Seata的集成与应用。
|
6月前
|
弹性计算 运维 监控
【运维排查】服务器CPU飙升100%?别慌,教你3步精准定位“罪魁祸首”
当服务器CPU飙高时,别急着重启!本文教你四步精准排查:用`top`定位高占用进程,`top -Hp`找出耗CPU线程,`printf`转十六进制,再通过`jstack`结合线程ID定位到具体代码行。快速锁定死循环、频繁GC或复杂计算等问题根源,成为团队中的故障排查高手。
|
6月前
|
缓存 Java Docker
【Docker实战】如何写出“性感”的Dockerfile?从1GB瘦身到100MB的秘籍
本文介绍如何编写高效、安全的Dockerfile,以Java和Python为例,分享四大核心技巧:多阶段构建减小镜像体积,利用缓存加速构建,选用轻量基础镜像,配置.dockerignore忽略无用文件。助你打造小巧、快速、安全的容器镜像,提升部署效率与安全性。