【WMS学习笔记系列】02-系统架构设计 02 — 系统架构设计2.1 架构选型2.1.1 为什么选择单体优先而非微服务对于中小型 WMS推荐模块化单体架构Modular Monolith对比维度单体架构微服务架构开发效率高代码集中低服务拆分成本高部署复杂度低单一部署单元高需要编排运维成本低高服务发现/配置中心/链路追踪数据一致性本地事务强一致分布式事务最终一致适用场景团队 10人业务初期团队 30人多业务线结论初期采用模块化单体按 wms-core、wms-inbound、wms-outbound、wms-inventory、wms-report 等模块划分未来可平滑拆分为微服务。本资料以 Spring Boot 单体架构为主同时标注微服务演进方向。2.1.2 技术栈详情2.1.3 各组件职责组件用途WMS 场景MySQL 8.0主数据库存储业务数据订单、库存、商品、用户Redis 7缓存 分布式锁热点库存缓存、入库单号分布式锁RabbitMQ异步消息入库完成通知、库存变更同步Elasticsearch日志 报表检索操作日志检索、库存历史查询MinIO / OSS文件存储签收单扫描件、质检照片2.2 模块划分2.2.1 模块结构wms-parent/ ├── wms-common/ # 公共模块工具类、常量、异常、注解 ├── wms-core/ # 核心模块商品、仓库、库位、用户、权限 ├── wms-inbound/ # 入库模块ASN、收货、上架 ├── wms-outbound/ # 出库模块订单、波次、拣货、复核、发货 ├── wms-inventory/ # 库存模块库存查询、移动、调整、批次 ├── wms-count/ # 盘点模块盘点计划、任务、差异 ├── wms-report/ # 报表模块统计报表、数据看板 └── wms-api/ # 对外 API 模块第三方系统对接2.2.2 模块间依赖wms-common ← 所有模块依赖它 ↑ wms-core ← 基础数据被所有模块依赖 ↑ wms-inbound / wms-outbound / wms-inventory / wms-count / wms-report 业务模块之间尽量避免直接依赖通过事件解耦2.2.3 包结构规范以 wms-inbound 为例com.wms.inbound/ ├── controller/ # 接口层接收 HTTP 请求 ├── service/ # 业务层业务逻辑 │ └── impl/ ├── mapper/ # 持久层MyBatis Mapper ├── model/ │ ├── entity/ # 数据库实体 │ ├── dto/ # 数据传输对象 │ ├── vo/ # 视图对象返回前端 │ └── bo/ # 业务对象 ├── event/ # 领域事件 ├── config/ # 模块配置 └── enums/ # 枚举2.3 核心设计决策2.3.1 库存扣减方案2.3.2 库位推荐策略上架时系统自动推荐最优库位核心算法推荐逻辑 1. 查询该 SKU 已有库存的库位 → 同类集中存放 2. 若无按以下规则筛选 a. 库位类型匹配存储区 / 拣选区 b. 库位容量充足体积、重量不超限 c. 库位状态可用非冻结/非锁定 d. 根据 ABC 分类优先推荐周转率匹配的库位 A 类快周转 → 靠近出口C 类慢周转 → 远离出口 3. 返回 Top 3 推荐供人工选择2.3.3 波次策略波次策略配置 ┌──────────────┬──────────────────────────┐ │ 策略类型 │ 说明 │ ├──────────────┼──────────────────────────┤ │ 按订单数量 │ 每 N 个订单生成一个波次 │ │ 按商品数量 │ 商品总量达到 N 件生成波次 │ │ 按时段 │ 每 X 分钟生成一个波次 │ │ 按区域 │ 同区域订单打包成一个波次 │ │ 按承运商 │ 同承运商订单合并波次 │ └──────────────┴──────────────────────────┘2.3.4 分布式锁应用场景场景锁 Key说明生成入库单号lock:asn:date:20260730防止单号重复库存扣减lock:inv:sku:12345防止并发超扣库位分配lock:location:A-01-03防止同库位并发分配盘点锁定lock:count:warehouse:1盘点期间冻结库区2.4 安全架构2.4.1 认证流程2.4.2 权限模型RBAC用户(User) ←→ 角色(Role) ←→ 权限(Permission) ↓ 菜单权限 按钮权限 数据权限数据权限示例角色仓库数据范围说明超级管理员全部仓库查看所有数据区域经理指定区域仓库只能看管辖区域仓管员当前仓库只能操作本仓库拣货员当前仓库只能看本仓库任务2.5 部署架构

相关新闻

最新新闻

树莓派4板载蓝牙稳定连接实战:从配置到Python编程避坑指南

树莓派4板载蓝牙稳定连接实战:从配置到Python编程避坑指南

1. 项目概述:为什么要在树莓派4上折腾板载蓝牙?树莓派4的板载蓝牙模块,对于很多刚上手的朋友来说,可能就是个“熟悉的陌生人”。你用它连过鼠标键盘,可能也试过传个文件,但真要把它当成一个稳定、可靠的通信…

2026/8/19 1:33:53
FNF模组部署指南:从双版本创意到实战运行全解析

FNF模组部署指南:从双版本创意到实战运行全解析

这次我们来看一个名为“做UP主232天|失误vs完美双版本【FNF QT模组】”的项目。从标题来看,这很可能是一个围绕音乐节奏游戏《Friday Night Funkin‘》(FNF)的玩家自制模组(Mod),其核心创意在于…

2026/8/19 1:33:53
基于音频的机器人轨迹控制:从语音指令到平滑运动实现

基于音频的机器人轨迹控制:从语音指令到平滑运动实现

1. 项目缘起:当机器人“听见”你的声音在机器人控制领域,我们习惯了用键盘、手柄、触摸屏,甚至是复杂的编程指令来告诉机器人“向左转”或“前进一米”。但你是否想过,如果机器人能像宠物一样,听懂你的声音指令&#x…

2026/8/19 1:33:53
基于STM32的“完美时机”游戏开发:GPIO中断与定时器精准计时实践

基于STM32的“完美时机”游戏开发:GPIO中断与定时器精准计时实践

1. 项目概述:在RT-Spark开发板上实现一个“完美时机”游戏最近在玩一块基于STM32的RT-Spark开发板,心血来潮想在上面复刻一个经典的游戏——“完美时机”。这个游戏的核心玩法很简单:屏幕上会有一个快速移动的指示器或目标,玩家需…

2026/8/19 1:33:53
Switch-Toolbox 实战手册:免费打开与修改 Switch、3DS、Wii U 游戏文件的完整指南

Switch-Toolbox 实战手册:免费打开与修改 Switch、3DS、Wii U 游戏文件的完整指南

Switch-Toolbox 实战手册:免费打开与修改 Switch、3DS、Wii U 游戏文件的完整指南 【免费下载链接】Switch-Toolbox A tool to edit many video game file formats 项目地址: https://gitcode.com/gh_mirrors/sw/Switch-Toolbox 玩过任天堂系游戏 MOD 的玩家…

2026/8/19 1:33:53
ARMCC优化下XMC1100的CoreMark性能测试与嵌入式MCU选型实战

ARMCC优化下XMC1100的CoreMark性能测试与嵌入式MCU选型实战

1. 从“跑分”到“选型”:为什么要在MCU上做CoreMark测试?如果你和我一样,长期在嵌入式领域摸爬滚打,肯定遇到过这样的场景:面对一堆参数表上看起来差不多的微控制器(MCU),比如都是C…

2026/8/19 1:28:52