尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SpringBoot 整合 Seata——分布式事务实战
微服务架构下一个业务操作可能跨多个数据库。分布式事务保证多个服务之间的数据一致性。一、什么场景需要分布式事务下单场景涉及多个服务 订单服务 → order_db创建订单 库存服务 → stock_db扣减库存 积分服务 → point_db增加积分 任一服务失败其他服务必须回滚二、Seata AT 模式原理全局事务GlobalTransaction ├── 分支事务1订单服务 ├── 分支事务2库存服务 └── 分支事务3积分服务 执行流程 1. 每个分支事务先写 undo log 2. 执行 SQL 修改数据 3. 全部成功 → 提交删除 undo log 4. 任一失败 → 根据 undo log 回滚三、Seata Server 部署# 下载 seata-serverdockerrun--nameseata-server-d\-p8091:8091\-eSEATA_IP192.168.1.100\seataio/seata-server:1.6.1建表seata.sql-- undo_log 表每个业务库都要建CREATETABLEundo_log(idBIGINTNOTNULLAUTO_INCREMENT,branch_idBIGINTNOTNULL,xidVARCHAR(128)NOTNULL,contextVARCHAR(128)NOTNULL,rollback_infoLONGBLOBNOTNULL,log_statusINTNOTNULL,log_createdDATETIMENOTNULL,log_modifiedDATETIMENOTNULL,PRIMARYKEY(id),UNIQUEKEYux_undo_log(xid,branch_id))ENGINEInnoDBDEFAULTCHARSETutf8mb4;四、SpringBoot 集成seata:enabled:trueapplication-id:seckill-ordertx-service-group:seckill_tx_groupservice:vgroup-mapping:seckill_tx_group:defaultgrouplist:default:127.0.0.1:8091dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-seata/artifactId/dependency五、使用 GlobalTransactionalServicepublicclassOrderService{AutowiredprivateOrderMapperorderMapper;AutowiredprivateStockClientstockClient;AutowiredprivatePointClientpointClient;/** * 分布式事务创建订单 扣库存 加积分 * 任一失败全部回滚 */GlobalTransactional(namecreate-order,rollbackForException.class)publicOrdercreateOrder(OrderDTOdto){// 1. 创建订单OrderordernewOrder();order.setUserId(dto.getUserId());order.setProductId(dto.getProductId());order.setAmount(dto.getAmount());orderMapper.insert(order);// 2. 扣减库存远程调用库存服务ResultVO?stockResultstockClient.deduct(dto.getProductId(),1);if(stockResult.getCode()!200){thrownewBusinessException(400,库存不足);}// 3. 增加积分远程调用积分服务ResultVO?pointResultpointClient.addPoints(dto.getUserId(),100);if(pointResult.getCode()!200){thrownewBusinessException(400,积分增加失败);}returnorder;}}六、AT 模式的限制1. 仅支持 InnoDB 引擎 2. 业务表必须有主键 3. undo_log 表必须在每个业务库中 4. 不适合长事务全局锁持有时间过长七、AT vs TCC 模式模式性能侵入性适用场景AT⭐⭐⭐⭐低注解即可大多数场景TCC⭐⭐⭐高需写3个方法高性能要求 觉得有用的话点赞 关注【张老师技术栈】吧每周更新 Java/Python/MySQL 实战干货不让你白来。
RELATED

相关推荐

11倍性能革命:Lightpanda无头浏览器如何重塑AI自动化基础设施

11倍性能革命:Lightpanda无头浏览器如何重塑AI自动化基础设施

11倍性能革命:Lightpanda无头浏览器如何重塑AI自动化基础设施 【免费下载链接】browser Lightpanda: the headless browser designed for AI and automation 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser 在当今AI驱动的自动化浪潮中&a…

📅 2026/8/24 14:56:54
抖音下载器完全指南:从零开始打造个人视频素材库

抖音下载器完全指南:从零开始打造个人视频素材库

抖音下载器完全指南:从零开始打造个人视频素材库 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…

📅 2026/8/24 14:56:54
TokenTactics与AAD Internals协同使用:提升Azure令牌利用效率指南

TokenTactics与AAD Internals协同使用:提升Azure令牌利用效率指南

TokenTactics与AAD Internals协同使用:提升Azure令牌利用效率指南 【免费下载链接】TokenTactics Azure JWT Token Manipulation Toolset 项目地址: https://gitcode.com/gh_mirrors/to/TokenTactics 在现代云安全环境中,有效管理和分析Azure AD …

📅 2026/8/24 14:56:54
MORE NEWS

更多资讯

📰

epoll是阻塞还是非阻塞?四大I/O模型一次讲透

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

📰

WorkBuddy本地部署:离线大模型工作台实战指南

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

📰

大模型推理开发实战:从部署、优化到Agent落地的完整指南

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

📰

DeepSeek Harness配置实战:通用设置与Agent预设详解

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

📰

Spring Boot高校竞赛管理系统:从选题到答辩全攻略

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

📰

串口服务器选型实战:从RS485到工业物联网的全面指南

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