面试官问:项目中分布式事务怎么处理的?
第一层先讲本地事务 Transactional基础铺垫先从单体本地事务切入体现基础功底单体服务单库场景我们用 Spring 的Transactional声明式本地事务底层依靠 AOP 实现保证同一个方法内多条 SQL 原子执行要么全部成功、要么全部回滚满足数据库 ACID但它有明确局限只作用于当前服务、单个数据库微服务拆分后跨服务、跨库操作完全管控不了很容易出现半成功半失败的数据不一致这就引出分布式事务解决方案。第二层分布式事务方案一Seata AT 模式注解GlobalTransactional业务里大部分纯 MySQL 数据库操作场用户下单、JSAPI 支付、扣库存、冻结积分我们使用 Seata AT 自动事务模式核心注解GlobalTransactional标记全局分布式事务入口协调多个微服务分支事务AT 全称 Automatic Transaction全自动处理回滚无需手写补偿代码一阶段执行业务 SQL同步生成undo_log回滚日志和业务数据在同一个Transactional本地事务提交二阶段提交直接异步删除 undo_log无需额外操作二阶段回滚读取 undo_log 自动生成反向 SQL恢复数据优点业务侵入极低只需要加全局注解开发效率高短板只能管控 MySQL 这类关系型数据库Redis、微信商户转账 API 这类外部 / 异构资源无法自动回滚回滚时不能主动调用第三方撤销接口资金类高危场景不适用。第三层分布式事务方案二Seata TCC 模式LocalTCCTwoPhaseBusinessAction当业务链路包含 Redis 缓存、商户主动转账给用户调用微信转账 API这类 AT 覆盖不到的场景我们选用 TCC 手动两段补偿模式核心注解LocalTCC标记当前接口是 TCC 分支事务TwoPhaseBusinessAction绑定 Try、Confirm、Cancel 三段方法对应两段式事务三段逻辑定义贴合我们转账业务Try预留资源数据库冻结余额、Redis 写入冻结标识、调用微信转账接口锁定商户资金Confirm业务最终确认真实扣减冻结余额、清理 Redis 缓存Cancel事务回滚释放资源解冻用户余额、删除 Redis 冻结 key、调用微信撤销转账接口追回资金配套防护注解TCCFence解决三大经典分布式问题空回滚Cancel 先到、Try 未执行不会乱加余额造成资损悬挂Cancel 执行完毕后延迟的 Try 请求到达直接拦截不再冻结资金天然幂等重复回调 / 服务重启重试不会重复扣款、重复解冻优缺点优势支持数据库、Redis、第三方支付 API 任意资源资金类核心业务保障强一致性缺点业务侵入高需要手动编写三段补偿代码开发工作量更大。第四层业务选型总结面试加分收尾我们项目两套方案搭配使用兼顾效率与资金安全普通下单、JSAPI 支付、扣库存等仅操作 MySQL 的业务统一用 Seata AT GlobalTransactional开发快商户转账、平台发红包、操作 Redis 缓存 外部资金接口的核心资金场景强制使用 TCC 模式通过TwoPhaseBusinessAction自定义补偿逻辑避免资金亏损。精简背诵版直接口述项目事务分两层单体用Transactional本地事务只能管单服务单库微服务拆分后出现分布式一致性问题分两种方案第一种是 Seata AT 自动事务用GlobalTransactional依靠 undo_log 自动回滚适合纯 MySQL 操作的下单支付场景开发简单但管不了 Redis 和第三方支付接口第二种是 TCC 手动补偿模式通过LocalTCC和TwoPhaseBusinessAction定义 Try-Confirm-Cancel 三段逻辑能同时处理数据库、Redis、微信转账 API 等异构资源搭配TCCFence解决空回滚、悬挂、幂等问题专门用于商户转账这类核心资金场景。

相关新闻

KARL四维权限模型:资源粒度、操作语义、上下文约束与继承链路深度解析

KARL四维权限模型:资源粒度、操作语义、上下文约束与继承链路深度解析

