传统 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。

上一篇 不用redis,消息队列,mes靠谱吗
下一篇 现在柔性生产,超级工厂的MES常规,常用的系统架构❤️
signoz和日志系统 elk的区别?

signoz和日志系统 elk的区别?

SigNoz vs ELK(Elastic Stack),结合你 C# 上位机 + PLC 采集 的场景 一句话概括: ELK:以日志全文检索为核心的日志栈(ES 倒排索引,擅长全文搜报错文本),指标、链路追踪是附加能力,多组件拼凑 SigNoz:OTel 原生一体化可观测平台,

2026-10-20
0 0 0
DateTime.UtcNow , DateTime.Now 有什么区别

DateTime.UtcNow , DateTime.Now 有什么区别

DateTime.UtcNow vs DateTime.Now(C#) 一句话总结 DateTime.UtcNow:获取世界协调时间(UTC,零时区),不受电脑系统时区影响。 DateTime.Now:获取本地时间 = UTC 时间 + 当前操作系统时区偏移。 详

2026-10-16
0 0 0
winform 开机启动

winform 开机启动

c# winform 写的采集程序。平时是登录 windows 桌面,手动点开运行 winform 程序。但是要改成开机启动,不要登录 windows 桌面也能执行 winform 程序。有没有什么办法?不要改造 winform 程序 先说核心结论 WinForm

2026-10-16
0 0 0
C# + Scriban:生成 HTML 报表,自动发邮件(MES / 生产报表场景)

C# + Scriban:生成 HTML 报表,自动发邮件(MES / 生产报表场景)

补充:这套方案在工厂圈子使用情况 MailKit 自动发邮件:大量 MES 在用 Playwright 自动截图 HTML 报表:不少工厂自动化报表在用,属于成熟方案,但不是每个项目都会上。很多项目嫌麻烦就直接 PDF 或者纯表格邮件。 Scriban + Playwright

2026-10-14
0 0 0
C# + Scriban 做静态站点生成

C# + Scriban 做静态站点生成

C# + Scriban 做静态站点生成(对标 baifenwei 的 generate_site.py) Scriban 是 .NET 生态下高性能模板引擎,语法类似 Liquid / Jinja2,刚好用来替代 Python Jinja2,写一个 C# 控制台程序(GenerateSite

2026-10-14
0 0 0
REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向

REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向

REA(rea.tools)“万物可逆向”:噱头很大,但不是真的什么都能逆向 全称 REA = Reverse Engineer Anything,“逆向一切” 只是项目口号,不是能力承诺。 https://rea.tools https://github.com/morluto

2026-10-14
0 0 0
采集上位机LOG文件,不停追加,文件大小50MB

采集上位机LOG文件,不停追加,文件大小50MB

txt 文件很大,40MB,50MB,txt 持续追加,这种场景。Logstash File Input、Flume Taildir、阿里云 Logtail、NewLifeX/X 日志查看工具 Klogg Log Parser Lizard https://githu

2026-10-10
0 0 0
AOI 图片上传 【分布式】方案

AOI 图片上传 【分布式】方案

车间 aoi 的相机图片上传,用飞牛 nas,群晖 nas,高并发,按 5TB / 天、60 天、500 台设备,能不能抗住?如果我在一台服务器放多个 ftp 服务,每条线一个 ftp 服务,端口 8001,第二条线 ftp 服务,端口 8002。ftp 靠谱还 nas 靠谱?稳定,生成环境

2026-10-09
0 0 0
MES 系统 的几种ID比较,雪花id,ULID,UUID

MES 系统 的几种ID比较,雪花id,ULID,UUID

实际场景:浏览器指纹和cookie的UUID 项目FingerprintJS visitorId bdc65ad12633d79792ceeca33a78e6c551.la 访客 ID 5a00c3da-ab80-513d-b7a7-894bcaaecf92来源读取浏览器硬件 / 软件特征,前

2026-10-09
0 0 0
ACCESS数据库访问报错

ACCESS数据库访问报错

AI最擅长找错,分析原因。 💥💥问题1:exclusively locked 因为ACCESS打开数据库后,表:TO_LOGGER_INFO ,当设计视图窗体时,另一个c#小程序去访问这个access数据库会报错: ERROR [HY000] [Microsoft][ODBC Mi

2026-09-29
0 0 0