当前位置: 首页 > news >正文

下单扣库存场景下的分布式事务架构设计

下单扣库存场景下的分布式事务架构设计

1 概述

1.1 业务场景

用户下单同步扣减商品可售库存,涉及订单服务库存服务两个微服务,跨服务数据更新存在分布式事务一致性问题,采用本地消息表(可靠消息最终一致性)方案实现分布式事务。

1.2 核心公式

可售库存 = 库存总数 - 冻结数

2 核心表结构设计

2.1 库存主表

维护商品基础库存数据,核心字段:

  • 商品id
  • 商家id
  • 库存总数
  • 冻结数

2.2 库存冻结流水表

记录每笔订单对应的库存冻结操作,用于幂等校验、事务状态追溯,唯一主键:订单id + 商品id
核心字段:

  • 订单id
  • 商品id
  • 商品扣减数量
  • 订单状态

2.3 订单服务本地消息表

用于存储待发送MQ消息,保障消息可靠投递,核心字段:

  1. 订单id
  2. MQ消息体:包含订单id、订单内商品id、对应扣减数量
  3. 消息状态:待发送、已发送未确认、消费成功、消费失败(库存扣减失败等)
  4. 重试次数
  5. 失败数据处理状态:待处理、已生成工单(工单由人工处理或系统自动处理)
字段状态释义
  • 消费成功:库存服务完成可售库存扣减,回调订单服务更新本地消息表状态为「消费成功」

3 方案核心异常兜底保障(三大一致性机制)

  1. 本地事务强一致
    订单创建、本地消息表插入操作在同一个数据库事务执行,保证订单数据与本地消息表数据强一致性,不会出现有订单无消息/有消息无订单的脏数据。

  2. MQ消息幂等防重复消费
    MQ存在重发机制,会产生重复消息;库存冻结流水表以订单id+商品id作为唯一联合主键,重复消息会被唯一索引拦截,避免重复扣减库存。

  3. 扣减失败兜底流程
    订单创建成功

http://www.jsqmd.com/news/1135116/

相关文章:

  • 深度学习 29 道核心试题精解:从激活函数到集成学习的 5 大高频考点
  • 工程合同结算管理系统测评:蓝燕云分阶段结算与进度关联
  • 4篇4章2节:初步认识 RAG 技术
  • 【华为OD技术面试手撕真题】152、下降路径最小和 | 手撕真题+思路参考+代码解析(C C++ Java Python JS)(0ms)
  • 为什么别人三极管电阻是1k,而你画10k也能用?
  • 技术科普 | 什么是GEO?AI时代品牌信源优化原理与越华云图陪跑方案
  • 用AI辅助写的稿子,怎么才能避开平台的AIGC检测?
  • 3步解锁单机游戏分屏魔法:Nucleus Co-Op让聚会游戏回归客厅
  • Koikatu HF Patch终极指南:如何轻松解锁200+插件和完整英文翻译
  • ASM330LHH运动跟踪方案与PIC18LF46K40优化实践
  • 向上攀登、向下扎根、向内修行
  • 计算机导论_第3章_笔记
  • AI渐进编程之十五:长期维护里,控制层怎么松紧?
  • 怎样3分钟完成专业图像分层:智能AI工具的完全指南
  • 带着问题去探险:亲手“设计”出 Ceph BlueStore
  • Java面试通关⑫:MySQL数据库核心全集
  • Quarto学习笔记
  • 4-20mA电流环与工业信号采集系统设计
  • 3步掌握惠普暗影精灵性能调校:OmenSuperHub开源控制工具全面解析
  • 纯可视化操作,Windows 快速安装 OpenClaw 无需专业基础
  • 2026年鹅来面深度测评:JD匹配度从45%飙到88%,我的面试邀约翻了3倍
  • 深度拆解移动机器人开发岗:从核心技术到求职全攻略,算法、工程与国际化能力一网打尽
  • 我想把这篇文章送给刚毕业时的自己
  • Java计算机毕设之基于 SpringBoot 的博物馆展览预约管理系统的设计与实现 基于 SpringBoot+Vue 的文博场馆智慧服务平台(完整前后端代码+说明文档+LW,调试定制等)
  • 提示词汇总_001
  • Python 7+ @装饰器:优雅编程新体验
  • 锂离子电池组主动均衡方案设计与实现
  • HoRain云--Hermes Agent 配置
  • 阿里:语言世界模型赋能通用智能体
  • PHP 入门:从零开始构建动态网页