
目標讀者系統(tǒng)架構師、技術負責人、高級開發(fā)工程師閱讀時間約 30 分鐘前置知識微服務基本概念、Spring Boot 基礎一、架構總覽1.1 分層架構MES 系統(tǒng)采用典型的三層架構兼顧傳統(tǒng)的水平分層和微服務時代垂直切割的靈活性1.2 關鍵設計原則原則說明高內(nèi)聚低耦合每個微服務只負責一個業(yè)務領域DDD 限界上下文無狀態(tài)設計應用服務無狀態(tài)狀態(tài)存于 Redis/數(shù)據(jù)庫方便水平擴展異步解耦非實時業(yè)務通過消息隊列異步處理獨立部署每個微服務可獨立構建、部署、擴縮容容錯設計熔斷Sentinel、降級、重試防止級聯(lián)故障二、云原生與微服務架構2.1 微服務拆分策略基于 DDD領域驅動設計的限界上下文進行服務拆分微服務限界上下文核心聚合根數(shù)據(jù)存儲mes-order工單管理WorkOrderMySQLmes-execution生產(chǎn)執(zhí)行ProductionRecordMySQLmes-quality質量管理InspectionTaskMySQLmes-equipment設備管理Machine, MaintenanceMySQLmes-material物料管理MaterialLot, InventoryMySQLmes-schedule排程引擎SchedulePlanMySQLmes-collection數(shù)據(jù)采集DeviceDataPointInfluxDB/MySQLmes-report報表分析ReportTemplateMySQL 只讀副本mes-system系統(tǒng)管理User, Role, PermissionMySQLmes-gatewayAPI 網(wǎng)關——2.2 服務通信通信方式適用場景技術選型同步 REST查詢類、事務性操作Feign / OpenFeign異步消息事件通知、數(shù)據(jù)同步RocketMQ / RabbitMQgRPC高性能、流式調(diào)用Spring gRPC StarterWebSocket實時看板推送Spring WebSocket2.3 服務治理三、技術選型3.1 推薦技術棧主力方案Java層級技術版本選擇理由后端框架Spring Boot3.x生態(tài)完善、國內(nèi) MES 主流微服務治理Spring Cloud Alibaba2023.xNacos 注冊發(fā)現(xiàn) 配置、Sentinel 限流ORMMyBatis Plus3.5靈活 SQL、代碼生成消息隊列RocketMQ5.x延遲消息、事務消息、阿里系生態(tài)緩存Redis7.x高頻數(shù)據(jù)緩存、分布式鎖前端框架Vue 3 Element Plus3.4組件豐富、中文生態(tài)好關系數(shù)據(jù)庫MySQL / PostgreSQL8.0 / 15主數(shù)據(jù)存儲時序數(shù)據(jù)庫InfluxDB / TimescaleDB2.x / 2.x設備采集的時序數(shù)據(jù)對象存儲MinIO最新附件、eSOP 文件存儲容器化Docker K8s24 / 1.28編排、彈性伸縮CI/CDGitLab CI / Jenkins最新自動化構建部署監(jiān)控Prometheus Grafana最新指標采集與可視化日志ELK (Elasticsearch Logstash Kibana)8.x集中日志管理與檢索3.2 備選方案對比組件方案 A推薦方案 B適用場景后端語言Java Spring Boot.NET Core / Python.NET 適合 Windows 生態(tài)工廠Python 適合輕量項目消息隊列RocketMQRabbitMQ / KafkaRabbitMQ 適合中小規(guī)模Kafka 適合大數(shù)據(jù)量流處理前端Vue 3React Ant DesignReact 適合國際化團隊數(shù)據(jù)庫MySQLPostgreSQL需要 JSONB 高級特性選 PG服務治理Spring CloudIstio K8s多語言微服務網(wǎng)格3.3 Java vs .NET Core 對比維度Java / Spring Boot.NET Core微服務生態(tài)Spring Cloud 全家桶成熟Steeltoe OcelotOPC UA 庫Eclipse MiloOPC UA .NET Standard部署環(huán)境Linux 為主Windows 兼容性更好國內(nèi)招聘崗位多傳統(tǒng)制造業(yè) .NET 崗位多選型建議新項目首選與微軟生態(tài)緊耦合的工廠四、系統(tǒng)集成方案4.1 集成全景圖4.2 ERP 集成接口方向數(shù)據(jù)內(nèi)容頻率生產(chǎn)計劃同步ERP → MES計劃單號、產(chǎn)品、數(shù)量、交期日/即時報工回傳MES → ERP良品數(shù)、不良品數(shù)、工時實時物料消耗回傳MES → ERP原材料消耗數(shù)量、批次工單完工時入庫通知MES → ERP成品完工入庫信息實時基礎數(shù)據(jù)同步ERP → MES物料主數(shù)據(jù)、BOM、客戶信息日4.3 WMS 集成接口方向說明送料指令MES → WMS工單開工時生成送料單發(fā)料確認WMS → MESWMS 完成揀貨發(fā)料后通知 MES完工入庫MES → WMS成品完工請求入庫庫存查詢MES → WMS實時獲取物料可用量4.4 SCADA/PLC 集成協(xié)議適用場景MES 角色OPC UA主流設備、CNC 機床、PLC客戶端訂閱數(shù)據(jù) 調(diào)用方法Modbus TCP老舊設備、儀表客戶端讀保持寄存器MQTT邊緣傳感器、IoT 網(wǎng)關Broker接收數(shù)據(jù)MTConnectCNC 機床客戶端接收標準化數(shù)據(jù)五、接口設計5.1 RESTful API 規(guī)范URL 設計GET /api/v1/work-orders # 工單列表 GET /api/v1/work-orders/{id} # 工單詳情 POST /api/v1/work-orders # 創(chuàng)建工單 PUT /api/v1/work-orders/{id} # 更新工單 POST /api/v1/work-orders/{id}/start # 開工 POST /api/v1/work-orders/{id}/complete # 完工統(tǒng)一響應格式json{ code: 200, message: success, data: { orderId: WO-20260729-001, productName: 產(chǎn)品A, status: IN_PRODUCTION }, timestamp: 1753700000 }5.2 OPC UA 數(shù)據(jù)模型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說明QoSmes/{factory}/{line}/device/status設備狀態(tài)上報1mes/{factory}/{line}/device/data工藝參數(shù)上報1mes/{factory}/{line}/device/alarm設備報警2mes/{factory}/{line}/cmd/recipe配方下發(fā)指令2mes/{factory}/{line}/cmd/adjust參數(shù)調(diào)整指令2六、安全架構6.1 安全分層層面措施技術傳輸安全TLS 1.3 加密Nginx SSL 終結認證JWT OAuth 2.0Spring Security授權RBAC 角色權限 數(shù)據(jù)權限自研權限中間件審計操作日志全量記錄AOP ELK數(shù)據(jù)安全敏感字段加密存儲AES-256 / SM4API 安全請求簽名 防重放時間戳 Nonce6.2 權限模型用戶 (User) │ ├── 角色 (Role): 生產(chǎn)經(jīng)理 / 操作員 / 質檢員 / 設備工程師 │ │ │ └── 功能權限: 工單管理 / 質量檢驗 / 設備管理 ... │ └── 數(shù)據(jù)權限: 只能看到所屬產(chǎn)線 / 車間的數(shù)據(jù)七、高可用與災備設計能力方案應用高可用多副本 K8s 自動重啟 HPA 自動擴縮數(shù)據(jù)庫高可用MySQL 主從復制 讀寫分離消息隊列高可用RocketMQ Dledger 主備緩存高可用Redis 哨兵 / Cluster異地災備數(shù)據(jù)庫異地同步、每日備份灰度發(fā)布K8s Ingress 按權重引流