【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工单管理WorkOrderMySQL
mes-execution生产执行ProductionRecordMySQL
mes-quality质量管理InspectionTaskMySQL
mes-equipment设备管理Machine, MaintenanceMySQL
mes-material物料管理MaterialLot, InventoryMySQL
mes-schedule排程引擎SchedulePlanMySQL
mes-collection数据采集DeviceDataPointInfluxDB/MySQL
mes-report报表分析ReportTemplateMySQL 只读副本
mes-system系统管理User, Role, PermissionMySQL
mes-gatewayAPI 网关

2.2 服务通信

通信方式适用场景技术选型
同步 REST查询类、事务性操作Feign / OpenFeign
异步消息事件通知、数据同步RocketMQ / RabbitMQ
gRPC高性能、流式调用Spring gRPC Starter
WebSocket实时看板推送Spring WebSocket

2.3 服务治理


三、技术选型

3.1 推荐技术栈(主力方案:Java)

层级技术版本选择理由
后端框架Spring Boot3.x生态完善、国内 MES 主流
微服务治理Spring Cloud Alibaba2023.xNacos 注册发现 + 配置、Sentinel 限流
ORMMyBatis Plus3.5+灵活 SQL、代码生成
消息队列RocketMQ5.x延迟消息、事务消息、阿里系生态
缓存Redis7.x高频数据缓存、分布式锁
前端框架Vue 3 + Element Plus3.4+组件丰富、中文生态好
关系数据库MySQL / PostgreSQL8.0 / 15+主数据存储
时序数据库InfluxDB / TimescaleDB2.x / 2.x设备采集的时序数据
对象存储MinIO最新附件、eSOP 文件存储
容器化Docker + K8s24+ / 1.28+编排、弹性伸缩
CI/CDGitLab CI / Jenkins最新自动化构建部署
监控Prometheus + Grafana最新指标采集与可视化
日志ELK (Elasticsearch + Logstash + Kibana)8.x集中日志管理与检索

3.2 备选方案对比

组件方案 A(推荐)方案 B适用场景
后端语言Java + Spring Boot.NET Core / Python.NET 适合 Windows 生态工厂;Python 适合轻量项目
消息队列RocketMQRabbitMQ / KafkaRabbitMQ 适合中小规模;Kafka 适合大数据量流处理
前端Vue 3React + Ant DesignReact 适合国际化团队
数据库MySQLPostgreSQL需要 JSONB 高级特性选 PG
服务治理Spring CloudIstio + K8s多语言微服务网格

3.3 Java vs .NET Core 对比

维度Java / Spring Boot.NET Core
微服务生态Spring Cloud 全家桶成熟Steeltoe + Ocelot
OPC UA 库Eclipse MiloOPC 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 → MESWMS 完成拣货发料后通知 MES
完工入库MES → WMS成品完工请求入库
库存查询MES → WMS实时获取物料可用量

4.4 SCADA/PLC 集成

协议适用场景MES 角色
OPC UA主流设备、CNC 机床、PLC客户端(订阅数据 + 调用方法)
Modbus TCP老旧设备、仪表客户端(读保持寄存器)
MQTT边缘传感器、IoT 网关Broker(接收数据)
MTConnectCNC 机床客户端(接收标准化数据)

五、接口设计

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.0Spring Security
授权RBAC 角色权限 + 数据权限自研权限中间件
审计操作日志全量记录AOP + ELK
数据安全敏感字段加密存储AES-256 / SM4
API 安全请求签名 + 防重放时间戳 + Nonce

6.2 权限模型

用户 (User) │ ├── 角色 (Role): 生产经理 / 操作员 / 质检员 / 设备工程师 │ │ │ └── 功能权限: 工单管理 / 质量检验 / 设备管理 ... │ └── 数据权限: 只能看到所属产线 / 车间的数据

七、高可用与灾备设计

能力方案
应用高可用多副本 + K8s 自动重启 + HPA 自动扩缩
数据库高可用MySQL 主从复制 + 读写分离
消息队列高可用RocketMQ Dledger 主备
缓存高可用Redis 哨兵 / Cluster
异地灾备数据库异地同步、每日备份
灰度发布K8s Ingress 按权重引流

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询