1. 项目概述:KARL权限模型不是“配个role”就完事的系统工程KARL——这个在开源知识协作领域低调但极具设计深度的平台,它的权限体系远非传统RBAC(基于角色的访问控制)所能简单概括。我第一次接触KARL是在2021年参与一个高校数字人…

2026/7/5 3:18:59 阅读更多 →
微信 Dat 文件逆向分析:从 0x17CE 文件头到 PNG 图片的 3 步解密实战

微信 Dat 文件逆向分析:从 0x17CE 文件头到 PNG 图片的 3 步解密实战

微信 Dat 文件逆向实战:从文件头特征到自定义解密工具开发在移动互联网时代,即时通讯软件产生的数据安全一直是个值得关注的话题。作为国内主流的社交应用,微信对本地存储的图片、视频等多媒体文件采用了特定的加密保护措施。本文将带您深入探…

2026/7/5 3:18:59 阅读更多 →
Android随笔-APP首次启动流程

Android随笔-APP首次启动流程

从用户点击应用图标到 Activity 执行 onCreate() 的完整流程,涉及 Launcher 进程 → SystemServer 进程 → Zygote 进程 → 应用进程 之间的多轮跨进程通信。以下是详细拆解: 一、核心通信方式概览通信双方IPC 方式作用Launcher → AMS/ATMSBinder IPC发…

2026/7/5 3:18:58 阅读更多 →

最新新闻

Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

Nano Banana部署Gemini 2.5 Flash:ARM+NPU边缘多模态推理实战指南

1. 项目概述:这不是一个“升级包”,而是一套可落地的嵌入式AI推理工作流 你手头有一块 Nano Banana 开发板——它不是树莓派,也不是 Jetson Nano,而是基于全志 H616 芯片、带双千兆网口、4GB LPDDR4、支持 PCIe 2.0 x1 的国产小钢…

2026/7/5 4:23:15 阅读更多 →
3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器

3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器

3分钟掌握Crontab UI:告别命令行恐惧的Linux定时任务可视化管理神器 【免费下载链接】crontab-ui Easy and safe way to manage your crontab file 项目地址: https://gitcode.com/gh_mirrors/cr/crontab-ui 还在为复杂的crontab语法而烦恼吗?Cro…

2026/7/5 4:19:14 阅读更多 →
如何专业测试显示器刷新率:5种方法验证VRR功能的终极指南

如何专业测试显示器刷新率:5种方法验证VRR功能的终极指南

如何专业测试显示器刷新率:5种方法验证VRR功能的终极指南 【免费下载链接】VRRTest A small utility I wrote to test variable refresh rate on Linux. Should work on all major OSes. 项目地址: https://gitcode.com/gh_mirrors/vr/VRRTest 显示器可变刷新…

2026/7/5 4:19:14 阅读更多 →
5个步骤搭建免费动作捕捉系统:FreeMoCap完全指南

5个步骤搭建免费动作捕捉系统:FreeMoCap完全指南

5个步骤搭建免费动作捕捉系统:FreeMoCap完全指南 【免费下载链接】freemocap Free Motion Capture for Everyone 💀✨ 项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap FreeMoCap是一个免费开源的动作捕捉系统,为所有人提…

2026/7/5 4:17:14 阅读更多 →
Day3 第二章 链表part2

Day3 第二章 链表part2

了解链表 1. 什么是链表 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)…

2026/7/5 4:17:14 阅读更多 →
聊城食品洁净车间建设指南,按加工场景适配净化板更耐用

聊城食品洁净车间建设指南,按加工场景适配净化板更耐用

聊城作为鲁西农副产品加工核心区域,形成禽肉屠宰、速冻预制菜、果蔬深加工、杂粮面点、宠物食品五大加工集群,大量新建洁净车间、老旧厂房改造需求持续增多。本地的特殊工况,也让选择板材变得复杂纠结起来。 生产线全天用水冲洗,血…

2026/7/5 4:15:13 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