16 KiB
16 KiB
系统架构
**本文引用的文件** - [pom.xml](file://pom.xml) - [readme.md](file://readme.md) - [nflg-wms-admin/pom.xml](file://nflg-wms-admin/pom.xml) - [nflg-wms-auth/pom.xml](file://nflg-wms-auth/pom.xml) - [nflg-wms-gateway/pom.xml](file://nflg-wms-gateway/pom.xml) - [nflg-wms-repository/pom.xml](file://nflg-wms-repository/pom.xml) - [nflg-wms-scheduled/pom.xml](file://nflg-wms-scheduled/pom.xml) - [nflg-wms-srm-receive/pom.xml](file://nflg-wms-srm-receive/pom.xml) - [nflg-wms-shipment/pom.xml](file://nflg-wms-shipment/pom.xml) - [nflg-qms-admin/pom.xml](file://nflg-qms-admin/pom.xml) - [nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java) - [nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java) - [nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GateWayApplication.java](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GateWayApplication.java) - [nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/ScheduledApplication.java](file://nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/ScheduledApplication.java)目录
引言
本架构文档面向架构师与高级开发者,系统化阐述NFLG WMS(仓库管理系统)在Spring Cloud生态下的微服务架构设计。该系统采用多模块聚合工程,围绕“网关层-业务服务层-基础设施层”进行服务拆分与职责划分,结合Nacos注册与配置中心、Sa-Token统一认证、MyBatis-Plus数据访问、Redisson缓存与分布式能力、OpenTelemetry链路追踪、PowerJob计划任务等技术栈,实现高可用、可扩展、可观测的仓储业务支撑平台。
项目结构
系统以Maven聚合工程组织,父POM统一管理版本与依赖,子模块按功能域拆分,形成清晰的模块边界与复用层:
- 核心公共层
- nflg-wms-common:通用常量、异常、DTO/QO/VO、工具类
- nflg-wms-starter:全局切面、拦截器、统一响应包装、基础配置
- 基础设施层
- nflg-wms-repository:数据库访问抽象与MyBatis-Plus集成
- nflg-wms-gateway:Spring Cloud Gateway网关与鉴权路由
- 业务服务层
- nflg-wms-admin:WMS管理后台(含打印、报表、SAP对接)
- nflg-wms-auth:统一认证中心(SSO)
- nflg-wms-srm-receive:SRM订单接收服务
- nflg-wms-shipment:发货相关业务
- nflg-qms-admin:QMS质量管理后台
- nflg-wms-scheduled:计划任务执行器(PowerJob Worker)
- 其他
- readme.md:环境依赖说明(如wkhtmltoimage)
graph TB
subgraph "聚合工程"
ROOT["父POM<br/>统一版本与依赖管理"]
end
subgraph "公共与基础设施"
COMMON["nflg-wms-common"]
STARTER["nflg-wms-starter"]
REPO["nflg-wms-repository"]
GATEWAY["nflg-wms-gateway"]
end
subgraph "业务服务"
ADMIN["nflg-wms-admin"]
AUTH["nflg-wms-auth"]
SRM["nflg-wms-srm-receive"]
SHIPMENT["nflg-wms-shipment"]
QMS["nflg-qms-admin"]
SCHEDULED["nflg-wms-scheduled"]
end
ROOT --> COMMON
ROOT --> STARTER
ROOT --> REPO
ROOT --> GATEWAY
ROOT --> ADMIN
ROOT --> AUTH
ROOT --> SRM
ROOT --> SHIPMENT
ROOT --> QMS
ROOT --> SCHEDULED
ADMIN --> COMMON
ADMIN --> STARTER
ADMIN --> REPO
AUTH --> COMMON
AUTH --> STARTER
GATEWAY --> COMMON
GATEWAY --> REPO
SRM --> STARTER
SHIPMENT --> COMMON
SHIPMENT --> STARTER
QMS --> COMMON
QMS --> STARTER
SCHEDULED --> COMMON
SCHEDULED --> STARTER
图表来源
- pom.xml:17-28
- nflg-wms-admin/pom.xml:14-22
- nflg-wms-auth/pom.xml:15-23
- nflg-wms-gateway/pom.xml:15-27
- nflg-wms-repository/pom.xml:14-18
- nflg-wms-srm-receive/pom.xml:15-19
- nflg-wms-shipment/pom.xml:14-22
- nflg-qms-admin/pom.xml:17-25
- nflg-wms-scheduled/pom.xml:14-22
章节来源
核心组件
- 父POM与版本治理
- Spring Boot 3.2.4、Spring Cloud 2023.0.1、Spring Cloud Alibaba 2023.0.1.0
- MyBatis-Plus 3.5.12、Sa-Token 1.42.0、Redisson 3.52.0、PowerJob 5.1.1、OpenTelemetry等
- 应用入口与发现
- 各服务通过@EnableDiscoveryClient启用服务注册与发现
- 网关、管理后台、认证中心分别暴露HTTP端口,计划任务服务以非Web方式运行
章节来源
- pom.xml:29-53
- nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java:12-18
- nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java:10-14
- nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GateWayApplication.java:9-13
- nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/ScheduledApplication.java:10-17
架构总览
系统采用“网关+服务网格”的微服务体系,客户端请求经由网关统一接入,网关负责路由、鉴权与限流;业务服务通过Nacos完成注册与配置下发;认证中心提供SSO统一认证;数据访问层通过Repository模块与MyBatis-Plus对接PostgreSQL;计划任务通过PowerJob Worker异步执行;日志与链路追踪通过Loki与OpenTelemetry集成。
graph TB
CLIENT["客户端/前端"]
GW["Spring Cloud Gateway<br/>路由/鉴权/限流"]
REG["Nacos 注册与配置中心"]
AUTH["认证中心(nflg-wms-auth)<br/>SSO"]
ADMIN["管理后台(nflg-wms-admin)"]
SRM["SRM接收(nflg-wms-srm-receive)"]
SHIP["发货(nflg-wms-shipment)"]
QMS["QMS管理(nflg-qms-admin)"]
SCHED["计划任务(nflg-wms-scheduled)"]
DB["PostgreSQL 数据库"]
REDIS["Redis 缓存/分布式锁"]
LOG["Loki 日志"]
TRACE["OpenTelemetry 链路追踪"]
CLIENT --> GW
GW --> REG
GW --> AUTH
GW --> ADMIN
GW --> SRM
GW --> SHIP
GW --> QMS
GW --> SCHED
ADMIN --> DB
ADMIN --> REDIS
SRM --> DB
SRM --> REDIS
SHIP --> DB
SHIP --> REDIS
QMS --> DB
QMS --> REDIS
SCHED --> DB
SCHED --> REDIS
ADMIN -.日志/链路.-> LOG
ADMIN -.日志/链路.-> TRACE
AUTH -.日志/链路.-> LOG
AUTH -.日志/链路.-> TRACE
GW -.日志/链路.-> LOG
GW -.日志/链路.-> TRACE
图表来源
- nflg-wms-gateway/pom.xml:29-49
- nflg-wms-admin/pom.xml:14-18
- nflg-wms-srm-receive/pom.xml:15-19
- nflg-wms-shipment/pom.xml:14-22
- nflg-qms-admin/pom.xml:17-25
- nflg-wms-scheduled/pom.xml:14-22
- nflg-wms-repository/pom.xml:23-26
详细组件分析
网关服务(nflg-wms-gateway)
- 职责
- 作为统一入口,聚合路由规则,对接Nacos注册中心与配置中心
- 集成Sa-Token鉴权能力,支持SSO与令牌校验
- 提供负载均衡与限流策略
- 技术要点
- spring-cloud-starter-gateway、spring-cloud-starter-loadbalancer
- Sa-Token Reactor Starter、Redis Jackson
- Actuator、Loki Logback、Redisson Starter
classDiagram
class GateWayApplication {
+main(args)
}
class GatewayRoutes {
+routeToAdmin()
+routeToAuth()
+routeToSrm()
+routeToShipment()
+routeToQms()
+routeToScheduled()
}
GateWayApplication --> GatewayRoutes : "加载路由规则"
图表来源
- nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GateWayApplication.java:10-13
- nflg-wms-gateway/pom.xml:29-49
章节来源
- nflg-wms-gateway/pom.xml:15-94
- nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GateWayApplication.java:9-18
认证服务(nflg-wms-auth)
- 职责
- 提供SSO认证中心,统一发放与校验令牌
- 对接LDAP/用户体系,支持角色权限模型
- 技术要点
- Sa-Token Server/JWT/Jackson
- Redisson、Actuator、Loki、JSch测试依赖
sequenceDiagram
participant C as "客户端"
participant GW as "网关"
participant AUTH as "认证中心"
participant SVC as "业务服务"
C->>GW : 请求受保护资源
GW->>AUTH : 校验令牌/跳转SSO
AUTH-->>GW : 返回认证结果
GW->>SVC : 转发带令牌请求
SVC-->>GW : 返回业务响应
GW-->>C : 返回最终响应
图表来源
- nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java:10-14
- nflg-wms-gateway/pom.xml:55-61
章节来源
- nflg-wms-auth/pom.xml:15-61
- nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java:10-21
管理后台(nflg-wms-admin)
- 职责
- 提供WMS管理界面与接口,覆盖入库、出库、移库、盘点、打印、报表等功能
- 集成SAP JCo、PDF/二维码/Excel处理能力
- 技术要点
- Spring Web、LDAP、Mail、Thymeleaf、iText7、Flying Saucer、EasyExcel、Retry、AOP、Validation、Redisson、Actuator、Loki、OpenTelemetry TSID
flowchart TD
Start(["请求进入"]) --> Validate["参数校验/权限检查"]
Validate --> Biz["业务处理仓储作业"]
Biz --> Repo["Repository持久化"]
Repo --> SAP["SAP JCo同步可选"]
SAP --> Resp["返回结果"]
Repo --> Resp
Validate --> |失败| Err["异常/错误响应"]
图表来源
章节来源
- nflg-wms-admin/pom.xml:14-189
- nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java:12-18
SRM接收服务(nflg-wms-srm-receive)
- 职责
- 接收SRM订单并落库,触发后续质检/收货流程
- 技术要点
- Spring Web、Actuator、Redisson、SAP JCo
章节来源
发货服务(nflg-wms-shipment)
- 职责
- 处理发货相关的包装、装车、出库、单据打印等流程
- 技术要点
- Spring Web、PDF/二维码/Excel、Validation、Redisson、Actuator、OpenTelemetry
章节来源
QMS管理后台(nflg-qms-admin)
- 职责
- 质量管理相关后台能力,与WMS管理后台类似,但聚焦质量域
- 技术要点
- Spring Web、LDAP、Mail、Thymeleaf、MongoDB、EasyExcel、Retry、AOP、Validation、Redisson、Actuator、Loki、OpenTelemetry
章节来源
计划任务服务(nflg-wms-scheduled)
- 职责
- 作为PowerJob Worker,执行周期性或调度性任务(如SAP同步)
- 运行方式
- 以非Web方式启动,仅加载上下文与任务执行器
- 技术要点
- PowerJob Worker、SAP JCo、Redisson、Actuator、LDAP、JUnit、JSch
章节来源
- nflg-wms-scheduled/pom.xml:14-61
- nflg-wms-scheduled/src/main/java/com/nflg/wms/scheduled/ScheduledApplication.java:10-17
数据访问层(nflg-wms-repository)
- 职责
- 封装数据库访问,提供MyBatis-Plus基础能力与重试策略
- 技术要点
- PostgreSQL、MyBatis-Plus、JSQLParser、Spring Retry、Redisson
章节来源
依赖关系分析
- 版本治理
- 父POM集中声明Spring Boot、Spring Cloud、Spring Cloud Alibaba、MyBatis-Plus、Sa-Token、Redisson、PowerJob、OpenTelemetry等版本
- 模块依赖
- 业务服务均依赖common与starter,部分依赖repository
- 网关依赖common与repository,并引入gateway、nacos、sa-token等
- 计划任务依赖starter与repository,使用PowerJob Worker
- 外部依赖
- 数据库:PostgreSQL
- 缓存/分布式:Redisson
- 认证:Sa-Token(Server/Client/JWT/Jackson)
- 日志:Loki Logback Appender
- 链路追踪:Micrometer Tracing Bridge OTel、OTLP Exporter、SDK Extension Autoconfigure
- 打印与报表:wkhtmltoimage(环境依赖)
graph LR
POM["父POM版本管理"]
BOOT["Spring Boot 3.2.4"]
CLOUD["Spring Cloud 2023.0.1"]
ALIBABA["Spring Cloud Alibaba 2023.0.1.0"]
MP["MyBatis-Plus 3.5.12"]
ST["Sa-Token 1.42.0"]
RS["Redisson 3.52.0"]
PJ["PowerJob 5.1.1"]
OT["OpenTelemetry"]
POM --> BOOT
POM --> CLOUD
POM --> ALIBABA
POM --> MP
POM --> ST
POM --> RS
POM --> PJ
POM --> OT
图表来源
章节来源
性能考量
- 并发与限流
- 网关侧建议结合限流与熔断策略,避免热点服务过载
- 缓存与热点
- 使用Redisson进行热点数据缓存与分布式锁,降低数据库压力
- 数据库优化
- MyBatis-Plus分页与JSQLParser动态SQL,配合索引与慢查询监控
- 链路追踪
- OpenTelemetry采集指标与链路,定位瓶颈与异常
- 打印与报表
- wkhtmltoimage需在服务器侧部署,避免阻塞主线程;可异步化打印任务
故障排查指南
- 认证问题
- 检查认证中心SSO配置与令牌签发;确认网关路由是否正确转发至认证中心
- 网关路由
- 核对Nacos路由配置,确保服务名与实例健康状态
- 数据库连接
- 检查PostgreSQL连接参数与驱动版本,关注连接池配置
- 日志与链路
- Loki日志采集与OpenTelemetry链路导出是否正常
- 计划任务
- PowerJob Worker是否在线,任务执行日志与重试策略是否合理
章节来源
结论
本系统通过Spring Cloud与多模块架构实现了清晰的服务边界与职责分离,结合统一认证、网关路由、数据库抽象与分布式能力,构建了可扩展、可观测的WMS平台。建议在生产环境中完善灰度发布、容量评估与灾备演练,持续优化链路与缓存策略,保障高并发与高可用。
附录
- 环境依赖
- 需安装wkhtmltoimage以支持HTML转图片与标签打印
章节来源