库存中心怎么设计?一次讲清可用库存、冻结库存、仓库维度与库存流水体系

大家好,我是一名有 4 年工作经验的 Java 后端开发。
库存系统在电商里绝对是核心中的核心,很多高并发、超卖、回补、履约问题最后都会绕回库存中心本身。
这篇文章我想系统聊一聊库存中心到底应该怎么设计。

🦅个人主页
🐼


一、库存中心到底在管什么

很多人会把库存理解成:

  • 一个商品有多少库存

但真实库存中心远不止这个层面,它通常要管理:

  • SKU 库存
  • 仓库库存
  • 可用库存
  • 冻结库存
  • 已售库存
  • 库存流水
  • 人工调整
  • 盘点差异

所以库存中心本质上不是一个字段,而是一套库存账本系统。


二、为什么库存一定要按 SKU 和仓库管理

因为真正可售卖和可履约的库存,往往取决于:

  • 具体 SKU
  • 具体仓库

如果你只在商品维度记库存,后面会很难支持:

  • 多仓发货
  • 仓库调拨
  • 区域库存
  • 部分缺货

三、推荐的库存模型

我更建议至少拆成:

  • warehouse_stock
  • stock_flow
  • stock_adjust_record

其中 warehouse_stock 可以包含:

  • available_stock
  • frozen_stock
  • sold_stock

这比单一 stock 字段清晰很多。


四、库存中心最关键的几个能力

4.1 库存冻结与解冻

用于:

  • 下单锁库存
  • 超时释放库存

4.2 扣减与回补

用于:

  • 支付成功
  • 取消订单
  • 售后回补

4.3 库存流水

用于:

  • 审计
  • 排查
  • 对账

4.4 人工调整

库存系统一定会遇到:

  • 盘点差异
  • 手工修正

所以要有专门调整记录。


五、表设计建议

5.1 仓库库存表

CREATE TABLE warehouse_stock (
    sku_id BIGINT NOT NULL,
    warehouse_id BIGINT NOT NULL,
    available_stock INT NOT NULL,
    frozen_stock INT NOT NULL,
    sold_stock INT NOT NULL,
    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (sku_id, warehouse_id)
);

5.2 库存流水表

CREATE TABLE stock_flow (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    sku_id BIGINT NOT NULL,
    warehouse_id BIGINT NOT NULL,
    biz_type VARCHAR(32) NOT NULL,
    biz_id BIGINT NOT NULL,
    available_delta INT NOT NULL,
    frozen_delta INT NOT NULL,
    sold_delta INT NOT NULL,
    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

六、面试中怎么回答

如果面试官问你:

库存中心一般怎么设计?

你可以这样回答:

第一,我不会把库存中心设计成单一 stock 字段,而是至少会拆成可用库存、冻结库存和已售库存,因为它们对应不同的业务生命周期。

第二,库存通常会按 SKU + 仓库维度建模,因为真实履约依赖的是具体 SKU 在具体仓库里的库存,而不是抽象商品总库存。

第三,库存中心里一定要有库存流水,因为很多问题最后不是“当前数不对”,而是“这个数到底怎么变成现在这样的”,没有流水后面很难排查和对账。


七、总结

库存中心真正难的,不是“减库存”,而是如何把:

  • 数量
  • 生命周期
  • 仓库维度
  • 流水审计

真正管理成一套账本系统。

如果只记一句结论,我觉得可以记住这句:

库存中心最稳的设计一定不是一个 stock 字段,而是“SKU + 仓库 + 可用/冻结/已售 + 流水”的组合模型。


八、结尾

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注。
后面我会继续整理一些更偏实战的 Java 后端和电商系统设计文章,尽量少写空泛概念,多写真实项目里会踩到的坑。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