首页/新闻资讯/正文详情

Java面试分布式事务,4种方案一次讲清

发布时间:2026/9/25 22:31:31 来源:云帆数科 栏目:资讯中心
Java面试分布式事务,4种方案一次讲清
引言分布式事务是Java面试中高级岗位的必考题。单体时代Transactional一个注解就能搞定微服务拆分后一个业务操作横跨多个服务、多个数据库数据一致性就成了大难题。面试官问分布式事务其实是在考察你对一致性模型、补偿机制和落地成本的权衡能力。下面这4种方案一次讲清。一、2PC两阶段提交强一致但笨重2PCTwo-Phase Commit把事务分为准备和提交两个阶段。准备阶段协调者询问所有参与者能否提交参与者执行事务但不提交锁定资源并返回结果。提交阶段如果所有参与者都同意协调者通知提交否则通知回滚。优点强一致性实现相对简单数据库层面原生支持XA协议。缺点同步阻塞参与者在准备阶段一直锁资源性能差协调者单点故障如果协调者在提交阶段宕机参与者会一直阻塞数据不一致风险部分参与者提交后协调者才宕机会导致数据错乱。适用场景传统银行、金融等对强一致要求极高、并发不高的内部系统。Java中可用Atomikos、Narayana实现。面试回答要点2PC是强一致方案但性能和可用性差互联网高并发场景基本不用。二、TCCTry-Confirm-Cancel业务层补偿TCCTry-Confirm-Cancel把每个操作拆成三个方法Try阶段做业务检查和资源预留Confirm阶段确认执行使用Try预留的资源Cancel阶段取消执行释放预留资源。优点不依赖数据库事务性能好锁粒度小只锁业务资源可跨服务、跨数据库。缺点业务侵入性强每个接口都要写三个方法需要处理空回滚、幂等、悬挂等问题Confirm和Cancel必须幂等。适用场景电商、支付等高并发场景如订单扣库存、账户扣款。Java中可用Seata的TCC模式、Hmily。面试回答要点TCC是业务层面的两阶段核心是补偿难点是幂等和防悬挂。三、可靠消息最终一致性MQ本地消息表核心思路业务操作和发送消息在同一个本地事务中完成。比如订单服务创建订单后把消息写入本地消息表再由定时任务或MQ事务消息投递。下游服务消费消息执行自己的业务失败则重试直到成功。优点异步解耦吞吐量高最终一致性适合长流程业务。缺点一致性延迟中间状态可能被看到需要保证消息不丢、不重、有序本地消息表增加了数据库压力。适用场景订单成功后通知积分、优惠券、物流等下游系统。RocketMQ事务消息是典型实现。面试回答要点最终一致性不是强一致但换来了高可用和高性能互联网场景首选。四、最大努力通知不保证成功只保证尽力最大努力通知是最弱的一致性方案。发起方执行完业务后通过MQ或HTTP通知接收方接收方处理失败后发起方按策略重试重试到一定次数后不再保证。接收方也可以主动查询对账。优点实现简单对发起方侵入小。缺点不保证最终一致只保证“尽力”需要人工兜底或对账补偿。适用场景支付结果通知、外部系统回调等对一致性要求不高的场景。面试回答要点最大努力通知适合可容忍不一致的业务通常配合对账系统使用。总结分布式事务没有银弹。2PC强一致但性能差TCC性能好但业务侵入大可靠消息最终一致性是互联网主流最大努力通知则用于弱一致场景。面试时先讲清每种方案的原理和优缺点再结合业务场景给出选型建议最后提一句“实际项目中往往多种方案混合使用”就能让面试官看到你的架构思维。

相关推荐

OpenCode模型配置全指南:第三方API与本地模型接入实战
OpenCode模型配置全指南:第三方API与本地模型接入实战

1. 为什么模型配置是 OpenCode 落地的第一道坎刚接触 OpenCode 的人,十有八九会卡在同一个地方:装好了、界面也打开了,结果一发起对话就弹出一行报错——error from provider (console): opencodes free tier can only be used from within o… · 2026/9/25 22:31:18

用户画像全链路实战:HDFS→Hive→HBase→ES→ALS工程闭环
用户画像全链路实战:HDFS→Hive→HBase→ES→ALS工程闭环

