【微服务】面试题 6、分布式事务

分布式事务面试题讲解

一、问题背景与解决方案概述

  • 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。
  • 主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。

二、Seata 框架关键角色

  • 事务协调者(TC):维护全局和分支事务状态,协调提交或回滚,需单独部署。
  • 事务管理器(TM):定义全局事务范围,负责开启、提交等操作。
  • 资源管理器(RM):每个微服务即一个 RM,代表分支事务,需向 TC 注册并报告状态。

三、Seata 框架 XA 模式

  • 流程:TM 开启全局事务后调用分支事务注册到 TC,RM 执行业务 SQL 但不提交,先报告状态给 TC,TM 依据 TC 反馈的分支事务状态决定提交或回滚。
  • 特点:保证数据强一致性,属 CP 模式,但性能差,因分支事务需相互等待。

四、Seata 框架 AT 模式

  • 流程:TM 开启全局事务并调用分支事务注册到 TC,分支事务执行并提交业务 SQL,同时记录更新前后快照到 undo log,报告状态给 TC,TM 提交或回滚全局事务,TC 检查状态,成功则通知分支事务删除 undo log,失败则依据 undo log 逆向恢复数据。
  • 特点:性能较好,为 AP 模式,是官方推荐且开发常用方式。

五、Seata 框架 TCC 模式

  • 流程:基于 try(资源检查或预留)、confirm(完成资源操作)、cancel(预留资源释放)三个阶段。TM 开启全局事务并调用分支事务注册到 TC,分支事务进行资源预留操作后报告状态,TM 根据 TC 检查结果提交(执行 confirm 操作)或回滚(执行 cancel 操作)。
  • 特点:性能较高,属 AP 模式,但代码耦合度高,需手动编写代码维护三个阶段。

六、MQ 解决分布式事务方案

  • 流程(以借呗借钱为例):借呗审核通过后生成借款单并向 MQ 发消息通知支付宝转账,需确保相关操作在同一事务内运行,否则不发送消息。
  • 特点:异步操作性能好但实时性差,保证数据最终一致性,适用于对数据强一致性要求不高的场景,若支付宝增加余额出现异常通常需人工介入。

七、不同方案适用场景与面试应对

  • 适用场景:XA 模式和 TCC 模式常用于银行业务;AT 模式和 MQ 方式多用于互联网业务。
相关推荐
王旭晨3 分钟前
【高并发架构】从 0 到亿,从单机部署到 K8s 编排:高并发架构的 8 级演进之路
容器·架构·kubernetes
小二·8 分钟前
Python Web 开发进阶实战:微前端架构初探 —— 基于 Webpack Module Federation 的 Vue 微应用体系
前端·python·架构
论迹28 分钟前
【RabbitMQ】-- 七种工作模式
分布式·rabbitmq
Python_Study202534 分钟前
制造业企业如何构建高效数据采集系统:从挑战到实践
大数据·网络·数据结构·人工智能·架构
小陈phd1 小时前
langGraph从入门到精通(三)——基于LangGraph的智能问答系统开发:Python单代理架构实战
开发语言·python·架构
vivo互联网技术1 小时前
vivo 微服务架构实践之 Dubbo 性能优化
java·后端·微服务·中间件·dubbo
Mintopia1 小时前
🤖 未来软件表现形式的猜想:帮你直接做你想做的,给你直接要你想要的
人工智能·架构·aigc
用户2190326527351 小时前
Spring Boot Admin终极监控方案:从零搭建企业级微服务监控平台,含高可用集群配置
spring boot·微服务·监控
悟道|养家2 小时前
微服务扇出:网络往返时间的影响与优化实践(5)
网络·微服务