Cpte-Boot/docs/微服务架构文档.md

58 KiB
Raw Blame History

CPTE WMS 微服务架构文档

1. 架构概述

1.1 系统定位

CPTE WMS 是基于 Spring Boot 3.5.5 + Spring Cloud 2025.0.0 构建的仓库管理系统微服务架构,采用 Kubernetes 进行容器编排部署。

1.2 架构风格

  • 微服务架构: 业务按领域拆分为独立服务
  • 服务网格: 基于 Kubernetes Service 的服务发现
  • 事件驱动: Redis 发布订阅实现异步通信
  • 容器化部署: Docker + Kubernetes

2. 系统架构图

2.1 整体架构

┌────────────────────────────────────────────────────────────────────────────────┐
│                              外部访问层                                          │
│  ┌─────────────────────────────────────────────────────────────────────────┐   │
│  │                          Nginx Ingress                                   │   │
│  │                    (负载均衡 / SSL 终止 / 路由)                           │   │
│  └─────────────────────────────────────────────────────────────────────────┘   │
└────────────────────────────────────────────────────────────────────────────────┘
                                      │
                                      ▼
┌────────────────────────────────────────────────────────────────────────────────┐
│                           应用服务层                                            │
│  ┌──────────────────────────────────────────────────────────────────────────┐  │
│  │                      Namespace: cpte-wms                                  │  │
│  │                                                                           │  │
│  │  ┌────────────────┐  ┌────────────────┐  ┌────────────────┐             │  │
│  │  │  Basic Service │  │Inbound Service │  │Outbound Service│             │  │
│  │  │  基础服务       │  │   入库服务      │  │   出库服务      │             │  │
│  │  │  Port: 8001    │  │  Port: 8002    │  │  Port: 8003    │             │  │
│  │  │  /cpte-wms-basic│  │/cpte-wms-inbound│  │/cpte-wms-outbound│           │  │
│  │  └───────┬────────┘  └───────┬────────┘  └───────┬────────┘             │  │
│  │          │                   │                   │                       │  │
│  │          │    ┌──────────────┼───────────────┐   │                       │  │
│  │          │    │              │               │   │                       │  │
│  │          ▼    ▼              ▼               ▼   ▼                       │  │
│  │  ┌────────────────┐  ┌────────────────┐  ┌────────────────┐             │  │
│  │  │Inventory Service│ │Schedule Service│  │ System Service │             │  │
│  │  │   库存服务      │  │   调度服务      │  │   系统服务      │             │  │
│  │  │  Port: 8004    │  │  Port: 8005    │  │  Port: 8000    │             │  │
│  │  │/cpte-wms-inventory│ │/cpte-wms-schedule│ │/cpte-wms       │           │  │
│  │  └────────────────┘  └────────────────┘  └────────────────┘             │  │
│  │                                                                           │  │
│  │  ┌────────────────────────────────────────────────────────────────────┐  │  │
│  │  │                     cpte-wms-api (共享层)                           │  │  │
│  │  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐  │  │  │
│  │  │  │ Feign Client│ │     DTO     │ │ 分布式锁    │ │   工具类    │  │  │  │
│  │  │  └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘  │  │  │
│  │  └────────────────────────────────────────────────────────────────────┘  │  │
│  └──────────────────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────────────────┘
                                      │
                                      ▼
┌────────────────────────────────────────────────────────────────────────────────┐
│                           基础设施层                                            │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐       │
│  │    MySQL     │  │    Redis     │  │    MinIO     │  │   Nacos      │       │
│  │  数据持久化   │  │ 缓存/锁/消息 │  │  文件存储    │  │  配置中心    │       │
│  │  Port: 53306 │  │  Port: 6379  │  │              │  │              │       │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘       │
└────────────────────────────────────────────────────────────────────────────────┘

2.2 服务拓扑图

                              ┌─────────────────┐
                              │  System Service │
                              │   系统服务       │
                              │   Port: 8000    │
                              └────────┬────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           │                           │                           │
           ▼                           ▼                           ▼
