【微服务】面试题 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 方式多用于互联网业务。
相关推荐
这个DBA有点耶2 分钟前
核心系统的高可用与容灾架构:从主从到两地三中心全面解析
java·开发语言·数据库·sql·mysql·架构·运维开发
JAVA面经实录91726 分钟前
ZooKeeper 完整知识体系
java·zookeeper·架构
ting945200039 分钟前
VC Boom 技术架构与核心算法深度解
人工智能·算法·架构
charlie1145141911 小时前
通用GUI编程技术——图形渲染实战(五十)——命中测试与鼠标事件路由:精确交互
c++·windows·架构·交互·图形渲染
惜缘破军1 小时前
基于 Spring Boot 3 和 Spring Cloud 2023 的微服务基础框架 hdfk7-boot
spring boot·后端·微服务
doiito1 小时前
【Agent Harness实战】除了大脑和记忆,AI Agent 还需要一双“巧手”和一套“家规”
人工智能·架构
“码”力全开1 小时前
解耦安防黑盒:基于 Docker 容器化与 GB28181/RTSP 双协议架构的 AI 边缘计算视频平台(全源码交付)
人工智能·docker·架构
西凉的悲伤1 小时前
redis和数据库实现分布式锁
java·数据库·redis·分布式
爱吃牛肉的大老虎1 小时前
Kafka集群之抛弃 Zookeeper
分布式·zookeeper·kafka