传统 MES、甚至很多大型工厂的 MES,确实都不用 Redis 和消息队列

传统 MES、甚至很多大型工厂的 MES,确实都不用 Redis 和消息队列

这不是技术落后,而是工业软件的特点决定的。


一、为什么实际工厂的 MES 大多不用 Redis 和 MQ?

1. 传统 MES 的核心不是 "高并发采集",而是 "业务流程管理"

老牌 MES(西门子、SAP MES、罗克韦尔、国内的宝信、石化盈科等)的核心是:

  • 工单管理、工艺路线、物料追溯
  • 人工报工、质量检验、设备维保
  • 计划排产、人员管理

这些都是低频操作

  • 一个工单几小时甚至几天才创建一次
  • 报工是人工扫码,一分钟也就几十次
  • 查询也是人在查,每秒几次了不起

这种并发量,Oracle/SQL Server 直接扛,根本不需要 Redis 和 MQ。

2. 工业软件追求 "稳",不追新技术

工厂的逻辑:

  • 能用就行,别瞎折腾
  • 越简单越可靠,越复杂越容易出问题
  • 技术栈越老,坑越少,越多人会维护
  • 7×24 不能停,出一次事故损失几十万

所以你会看到:

  • 很多工厂还在用 Oracle 11g、SQL Server 2008
  • 很多 MES 还是 C/S 架构,Delphi/VB 写的
  • 不是没钱升级,是 "稳定压倒一切"

3. 设备采集不是传统 MES 的核心

传统 MES 里,设备数据采集是边缘功能:

  • 要么靠人工录入
  • 要么用 PLC 直接连,走 OPC/Modbus
  • 数据量不大,直接写数据库就行

真正海量设备采集,是最近几年 "工业互联网"、"智能制造" 火了之后才有的需求。


二、那什么时候 MES 才会用到 Redis 和 MQ?

1. 设备自动采集量特别大的时候

比如:

  • 几千上万台设备,秒级甚至毫秒级采集
  • 每秒几万条数据写入
  • 这时候数据库直接扛不住,需要 MQ 削峰

2. 系统特别复杂、模块特别多的时候

比如:

  • MES + WMS + ERP + APS + 质量系统 + 设备管理
  • 十几个系统之间要传数据
  • 这时候用 MQ 做解耦,比直接互相调用靠谱

3. 实时性要求特别高的时候

比如:

  • 实时看板,每秒刷新
  • 设备状态实时监控,毫秒级响应
  • 这时候用 Redis 做实时计算,比查数据库快

4. 互联网公司 / 云原生团队做的 MES

很多互联网公司跨界做工业,习惯了自己的技术栈:

  • 上来就是微服务、Redis、Kafka、Elasticsearch 全套
  • 不管需不需要,先把架构搞复杂再说
  • 好不好用不一定,但技术名词听起来高级

三、你的 MES 场景,到底用不用?

回到你的情况:

  • 4000 台设备 / 采集点
  • 做 MES + OEE + 追溯
  • 自己开发,团队不大
  • 运维能力一般

结论:完全可以不用 Redis 和 MQ,直接数据库干

理由:

  1. 4000 采集点,数据量真不大
    • 每秒几百条写入,OceanBase/TDengine 轻松扛
    • 比很多互联网系统并发低多了
  2. 工业系统,稳定优先
    • 少一个组件,少一个故障点
    • 出问题好排查,不用猜是 Redis 挂了还是 MQ 堵了
    • 运维简单,你自己就能搞定
  3. 传统 MES 都是这么做的
    • 西门子、SAP 的 MES 也没说必须用 Redis
    • 人家服务汽车、电子、半导体大厂,不比你规模小
    • 实践证明,这条路走得通
  4. 真不够了再加也来得及
    • 先跑起来,验证业务
    • 数据量上来了、性能不够了,再加 MQ、Redis
    • 架构演进,比一开始就搞复杂强

四、但有一个点要注意:数据采集的可靠性

不用 MQ 不代表不用考虑 "数据不丢" 的问题。

不用 MQ,怎么保证采集数据不丢?

应用层做兜底就行,不用上中间件:

  1. 本地文件缓存
    • 采集到的数据先写本地文件
    • 写数据库成功了再删
    • 程序崩了、数据库挂了,重启继续写
    • 简单可靠,比 MQ 好维护
  2. 批量写入 + 重试机制
    • 攒一批再写,性能好
    • 失败自动重试,重试多次还失败就存本地文件
    • 人工或定时任务补写
  3. 设备端缓存
    • 智能设备 / PLC 本身有缓存
    • 网络断了,设备自己存着,通了再补传
    • 很多工业设备自带这功能

五、一句话总结

你说得对,实际工厂的 MES 大多不用 Redis 和消息队列,传统架构跑了几十年了,稳得很。

你的规模,直接用 OceanBase + TDengine 干就行,不用纠结要不要加 Redis 和 MQ。

阅读剩余
THE END