wms/.qoder/repowiki/zh/content/部署运维/部署运维.md

376 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 部署运维
<cite>
**本文引用的文件**
- [pom.xml](file://pom.xml)
- [readme.md](file://readme.md)
- [GatewayApplication.java](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GatewayApplication.java)
- [AdminApplication.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java)
- [AuthApplication.java](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java)
- [application.yml网关](file://nflg-wms-gateway/src/main/resources/application.yml)
- [application.yml认证](file://nflg-wms-auth/src/main/resources/application.yml)
- [application.yml管理端](file://nflg-wms-admin/src/main/resources/application.yml)
- [application-dev.yml管理端](file://nflg-wms-admin/src/main/resources/application-dev.yml)
- [application-prod.yml管理端](file://nflg-wms-admin/src/main/resources/application-prod.yml)
- [application-dev.yml网关](file://nflg-wms-gateway/src/main/resources/application-dev.yml)
- [application-dev.yml认证](file://nflg-wms-auth/src/main/resources/application-dev.yml)
- [DeploySitTest.java管理端](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeploySitTest.java)
</cite>
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
本指南面向NFGL WMS系统的运维与开发团队提供从部署架构、微服务拆分、容器化与集群配置到负载均衡与高可用、监控与日志、性能指标与基准测试、故障排查、备份与恢复、日常巡检与自动化部署的完整实践说明。系统采用Spring Boot 3与Spring Cloud生态结合Nacos服务注册与配置中心、Sa-Token统一认证、Actuator健康监控、Loki日志推送等技术栈。
## 项目结构
- 多模块Maven聚合工程包含网关、认证中心、管理端、定时任务、SRM收货、发货、仓储、公共模块与启动器等。
- 核心运行时依赖Spring Boot 3.2.4、Spring Cloud 2023.0.1、Spring Cloud Alibaba 2023.0.1.0、PostgreSQL驱动、Actuator、Sa-Token、Redisson、PowerJob等。
- 应用通过@EnableDiscoveryClient接入Nacos进行服务注册与发现通过spring.config.import引入Nacos配置Actuator暴露健康检查与指标端点日志通过Loki appender推送至Loki。
```mermaid
graph TB
subgraph "网关层"
GW["网关应用<br/>GatewayApplication"]
end
subgraph "业务服务"
AUTH["认证应用<br/>AuthApplication"]
ADMIN["管理端应用<br/>AdminApplication"]
end
subgraph "基础设施"
NACOS["Nacos 服务注册与配置"]
LOBI["Loki 日志收集"]
PROM["Prometheus 监控"]
REDIS["Redis 缓存"]
DB["PostgreSQL 数据库"]
end
GW --> AUTH
GW --> ADMIN
AUTH --> NACOS
ADMIN --> NACOS
GW --> NACOS
AUTH --> DB
ADMIN --> DB
AUTH --> REDIS
ADMIN --> REDIS
GW --> PROM
AUTH --> PROM
ADMIN --> PROM
AUTH --> LOBI
ADMIN --> LOBI
```
图表来源
- [GatewayApplication.java:1-21](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GatewayApplication.java#L1-L21)
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
- [application.yml网关:1-43](file://nflg-wms-gateway/src/main/resources/application.yml#L1-L43)
- [application.yml认证:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
- [application.yml管理端:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
章节来源
- [pom.xml:17-28](file://pom.xml#L17-L28)
- [pom.xml:54-193](file://pom.xml#L54-L193)
- [application.yml网关:1-43](file://nflg-wms-gateway/src/main/resources/application.yml#L1-L43)
- [application.yml认证:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
- [application.yml管理端:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
## 核心组件
- 网关服务gateway
- 启动类启用服务发现与组件扫描集成Nacos配置与发现开启Spring Cloud Gateway自动路由与负载均衡。
- 端口与健康检查、指标暴露均在配置中定义。
- 认证服务auth
- 启动类启用服务发现与组件扫描集成Nacos配置与发现内置Sa-Token SSO配置。
- 管理端服务admin
- 启动类启用服务发现、调度与重试注解集成Nacos配置与发现支持大文件上传与多部分请求配置。
- 公共与启动器模块
- 提供通用常量、异常、工具、基础控制器与拦截器等,被各业务模块复用。
章节来源
- [GatewayApplication.java:1-21](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GatewayApplication.java#L1-L21)
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
- [application.yml网关:1-43](file://nflg-wms-gateway/src/main/resources/application.yml#L1-L43)
- [application.yml认证:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
- [application.yml管理端:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
## 架构总览
- 微服务拆分
- 网关层:统一入口、路由、鉴权转发。
- 认证中心SSO统一认证与票据管理。
- 业务服务:管理端负责业务功能与前端交互。
- 容器化与集群
- 建议使用Docker镜像化每个服务结合Kubernetes进行部署与扩缩容使用Ingress/Nginx或云厂商LB实现外部流量接入。
- 使用Deployment/Service/ConfigMap/Secret等资源对象管理服务与配置。
- 高可用与弹性
- 多副本部署结合Nacos实现服务注册与发现利用Spring Cloud LoadBalancer进行客户端负载均衡。
- 结合Redisson与数据库连接池参数优化提升并发与稳定性。
```mermaid
graph TB
LB["负载均衡/反向代理"]
subgraph "K8s 集群"
subgraph "命名空间 wms"
SVC_GW["Service 网关"]
POD_GW["Pod 网关 xN"]
SVC_AUTH["Service 认证"]
POD_AUTH["Pod 认证 xN"]
SVC_ADMIN["Service 管理端"]
POD_ADMIN["Pod 管理端 xN"]
end
end
NACOS["Nacos 服务注册与配置"]
REDIS["Redis 集群"]
DB["PostgreSQL 集群"]
LB --> SVC_GW
SVC_GW --> POD_GW
POD_GW --> SVC_AUTH
POD_GW --> SVC_ADMIN
POD_AUTH --> REDIS
POD_ADMIN --> REDIS
POD_AUTH --> DB
POD_ADMIN --> DB
POD_GW --> NACOS
POD_AUTH --> NACOS
POD_ADMIN --> NACOS
```
图表来源
- [application.yml网关:10-26](file://nflg-wms-gateway/src/main/resources/application.yml#L10-L26)
- [application.yml认证:10-19](file://nflg-wms-auth/src/main/resources/application.yml#L10-L19)
- [application.yml管理端:12-23](file://nflg-wms-admin/src/main/resources/application.yml#L12-L23)
## 详细组件分析
### 网关服务gateway
- 启动与发现
- 启用@EnableDiscoveryClient组件扫描覆盖网关与仓库模块。
- 路由与负载均衡
- 开启基于服务名的自动路由定位与小写服务ID启用客户端负载均衡。
- 配置与监控
- 通过Nacos导入共享配置暴露Actuator端点开启数据库与Redis健康探测。
```mermaid
sequenceDiagram
participant U as "客户端"
participant GW as "网关"
participant N as "Nacos"
participant S as "后端服务"
U->>GW : 请求 /api/...
GW->>N : 查询服务列表
N-->>GW : 返回服务实例
GW->>S : 转发请求带负载均衡
S-->>GW : 返回响应
GW-->>U : 返回响应
```
图表来源
- [GatewayApplication.java:10-12](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GatewayApplication.java#L10-L12)
- [application.yml网关:20-26](file://nflg-wms-gateway/src/main/resources/application.yml#L20-L26)
章节来源
- [GatewayApplication.java:1-21](file://nflg-wms-gateway/src/main/java/com/nflg/wms/gateway/GatewayApplication.java#L1-L21)
- [application.yml网关:1-43](file://nflg-wms-gateway/src/main/resources/application.yml#L1-L43)
### 认证服务auth
- 启动与SSO
- 启用@EnableDiscoveryClient组件扫描覆盖认证与启动器、仓库模块。
- 内置Sa-Token SSO配置包含票据超时、回调地址与JWT密钥。
- 配置与监控
- 通过Nacos导入共享配置暴露Actuator端点开启数据库与Redis健康探测。
```mermaid
sequenceDiagram
participant C as "浏览器/客户端"
participant GW as "网关"
participant AUTH as "认证中心"
participant N as "Nacos"
C->>GW : 访问受保护资源
GW->>AUTH : 重定向至登录页
AUTH-->>C : 登录并签发票据
C->>GW : 携带票据访问
GW->>AUTH : 校验票据
AUTH-->>GW : 校验通过
GW-->>C : 放行业务请求
```
图表来源
- [AuthApplication.java:10-13](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L10-L13)
- [application.yml认证:20-33](file://nflg-wms-auth/src/main/resources/application.yml#L20-L33)
章节来源
- [AuthApplication.java:1-24](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L1-L24)
- [application.yml认证:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
### 管理端服务admin
- 启动与能力
- 启用@EnableDiscoveryClient、@EnableScheduling、@EnableRetry组件扫描覆盖管理端与启动器、仓库模块。
- 配置与监控
- 通过Nacos导入共享配置暴露Actuator端点开启数据库与Redis健康探测与链路追踪采样。
- 日志与追踪
- 配置Loki推送地址与OTLP追踪端点便于集中日志与分布式追踪。
```mermaid
flowchart TD
Start(["应用启动"]) --> Reg["注册到 Nacos"]
Reg --> Cfg["拉取配置Nacos"]
Cfg --> Health["健康检查与指标暴露"]
Health --> Loki["日志推送 Loki"]
Health --> Tracing["链路追踪 OTLP"]
Loki --> End(["正常运行"])
Tracing --> End
```
图表来源
- [AdminApplication.java:12-17](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L12-L17)
- [application.yml管理端:31-48](file://nflg-wms-admin/src/main/resources/application.yml#L31-L48)
- [application-dev.yml管理端:1-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L1-L34)
章节来源
- [AdminApplication.java:1-27](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L1-L27)
- [application.yml管理端:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
- [application-dev.yml管理端:1-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L1-L34)
- [application-prod.yml管理端:1-30](file://nflg-wms-admin/src/main/resources/application-prod.yml#L1-L30)
## 依赖分析
- 版本与依赖管理
- Spring Boot 3.2.4、Spring Cloud 2023.0.1、Spring Cloud Alibaba 2023.0.1.0统一版本。
- Actuator、Sa-Token、Redisson、PowerJob、ZXing、Loki Logback Appender等关键依赖集中管理。
- 模块耦合
- 网关依赖于Nacos配置与发现业务服务同样依赖Nacos日志与追踪分别对接Loki与OTLP缓存与数据库作为基础设施被多个服务复用。
```mermaid
graph LR
POM["父POM 依赖管理"]
SB["Spring Boot"]
SC["Spring Cloud"]
SCA["Spring Cloud Alibaba"]
ACT["Actuator"]
ST["Sa-Token"]
RDS["Redisson"]
PJ["PowerJob"]
LG["Loki Appender"]
POM --> SB
POM --> SC
POM --> SCA
POM --> ACT
POM --> ST
POM --> RDS
POM --> PJ
POM --> LG
```
图表来源
- [pom.xml:54-193](file://pom.xml#L54-L193)
章节来源
- [pom.xml:1-260](file://pom.xml#L1-L260)
## 性能考虑
- 连接池与缓存
- Hikari连接池参数最大池大小、空闲超时、最大生存时间、连接超时、泄漏检测阈值在各环境配置文件中设置建议根据峰值QPS与事务时长调优。
- 负载均衡与限流
- 客户端负载均衡已启用可结合Sentinel或Spring Cloud Gateway限流规则实现入口级防护。
- 监控与追踪
- Actuator暴露JVM与业务指标OTEL采样概率可按环境调整Loki集中日志便于快速定位性能瓶颈。
- 基准测试
- 建议使用JMeter或Gatling对关键路径登录、查询、导入导出进行压测关注P95/P99延迟、错误率与资源占用。
章节来源
- [application-dev.yml管理端:26-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L26-L34)
- [application-dev.yml网关:11-20](file://nflg-wms-gateway/src/main/resources/application-dev.yml#L11-L20)
- [application-dev.yml认证:11-20](file://nflg-wms-auth/src/main/resources/application-dev.yml#L11-L20)
- [application.yml管理端:45-48](file://nflg-wms-admin/src/main/resources/application.yml#L45-L48)
## 故障排除指南
- 启动与连通性
- 确认Nacos地址与命名空间正确服务是否成功注册检查Actuator健康端点与数据库/Redis连通性。
- 认证与SSO
- 若登录跳转异常检查认证中心的SSO配置与回调地址确认JWT密钥一致性。
- 日志与追踪
- Loki推送地址与OTLP端点需可达若日志缺失检查Loki Appender与日志级别配置。
- 文件上传与表单限制
- 管理端对文件大小与请求大小进行了上限配置,上传失败时核对客户端与服务端配置。
- 自动化部署
- 测试用例展示了基于SSH/SFTP的部署流程包括MD5校验与远程执行脚本可用于验证部署流程。
章节来源
- [application.yml网关:11-19](file://nflg-wms-gateway/src/main/resources/application.yml#L11-L19)
- [application.yml认证:10-19](file://nflg-wms-auth/src/main/resources/application.yml#L10-L19)
- [application.yml管理端:12-27](file://nflg-wms-admin/src/main/resources/application.yml#L12-L27)
- [application-dev.yml管理端:1-34](file://nflg-wms-admin/src/main/resources/application-dev.yml#L1-L34)
- [DeploySitTest.java管理端:28-41](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeploySitTest.java#L28-L41)
## 结论
NFGL WMS系统具备清晰的微服务边界与完善的基础设施依赖结合Nacos、Loki、Prometheus与Actuator可实现稳定可观测的生产部署。建议在现有基础上完善容器化与Kubernetes编排、引入入口限流与熔断、强化备份与灾备演练并持续优化连接池与追踪采样策略以满足生产性能要求。
## 附录
### Docker部署指南步骤要点
- 镜像构建
- 使用多阶段构建先在构建镜像中执行Maven打包再将产物复制到精简运行镜像减少体积。
- 容器编排
- 使用Compose或Kubernetes Deployment/Service/ConfigMap/Secret管理服务与配置为每个服务设置健康检查探针。
- 网络配置
- 将网关置于Ingress/Nginx之后内部服务间通过ClusterIP访问Nacos与数据库、Redis置于内网或同VPC。
- 环境变量
- 通过ConfigMap注入Nacos地址、命名空间、组名与数据库连接串敏感信息使用Secret。
### 负载均衡与高可用
- 服务发现与注册
- 各服务启用@EnableDiscoveryClient并接入Nacos网关开启自动路由与小写服务ID。
- 客户端负载均衡
- 启用Spring Cloud LoadBalancer结合K8s Service实现多副本横向扩展。
- 熔断与降级
- 建议引入Spring Cloud Circuit Breaker与Resilience4j对下游依赖进行熔断与超时控制。
- 故障转移
- 通过K8s滚动更新与就绪探针确保零停机切换网关侧可配置重试与超时策略。
### 监控与日志
- Prometheus
- 通过Actuator暴露指标Prometheus定期抓取自定义指标可结合Micrometer。
- Loki
- 各服务配置Loki Appender统一推送至Loki结合Grafana进行可视化。
- 告警
- 在Prometheus Alertmanager中配置阈值告警结合企业微信/钉钉通知。
### 性能监控指标与基准测试
- 指标建议
- JVM堆内存、GC频率、线程数数据库连接池活跃数、等待时间网关请求速率、错误率、响应时间。
- 基准测试
- 对登录、查询、导入导出等关键路径进行压力测试记录P95/P99延迟与错误率评估扩容阈值。
### 备份与恢复策略
- 数据备份
- PostgreSQL使用逻辑备份如pg_dump定期归档备份保留周期与异地存储策略应明确。
- 配置备份
- Nacos配置导出与版本化管理K8s ConfigMap/Secret纳入GitOps管理。
- 灾难恢复
- 制定RTO/RPO目标演练跨可用区/跨地域恢复流程;验证服务注册与发现、日志与监控链路恢复。
### 日常维护与巡检清单
- 每日
- 检查服务健康状态、关键指标阈值、磁盘与内存使用率、日志量与错误率。
- 每周
- 清理临时文件与旧日志核对数据库连接池与慢查询验证Nacos配置同步。
- 每月
- 复盘告警与故障,优化采样与阈值;进行备份恢复演练。
### 自动化部署与CI/CD
- CI/CD流水线建议
- 触发条件合并请求或打Tag步骤代码检查、单元测试、打包、镜像构建与推送、Kubernetes部署与回滚策略。
- 部署脚本参考
- 参考测试用例中的SSH/SFTP部署流程封装为可重复的部署脚本支持MD5校验与远程执行。
章节来源
- [DeploySitTest.java管理端:66-81](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/DeploySitTest.java#L66-L81)
- [readme.md:1-10](file://readme.md#L1-L10)