┌─────────────────┐         ┌─────────────────┐         ┌─────────────────┐
│  Basic Service  │◄───────▶│Inbound Service  │◄───────▶│Outbound Service │
│   基础服务       │  Feign  │   入库服务       │  Feign  │   出库服务       │
│   Port: 8001    │         │   Port: 8002    │         │   Port: 8003    │
└────────┬────────┘         └────────┬────────┘         └────────┬────────┘
         │                           │                           │
         │ Feign                     │ Feign                     │ Feign
         │                           │                           │
         └──────────────┬────────────┴────────────┬──────────────┘
                        │                         │
                        ▼                         ▼
              ┌─────────────────┐       ┌─────────────────┐
              │Inventory Service│       │Schedule Service │
              │   库存服务       │       │   调度服务       │
              │   Port: 8004    │       │   Port: 8005    │
              └─────────────────┘       └─────────────────┘

3. 服务清单

3.1 核心服务

服务名称 服务标识 端口 Context Path 职责
基础服务 cpte-wms-basic 8001 /cpte-wms-basic 物料、库区、点位、容器等基础数据管理
入库服务 cpte-wms-inbound 8002 /cpte-wms-inbound ASN 管理、收货、上架等入库业务
出库服务 cpte-wms-outbound 8003 /cpte-wms-outbound 拣货、发货、波次等出库业务
库存服务 cpte-wms-inventory 8004 /cpte-wms-inventory 库存查询、盘点、移库等库存业务
调度服务 cpte-wms-schedule 8005 /cpte-wms-schedule AGV 调度、输送线控制、定时任务
系统服务 cpte-wms 8000 /cpte-wms 用户、权限、系统管理等

3.2 共享模块

模块名称 Artifact ID 职责
公共 API cpte-wms-api Feign Client、DTO、分布式锁、工具类
基础核心 cpte-boot-base-core 公共组件、配置、异常处理
系统业务 cpte-system-biz 用户权限、字典、日志等

4. 服务通信架构

4.1 通信方式

┌─────────────────────────────────────────────────────────────────┐
│                      服务通信方式                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. 同步通信 (OpenFeign)                                        │
│     ┌─────────┐    HTTP/REST    ┌─────────┐                    │
│     │ Service │ ──────────────▶ │ Service │                    │
│     │    A    │                 │    B    │                    │
│     └─────────┘                 └─────────┘                    │
│                                                                 │
│  2. 异步通信 (Redis Pub/Sub)                                    │
│     ┌─────────┐    Publish     ┌───────┐    Subscribe    ┌─────────┐
│     │ Service │ ─────────────▶ │ Redis │ ──────────────▶ │ Service │
│     │    A    │                │       │                 │    B    │
│     └─────────┘                └───────┘                 └─────────┘
│                                                                 │
│  3. 分布式锁 (Redisson)                                         │
│     ┌─────────┐    Lock/Unlock    ┌───────┐                 │
│     │ Service │ ◄────────────────▶ │ Redis │                 │
│     │    A    │                    │       │                 │
│     └─────────┘                    └───────┘                 │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

4.2 OpenFeign 配置

feign:
  client:
    wms-basic:
      url: http://cpte-wms-basic:8001/cpte-wms-basic
    config:
      default:
        connectTimeout: 5000    # 连接超时 5 秒
        readTimeout: 10000      # 读取超时 10 秒
        loggerLevel: INFO       # 日志级别

Feign 核心配置:

  • HTTP 客户端: OkHttp
  • 连接超时: 5 秒
  • 读取超时: 10 秒
  • 重试策略: 初始间隔 100ms最大间隔 1 秒,最多重试 3 次

4.3 服务调用关系

┌─────────────────────────────────────────────────────────────────────────┐
│                         服务调用依赖关系                                  │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  Inbound Service (入库服务)                                              │
│  ├── Feign → Basic Service (获取物料、库区信息)                           │
│  ├── Feign → Inventory Service (更新库存)                                │
│  └── Feign → Schedule Service (触发 AGV 任务)                            │
│                                                                         │
│  Outbound Service (出库服务)                                             │
│  ├── Feign → Basic Service (获取物料、点位信息)                           │
│  ├── Feign → Inventory Service (扣减库存、锁定库存)                       │
│  └── Feign → Schedule Service (触发拣货任务)                             │
│                                                                         │
│  Inventory Service (库存服务)                                            │
│  ├── Feign → Basic Service (获取物料、容器信息)                           │
│  └── Redisson → 分布式锁 (库存操作锁)                                     │
│                                                                         │
│  Schedule Service (调度服务)                                             │
│  ├── Feign → Basic Service (获取点位信息)                                 │
│  ├── Feign → Inventory Service (库存校验)                                │
│  └── Quartz → 定时任务调度                                               │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