简介:本资源是一份面向大数据工程师、算法工程师与数据产品运营人员的企业级用户画像系统性实践指南,聚焦360全链路构建方法论与工程落地。内容覆盖用户画像概念演进、大数据环境搭建(HDFS/Hive/HBase)、标签体系开发(… · 2026/9/25 22:31:18

金蝶云星空凭证出纳复核全解析:业务逻辑、操作路径与常见坑位
金蝶云星空凭证出纳复核全解析:业务逻辑、操作路径与常见坑位

做ERP实施和财务信息化这些年,被问得最多的功能之一就是金蝶云星空的凭证出纳复核。很多财务刚接触这个功能时会愣一下:凭证不是已经有审核了吗?怎么还要出纳复核一道?不是多此一举吗?等到真正跑起来才发现&#xff0c… · 2026/9/25 22:31:05

猫狗图像分类数据集清洗与增强实战指南
猫狗图像分类数据集清洗与增强实战指南

1. 这个“1400张猫狗图”到底值不值得你花时间下载?我去年带三个实习生做入门级图像分类项目,第一周就卡在数据集上——他们翻遍了Kaggle、UCI和几个主流CV平台,最后在一个冷门论坛里扒出一个标着“【免费下载】猫狗图像分类数据集(1400)”的… · 2026/9/25 23:04:29

Pygame小游戏开发全指南:从核心循环到避坑实战
Pygame小游戏开发全指南:从核心循环到避坑实战

运一次"上下左右控制一个方块躲避障碍"这样的小游戏,从新手到能跑通的完整过程,你会踩哪些坑、需要懂哪些原理,我今天一次性讲清楚。1. Pygame到底是什么:它不是引擎,而是一套媒体工具箱1.1 Pygame的来历与定… · 2026/9/25 23:04:22

webpack逆向补环境全流程:定位anti-content签名模块与浏览器环境模拟
webpack逆向补环境全流程:定位anti-content签名模块与浏览器环境模拟

简介:一份以Webpack补环境为核心的拼多多anti_content参数逆向学习资料,适合具备JavaScript基础、希望进阶逆向工程的前端开发者或安全学习者。资料针对拼多多web端接口中的anti_content签名机制,梳理了利用Webpack配置与JavaScript环境补丁绕… · 2026/9/25 23:04:22

YOLOv8接入RTSP流实时目标检测:拉流、避坑与低延迟实践
YOLOv8接入RTSP流实时目标检测:拉流、避坑与低延迟实践

简介:面向需要构建实时视频分析系统的开发者,这份YOLOv8基于RTSP流的目标检测资源包,提供了从视频流接入、图像预处理、模型推理到结果可视化的完整可运行方案,并覆盖环境配置与部署运行的关键细节。借助YOLOAPI工具与YAML配置文件… · 2026/9/25 23:04:16

湖北煤矿道岔,双开道岔,盾构道岔,单开道岔优质厂家实力参考:林州市创扬矿山设备制造有限公司靠谱定制厂家推荐
湖北煤矿道岔,双开道岔,盾构道岔,单开道岔优质厂家实力参考:林州市创扬矿山设备制造有限公司靠谱定制厂家推荐

湖北地区煤矿企业轨道改造、新建矿井轨道铺设,不少采购负责人都在打听靠谱的煤矿道岔专业制造商,想找能做煤矿道岔个性化定制厂家,不少人问起推荐一下煤矿道岔制造商哪家靠谱,今天我们就结合行业实际情况,给大家聊一聊… · 2026/9/25 23:04:16

xgplayer 工程质量门禁(Quality Gates)实战指南:从类型校验、Biome 格式化到覆盖率门槛的仓库级质量守则
xgplayer 工程质量门禁(Quality Gates)实战指南:从类型校验、Biome 格式化到覆盖率门槛的仓库级质量守则

音视频前端 【免费下载链接】xgplayer A HTML5 video player with a parser that saves traffic 项目地址: https://gitcode.com/gh_mirrors/xg/xgplayer 点击查看 免费下载 导读:docs/ai-harness/quality-gates.md 是 xgplayer 仓库(一个带… · 2026/9/25 23:04:03

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码