尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Java面试中的分布式事务,一文讲透

发布时间:2026/9/29 15:09:28

资讯中心
01
ARTICLE

Java面试中的分布式事务,一文讲透

Java面试中的分布式事务,一文讲透
分布式事务是Java面试中绕不开的高频考点也是区分初中级与高级工程师的分水岭。面试官不仅考察你对概念的记忆更关注你能否在业务场景中做出合理的技术选型。本文带你系统梳理一文讲透。一、为什么会有分布式事务单体架构下本地事务靠数据库的ACID就能保证。但微服务拆分后一个业务操作往往跨多个服务、多个数据库本地事务失效于是需要分布式事务来保证数据一致性。面试第一个问题通常是CAP理论是什么答案是一致性C、可用性A、分区容错性P三者不可兼得。分布式系统必须容忍分区所以只能在C和A之间取舍。而BASE理论基本可用、软状态、最终一致性则是对CAP的实践延伸也是大多数分布式事务方案的指导思想。二、主流方案全解析1. 2PC/3PC两阶段提交/三阶段提交2PC分为准备和提交两个阶段由协调者统一调度。优点是强一致缺点是同步阻塞、协调者单点故障、数据不一致风险。3PC引入超时机制和预提交阶段缓解阻塞但仍未彻底解决。面试常问2PC的缺点是什么答性能差、阻塞、协调者宕机导致参与者悬挂。2. TCCTry-Confirm-CancelTCC是补偿型事务Try阶段预留资源Confirm确认执行Cancel回滚释放。它不依赖数据库事务性能好适合高并发场景。但开发成本高需处理三个核心问题空回滚Try未执行却收到Cancel、幂等Confirm/Cancel重复调用、悬挂Cancel先于Try执行。面试中能答出这三点基本稳了。3. 本地消息表在本地事务中同时写入业务数据和消息表然后异步投递消息消费方幂等处理。方案简单依赖数据库适合最终一致性要求不高的场景。缺点是消息表与业务库耦合需要定时任务补偿。4. 事务消息RocketMQRocketMQ的半消息机制先发半消息本地事务执行成功后提交失败则回滚。若超时未确认Broker回查生产者。它解决了本地消息表的耦合问题是实现最终一致性的利器。面试常问半消息是什么回查机制如何工作5. Saga模式将长事务拆成多个本地事务每个事务有对应的补偿操作。适合业务流程长、参与者多的场景如旅游订票。缺点是缺乏隔离性需业务层处理脏读。6. Seata阿里开源的分布式事务框架AT模式最常用。它通过全局锁和undo log实现自动补偿对业务侵入小。AT模式分为两阶段一阶段执行业务SQL并记录undo log二阶段提交则删除日志回滚则用undo log恢复。面试重点全局锁的作用、写隔离与读隔离的区别。三、面试答题思路当面试官问“你们项目怎么解决分布式事务”不要直接报方案而要分三步明确一致性要求强一致还是最终一致评估业务场景并发量、事务链路长度、是否允许补偿。选型对比强一致选Seata AT或2PC高并发选TCC最终一致选事务消息或本地消息表。例如订单扣库存若要求实时强一致可用Seata AT若允许短暂不一致用RocketMQ事务消息更轻量。四、总结分布式事务没有银弹。2PC强一致但笨重TCC灵活但复杂消息队列最终一致但需幂等Saga适合长流程。面试中能讲清原理、说出优缺点、结合业务选型才是真正的“讲透”。建议动手实践Seata和RocketMQ事务消息面试时才能对答如流。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。