5. 数据架构

5.1 数据存储架构

┌─────────────────────────────────────────────────────────────────────────┐
│                           数据存储架构                                    │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                        MySQL (主数据库)                          │   │
│  │                        cpte-wms 数据库                           │   │
│  │                                                                  │   │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐               │   │
│  │  │ base_item   │ │ base_area   │ │ base_point  │  基础数据      │   │
│  │  │ 物料表      │ │ 库区表      │ │ 点位表      │               │   │
│  │  └─────────────┘ └─────────────┘ └─────────────┘               │   │
│  │                                                                  │   │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐               │   │
│  │  │ data_asn    │ │asn_detail   │ │receive_record│  入库数据     │   │
│  │  │ 入库单      │ │ 入库明细    │ │ 收货记录    │               │   │
│  │  └─────────────┘ └─────────────┘ └─────────────┘               │   │
│  │                                                                  │   │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐               │   │
│  │  │ sys_user    │ │ sys_role    │ │ sys_permission│ 系统数据    │   │
│  │  │ 用户表      │ │ 角色表      │ │ 权限表      │               │   │
│  │  └─────────────┘ └─────────────┘ └─────────────┘               │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                        Redis (缓存/消息)                         │   │
│  │                                                                  │   │
│  │  ┌─────────────┐ ┌─────────────┐ ┌─────────────┐               │   │
│  │  │ Session     │ │ 数据缓存    │ │ 分布式锁    │               │   │
│  │  │ 会话存储    │ │ 热点数据    │ │ Redisson    │               │   │
│  │  └─────────────┘ └─────────────┘ └─────────────┘               │   │
│  │                                                                  │   │
│  │  ┌─────────────┐ ┌─────────────┐                               │   │
│  │  │ Pub/Sub     │ │ 消息队列    │                               │   │
│  │  │ 事件发布    │ │ 异步任务    │                               │   │
│  │  └─────────────┘ └─────────────┘                               │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

5.2 数据库连接池

Druid 连接池配置:
  initial-size: 5           # 初始连接数
  min-idle: 5               # 最小空闲连接
  maxActive: 1000           # 最大活跃连接
  maxWait: 60000            # 最大等待时间 60s
  validationQuery: SELECT 1 # 验证 SQL

5.3 Redis 部署模式

支持多种部署模式:

  • STANDALONE: 单机模式
  • MASTER_SLAVE: 主从模式
  • SENTINEL: 哨兵模式
  • CLUSTER: 集群模式

6. 部署架构

6.1 Kubernetes 部署架构

┌─────────────────────────────────────────────────────────────────────────┐
│                      Kubernetes Cluster                                  │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐ │
│  │                    Namespace: cpte-wms                             │ │
│  │                                                                    │ │
│  │  ┌─────────────────────────────────────────────────────────────┐  │ │
│  │  │                    Workload (Deployment)                     │  │ │
│  │  │                                                              │  │ │
│  │  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐│  │ │
│  │  │  │  Pod    │ │  Pod    │ │  Pod    │ │  Pod    │ │  Pod    ││  │ │
│  │  │  │ Basic   │ │ Inbound │ │Outbound │ │Inventory│ │Schedule ││  │ │
│  │  │  │ :8001   │ │ :8002   │ │ :8003   │ │ :8004   │ │ :8005   ││  │ │
│  │  │  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘│  │ │
│  │  │       │           │           │           │           │      │  │ │
│  │  └───────┼───────────┼───────────┼───────────┼───────────┼──────┘  │ │
│  │          │           │           │           │           │         │ │
│  │  ┌───────┴───────────┴───────────┴───────────┴───────────┴──────┐  │ │
│  │  │                    Service (ClusterIP)                        │  │ │
│  │  │                                                               │  │ │
│  │  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │  │ │
│  │  │  │cpte-wms │ │cpte-wms │ │cpte-wms │ │inventory│ │schedule │ │  │ │
│  │  │  │ -basic  │ │ -inbound│ │ -outbound│ │ -service│ │ -service│ │  │ │
│  │  │  │  :8001  │ │  :8002  │ │  :8003  │ │  :8004  │ │  :8005  │ │  │ │
│  │  │  └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │  │ │
│  │  └───────────────────────────────────────────────────────────────┘  │ │
│  │                                                                     │ │
│  │  ┌───────────────────────────────────────────────────────────────┐  │ │
│  │  │                    ConfigMap & Secret                          │  │ │
│  │  │                                                                │  │ │
│  │  │  ConfigMap: application.yml, 环境变量                          │  │ │
│  │  │  Secret: DB_PASSWORD, REDIS_PASSWORD, SIGNATURE_SECRET        │  │ │
│  │  └───────────────────────────────────────────────────────────────┘  │ │
│  │                                                                     │ │
│  │  ┌───────────────────────────────────────────────────────────────┐  │ │
│  │  │                    PersistentVolumeClaim                       │  │ │
│  │  │                                                                │  │ │
│  │  │  cpte-wms-basic-data (10Gi) - 文件上传存储                     │  │ │
│  │  │  cpte-wms-inbound-data (10Gi) - 文件上传存储                   │  │ │
│  │  └───────────────────────────────────────────────────────────────┘  │ │
│  └────────────────────────────────────────────────────────────────────┘ │
│                                                                         │
│  ┌───────────────────────────────────────────────────────────────────┐ │
│  │                    基础设施服务                                    │ │
│  │                                                                    │ │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐             │ │
│  │  │  MySQL   │ │  Redis   │ │  Nginx   │ │  MinIO   │             │ │
│  │  │ Service  │ │ Service  │ │ Ingress  │ │   OSS    │             │ │
│  │  └──────────┘ └──────────┘ └──────────┘ └──────────┘             │ │
│  └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

