阿里1+6+N架构 阿里分布式事务框架

2025-01-2504:46:25销售经验0

关注性能与架构公众号,了解更多相关信息。

1. Seata 概述

Seata(Simple Extensible Autonomous Transaction Architecture)是一个由feascar重命名而来的分布式事务框架,由阿里开源。它采用二阶段提交模式,已在GitHub上获得了12267颗星的认可,且项目非常活跃,最新提交记录频繁。

在单体应用中,业务调用多个模块使用同一数据源时,本地事务保障了事务的一致性。但在微服务架构中,各个模块拥有独立的数据源和微服务,Seata如何处理这种情况呢?

2. Seata 工作原理

Business作为业务,通过注解标识自己为一个全局事务,即TM(事务管理者)。它向TC(事务协调器,一个独立运行的服务)请求开启全局事务,TC会生成一个全局事务ID(XID)并返回给Business。

Business获得XID后,开始调用微服务,如Storage。Storage接收到XID,知道自己的事务属于这个全局事务。它执行业务逻辑并操作本地数据库,同时将自己的事务注册到TC作为这个XID下的一个分支事务,并上报自己的事务执行结果。

当各个微服务都执行完成后,TC能够知道XID下各个分支事务的执行结果。Business根据结果决定是提交还是回滚全局事务。

重要机制

(2)RM与TC的交互:RM通过监控拦截JDBC实现与TC的自动交互,例如在开启本地事务时自动向TC注册、生成回滚日志并上报执行结果。

(3)二阶段回滚失败的处理:若某个RM在回滚时挂掉,TC会记录该失败并等待该微服务重新正常运行后再次执行全局回滚。

3. Seata 核心组件

回顾一下Seata的核心组件:

  • 事务协调器TC:维护全局和分支事务的状态,指示全局提交或回滚。
  • 事务管理者TM:开启、提交或回滚一个全局事务。
  • 资源管理者RM:管理执行分支事务的资源,向TC注册分支事务、上报分支事务状态、控制分支事务的提交或回滚。

4. Seata 工作流程示例

以一个分支事务的执行过程为例,详细梳理Seata的工作流程。包括一阶段的解析SQL、查询前镜像、执行业务SQL、查询后镜像、插入回滚日志、向TC注册分支等步骤,以及二阶段的回滚和提交过程。

在使用Seata的AT模式时,其操作简便且对业务代码无侵入性。但需要注意的是,目前Seata的文档相对较少,网上相关资料也不多,因此在使用过程中遇到问题可能需要查看源码和分析原理。

虽然Seata主要支持AT模式,但同时也提供了TCC和Saga模式。

5. 小结

Seata是一个功能强大的分布式事务框架,通过简单的操作就能实现微服务架构下的跨服务事务管理。其AT模式自动化程度高,使用方便。由于文档相对较少,使用过程中可能需要额外的学习和探索。

  • 版权说明:
  • 本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 295052769@qq.com 举报,一经查实,本站将立刻删除。