【MES学习笔记系列】04 - MES 技术架构设计
2026/8/5 9:38:01
网站建设
项目流程
目标读者 :系统架构师、技术负责人、高级开发工程师
阅读时间 :约 30 分钟
前置知识 :微服务基本概念、Spring Boot 基础
一、架构总览 1.1 分层架构 MES 系统采用典型的三层架构,兼顾传统的水平分层和微服务时代垂直切割的灵活性:
1.2 关键设计原则 原则 说明 高内聚低耦合 每个微服务只负责一个业务领域(DDD 限界上下文) 无状态设计 应用服务无状态,状态存于 Redis/数据库,方便水平扩展 异步解耦 非实时业务通过消息队列异步处理 独立部署 每个微服务可独立构建、部署、扩缩容 容错设计 熔断(Sentinel)、降级、重试,防止级联故障
二、云原生与微服务架构 2.1 微服务拆分策略 基于 DDD(领域驱动设计)的限界上下文进行服务拆分:
微服务 限界上下文 核心聚合根 数据存储 mes-order 工单管理 WorkOrder MySQL mes-execution 生产执行 ProductionRecord MySQL mes-quality 质量管理 InspectionTask MySQL mes-equipment 设备管理 Machine, Maintenance MySQL mes-material 物料管理 MaterialLot, Inventory MySQL mes-schedule 排程引擎 SchedulePlan MySQL mes-collection 数据采集 DeviceDataPoint InfluxDB/MySQL mes-report 报表分析 ReportTemplate MySQL 只读副本 mes-system 系统管理 User, Role, Permission MySQL mes-gateway API 网关 — —
2.2 服务通信 通信方式 适用场景 技术选型 同步 REST 查询类、事务性操作 Feign / OpenFeign 异步消息 事件通知、数据同步 RocketMQ / RabbitMQ gRPC 高性能、流式调用 Spring gRPC Starter WebSocket 实时看板推送 Spring WebSocket
2.3 服务治理 三、技术选型 3.1 推荐技术栈(主力方案:Java) 层级 技术 版本 选择理由 后端框架 Spring Boot 3.x 生态完善、国内 MES 主流 微服务治理 Spring Cloud Alibaba 2023.x Nacos 注册发现 + 配置、Sentinel 限流 ORM MyBatis Plus 3.5+ 灵活 SQL、代码生成 消息队列 RocketMQ 5.x 延迟消息、事务消息、阿里系生态 缓存 Redis 7.x 高频数据缓存、分布式锁 前端框架 Vue 3 + Element Plus 3.4+ 组件丰富、中文生态好 关系数据库 MySQL / PostgreSQL 8.0 / 15+ 主数据存储 时序数据库 InfluxDB / TimescaleDB 2.x / 2.x 设备采集的时序数据 对象存储 MinIO 最新 附件、eSOP 文件存储 容器化 Docker + K8s 24+ / 1.28+ 编排、弹性伸缩 CI/CD GitLab CI / Jenkins 最新 自动化构建部署 监控 Prometheus + Grafana 最新 指标采集与可视化 日志 ELK (Elasticsearch + Logstash + Kibana) 8.x 集中日志管理与检索
3.2 备选方案对比 组件 方案 A(推荐) 方案 B 适用场景 后端语言 Java + Spring Boot .NET Core / Python .NET 适合 Windows 生态工厂;Python 适合轻量项目 消息队列 RocketMQ RabbitMQ / Kafka RabbitMQ 适合中小规模;Kafka 适合大数据量流处理 前端 Vue 3 React + Ant Design React 适合国际化团队 数据库 MySQL PostgreSQL 需要 JSONB 高级特性选 PG 服务治理 Spring Cloud Istio + K8s 多语言微服务网格
3.3 Java vs .NET Core 对比 维度 Java / Spring Boot .NET Core 微服务生态 Spring Cloud 全家桶成熟 Steeltoe + Ocelot OPC UA 库 Eclipse Milo OPC UA .NET Standard 部署环境 Linux 为主 Windows 兼容性更好 国内招聘 岗位多 传统制造业 .NET 岗位多 选型建议 新项目首选 与微软生态紧耦合的工厂
四、系统集成方案 4.1 集成全景图 4.2 ERP 集成 接口 方向 数据内容 频率 生产计划同步 ERP → MES 计划单号、产品、数量、交期 日/即时 报工回传 MES → ERP 良品数、不良品数、工时 实时 物料消耗回传 MES → ERP 原材料消耗数量、批次 工单完工时 入库通知 MES → ERP 成品完工入库信息 实时 基础数据同步 ERP → MES 物料主数据、BOM、客户信息 日
4.3 WMS 集成 接口 方向 说明 送料指令 MES → WMS 工单开工时生成送料单 发料确认 WMS → MES WMS 完成拣货发料后通知 MES 完工入库 MES → WMS 成品完工请求入库 库存查询 MES → WMS 实时获取物料可用量
4.4 SCADA/PLC 集成 协议 适用场景 MES 角色 OPC UA 主流设备、CNC 机床、PLC 客户端(订阅数据 + 调用方法) Modbus TCP 老旧设备、仪表 客户端(读保持寄存器) MQTT 边缘传感器、IoT 网关 Broker(接收数据) MTConnect CNC 机床 客户端(接收标准化数据)
五、接口设计 5.1 RESTful API 规范 URL 设计:
GET /api/v1/work-orders # 工单列表 GET /api/v1/work-orders/{id} # 工单详情 POST /api/v1/work-orders # 创建工单 PUT /api/v1/work-orders/{id} # 更新工单 POST /api/v1/work-orders/{id}/start # 开工 POST /api/v1/work-orders/{id}/complete # 完工 统一响应格式:
json
{ "code": 200, "message": "success", "data": { "orderId": "WO-20260729-001", "productName": "产品A", "status": "IN_PRODUCTION" }, "timestamp": 1753700000 }5.2 OPC UA 数据模型 Root └── Objects └── Factory └── Line1 └── Machine-001 ├── Status (Variable: "Running") ├── Temperature (Variable: 85.6) ├── Speed (Variable: 1200) ├── Alarm (Variable: false) └── Methods ├── Start() ├── Stop() └── SetSpeed(int rpm) 5.3 MQTT Topic 设计 Topic 说明 QoS mes/{factory}/{line}/device/status 设备状态上报 1 mes/{factory}/{line}/device/data 工艺参数上报 1 mes/{factory}/{line}/device/alarm 设备报警 2 mes/{factory}/{line}/cmd/recipe 配方下发指令 2 mes/{factory}/{line}/cmd/adjust 参数调整指令 2
六、安全架构 6.1 安全分层 层面 措施 技术 传输安全 TLS 1.3 加密 Nginx SSL 终结 认证 JWT + OAuth 2.0 Spring Security 授权 RBAC 角色权限 + 数据权限 自研权限中间件 审计 操作日志全量记录 AOP + ELK 数据安全 敏感字段加密存储 AES-256 / SM4 API 安全 请求签名 + 防重放 时间戳 + Nonce
6.2 权限模型 用户 (User) │ ├── 角色 (Role): 生产经理 / 操作员 / 质检员 / 设备工程师 │ │ │ └── 功能权限: 工单管理 / 质量检验 / 设备管理 ... │ └── 数据权限: 只能看到所属产线 / 车间的数据 七、高可用与灾备设计 能力 方案 应用高可用 多副本 + K8s 自动重启 + HPA 自动扩缩 数据库高可用 MySQL 主从复制 + 读写分离 消息队列高可用 RocketMQ Dledger 主备 缓存高可用 Redis 哨兵 / Cluster 异地灾备 数据库异地同步、每日备份 灰度发布 K8s Ingress 按权重引流