6.2 服务资源配置

服务 CPU Request CPU Limit Memory Request Memory Limit 副本数
Basic 500m 2000m 1Gi 2Gi 1
Inbound 500m 2000m 1Gi 2Gi 1
Outbound 100m 500m 256Mi 1Gi 1
Inventory 100m 500m 256Mi 1Gi 1
Schedule 100m 500m 256Mi 1Gi 1

6.3 健康检查配置

探针配置:
  livenessProbe:
    path: /{context}/actuator/health/liveness
    initialDelaySeconds: 90-180
    periodSeconds: 20
    timeoutSeconds: 10
    failureThreshold: 3
    
  readinessProbe:
    path: /{context}/actuator/health/readiness
    initialDelaySeconds: 45-120
    periodSeconds: 10-15
    timeoutSeconds: 5-10
    failureThreshold: 3
    
  startupProbe:
    path: /{context}/actuator/health/liveness
    initialDelaySeconds: 0-30
    periodSeconds: 10
    failureThreshold: 30-90

7. 安全架构

7.1 认证授权架构

┌─────────────────────────────────────────────────────────────────────────┐
│                         认证授权架构                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────┐      ┌─────────────┐      ┌─────────────┐                 │
│  │  Client │─────▶│  Nginx      │─────▶│  Service    │                 │
│  │         │      │  Ingress    │      │  Instance   │                 │
│  └─────────┘      └─────────────┘      └──────┬──────┘                 │
│                                               │                         │
│                                               ▼                         │
│                                    ┌─────────────────────┐              │
│                                    │     JwtFilter       │              │
│                                    │  - Token 解析       │              │
│                                    │  - Token 验证       │              │
│                                    │  - Token 刷新       │              │
│                                    └──────────┬──────────┘              │
│                                               │                         │
│                                               ▼                         │
│                                    ┌─────────────────────┐              │
│                                    │    ShiroRealm       │              │
│                                    │  - 用户认证         │              │
│                                    │  - 角色校验         │              │
│                                    │  - 权限校验         │              │
│                                    └──────────┬──────────┘              │
│                                               │                         │
│                                               ▼                         │
│                                    ┌─────────────────────┐              │
│                                    │   Business Logic    │              │
│                                    └─────────────────────┘              │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

7.2 敏感信息管理

┌─────────────────────────────────────────────────────────────────────────┐
│                    Kubernetes Secret 管理                                │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  Secret 类型: Opaque                                                    │
│                                                                         │
│  存储的敏感信息:                                                          │
│  ├── MYSQL_HOST        # MySQL 主机地址                                  │
│  ├── MYSQL_PORT        # MySQL 端口                                      │
│  ├── MYSQL_DATABASE    # 数据库名称                                      │
│  ├── MYSQL_USERNAME    # 数据库用户名                                    │
│  ├── MYSQL_PASSWORD    # 数据库密码                                      │
│  ├── REDIS_HOST        # Redis 主机地址                                  │
│  ├── REDIS_PORT        # Redis 端口                                      │
│  ├── REDIS_PASSWORD    # Redis 密码                                      │
│  ├── MAIL_HOST         # 邮件服务器地址                                  │
│  ├── MAIL_USERNAME     # 邮件用户名                                      │
│  ├── MAIL_PASSWORD     # 邮件密码                                        │
│  └── SIGNATURE_SECRET  # 接口签名密钥                                    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

7.3 服务间认证

// Feign Token 拦截器
public class FeignTokenInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        // 从当前上下文获取 Token 并传递给下游服务
        String token = getCurrentToken();
        template.header("Authorization", "Bearer " + token);
    }
}

8. 可观测性架构

8.1 监控架构

┌─────────────────────────────────────────────────────────────────────────┐
│                          监控架构                                        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Prometheus 采集层                             │   │
│  │                                                                  │   │
│  │  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐   │   │
│  │  │ Basic   │ │ Inbound │ │Outbound │ │Inventory│ │Schedule │   │   │
│  │  │ :8001   │ │ :8002   │ │ :8003   │ │ :8004   │ │ :8005   │   │   │
│  │  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘   │   │
│  │       │           │           │           │           │        │   │
│  │       └───────────┴───────────┴───────────┴───────────┘        │   │
│  │                           │                                     │   │
│  │                           ▼                                     │   │
│  │                  /actuator/prometheus                          │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                              │                                          │
│                              ▼                                          │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Prometheus Server                             │   │
│  │  - 指标采集                                                       │   │
│  │  - 数据存储                                                       │   │
│  │  - 告警规则                                                       │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                              │                                          │
│                              ▼                                          │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Grafana 可视化                                │   │
│  │  - 仪表盘展示                                                     │   │
│  │  - 告警通知                                                       │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

8.2 Actuator 端点

端点 路径 说明
health /actuator/health 健康状态
info /actuator/info 应用信息
prometheus /actuator/prometheus Prometheus 指标
metrics /actuator/metrics JVM 指标

8.3 日志架构

┌─────────────────────────────────────────────────────────────────────────┐
│                          日志架构                                        │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │  Pod    │ │  Pod    │ │  Pod    │ │  Pod    │ │  Pod    │          │
│  │ stdout  │ │ stdout  │ │ stdout  │ │ stdout  │ │ stdout  │          │
│  └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘          │
│       │           │           │           │           │                │
│       └───────────┴───────────┴───────────┴───────────┘                │
│                           │                                             │
│                           ▼                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    日志收集器 (Filebeat/Fluentd)                  │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                           │                                             │
│                           ▼                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Elasticsearch                                 │   │
│  │  - 日志存储                                                       │   │
│  │  - 全文检索                                                       │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                           │                                             │
│                           ▼                                             │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │                    Kibana                                        │   │
│  │  - 日志查询                                                       │   │
│  │  - 可视化分析                                                     │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

9. 高可用架构

9.1 服务高可用

┌─────────────────────────────────────────────────────────────────────────┐
│                       服务高可用设计                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  1. 多副本部署                                                          │
│     ┌─────────────────────────────────────────────────────────────┐    │
│     │  Deployment (replicas: N)                                   │    │
│     │  ┌─────────┐ ┌─────────┐ ┌─────────┐                       │    │
│     │  │  Pod 1  │ │  Pod 2  │ │  Pod N  │                       │    │
│     │  └─────────┘ └─────────┘ └─────────┘                       │    │
│     └─────────────────────────────────────────────────────────────┘    │
│                                                                         │
│  2. 滚动更新                                                            │
│     ┌─────────────────────────────────────────────────────────────┐    │
│     │  strategy:                                                   │    │
│     │    type: RollingUpdate                                       │    │
│     │    rollingUpdate:                                            │    │
│     │      maxSurge: 1          # 最多多 1 个 Pod                  │    │
│     │      maxUnavailable: 0    # 最少可用 Pod 数                  │    │
│     └─────────────────────────────────────────────────────────────┘    │
│                                                                         │
│  3. 健康检查                                                            │
│     ┌─────────────────────────────────────────────────────────────┐    │
│     │  livenessProbe  → 存活检查 (失败则重启)                       │    │
│     │  readinessProbe → 就绪检查 (失败则从 Service 移除)            │    │
│     │  startupProbe   → 启动检查 (慢启动保护)                       │    │
│     └─────────────────────────────────────────────────────────────┘    │
│                                                                         │
│  4. 服务降级                                                            │
│     ┌─────────────────────────────────────────────────────────────┐    │
│     │  @FeignClient(fallbackFactory = BasicServiceFallbackFactory)│    │
│     │  → 服务不可用时返回默认响应                                   │    │
│     └─────────────────────────────────────────────────────────────┘    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

9.2 数据高可用

┌─────────────────────────────────────────────────────────────────────────┐
│                       数据高可用设计                                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  MySQL 高可用:                                                          │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  ┌─────────────┐      ┌─────────────┐                          │   │
│  │  │   Master    │ ───▶ │   Slave     │                          │   │
│  │  │  (读写)     │      │  (只读)     │                          │   │
│  │  └─────────────┘      └─────────────┘                          │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
│  Redis 高可用:                                                          │
│  ┌─────────────────────────────────────────────────────────────────┐   │
│  │  ┌─────────────┐      ┌─────────────┐      ┌─────────────┐    │   │
│  │  │   Master    │ ───▶ │   Slave     │ ◀─── │  Sentinel   │    │   │
│  │  └─────────────┘      └─────────────┘      │  (监控)     │    │   │
│  │                                             └─────────────┘    │   │
│  └─────────────────────────────────────────────────────────────────┘   │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

10. 技术栈清单

10.1 核心框架

组件 版本 用途
Spring Boot 3.5.5 应用框架
Spring Cloud 2025.0.0 微服务治理
JDK 17 运行环境

10.2 数据层

组件 版本 用途
MyBatis Plus 3.5.12 ORM 框架
Druid 1.2.24 连接池
MySQL 8.0.27 关系数据库
Redis - 缓存/分布式锁

10.3 服务通信

组件 版本 用途
OpenFeign 4.2.0 服务调用
OkHttp - HTTP 客户端
Redisson 3.27.0 分布式锁

10.4 容器化

组件 用途
Docker 容器运行时
Kubernetes 容器编排
KubeSphere 容器平台

10.5 其他组件

组件 版本 用途
Knife4j 4.5.0 API 文档
Quartz - 定时任务
Shiro 2.0.4 安全框架
JWT 4.5.0 Token 认证

11. 服务依赖关系图

                                    ┌─────────────────┐
                                    │  System Service │
                                    │   (用户/权限)    │
                                    └────────┬────────┘
                                             │
                                             │ 认证
                                             │
              ┌──────────────────────────────┼──────────────────────────────┐
              │                              │                              │
              ▼                              ▼                              ▼
    ┌─────────────────┐            ┌─────────────────┐            ┌─────────────────┐
    │  Basic Service  │◄───────────│Inbound Service  │───────────▶│Outbound Service │
    │   (基础数据)     │   Feign    │   (入库业务)     │   Feign    │   (出库业务)     │
    └────────┬────────┘            └────────┬────────┘            └────────┬────────┘
             │                              │                              │
             │ Feign                        │ Feign                        │ Feign
             │                              │                              │
             │         ┌────────────────────┼────────────────────┐         │
             │         │                    │                    │         │
             ▼         ▼                    ▼                    ▼         ▼
    ┌─────────────────────────┐    ┌─────────────────┐    ┌─────────────────────────┐
    │    Inventory Service    │◄───│Schedule Service │───▶│       基础设施          │
    │      (库存业务)          │    │   (调度任务)     │    │  ┌─────┐ ┌─────┐       │
    └─────────────────────────┘    └─────────────────┘    │  │MySQL│ │Redis│       │
                                                          │  └─────┘ └─────┘       │
                                                          └─────────────────────────┘

附录

A. 服务端口汇总

服务 容器端口 Service 端口 ClusterIP
cpte-wms-basic 8001 8001 10.233.42.190
cpte-wms-inbound 8002 8002 10.233.51.195
cpte-wms-outbound 8003 8003 -
inventory-service 8004 8004 -
outbound-service 8003 8003 -

B. Context Path 汇总

服务 Context Path
Basic /cpte-wms-basic
Inbound /cpte-wms-inbound
Outbound /cpte-wms-outbound
Inventory /cpte-wms-inventory
Schedule /cpte-wms-schedule

C. 关键配置项

配置项 说明
spring.application.name 服务名称
server.port 服务端口
server.servlet.context-path 上下文路径
feign.client.wms-basic.url 基础服务地址
jeecg.redisson.address Redis 地址