工业实时数据推送方案 - 杭州领祺科技
领祺科技工业实时数据推送方案采用”采集接入+数据缓冲+规则分发+推送服务+客户端订阅”五层架构,支持毫秒到秒级数据推送,满足组态大屏、移动端和第三方系统的实时订阅需求,适用于设备遥测、能源监控、告警事件等场景。
- 日期: 2026-05-28 | 来源: 原创
- 分类: 技术分享
一、建设目标与总体思路
工业现场设备数量多、点位频率高、数据类型复杂,实时数据推送不能简单依赖单线程轮询或接口频繁查询。推荐采用”采集接入层、数据缓冲层、规则分发层、推送服务层、客户端订阅层”的分层架构,将数据接入、数据处理和数据推送解耦,保证高并发、低延迟和可扩展。
系统核心目标是:设备数据进入平台后,能够在毫秒到秒级范围内推送到大屏、Web、移动端或第三方系统;同时在高并发连接、网络抖动、客户端离线、瞬时数据洪峰等情况下,保证服务稳定,不因单个客户端或单个通道异常影响整体业务。
二、总体架构设计
方案采用”消息队列削峰 + 连接会话管理 + 主题订阅分发 + 批量/合并推送”的模式。采集端只负责上报,推送端只负责下发,中间通过队列和内存缓存完成异步解耦。
| 层级 | 主要职责 | 推荐组件 | 设计要点 |
|---|---|---|---|
| 采集接入层 | 接收 MQTT、TCP、HTTP、网关上报数据 | MQTT Broker、Netty、HTTP 接口 | 只做协议接入和基础校验,避免复杂业务阻塞 |
| 缓冲解耦层 | 削峰填谷、异步处理、失败重试 | Kafka、RabbitMQ、Redis Stream | 按项目、网关、设备或数据类型分区,保证消费能力 |
| 实时计算层 | 解析、清洗、补充设备信息、判断变化 | Java Worker、线程池 | 只处理最新值、变化值、告警值,减少无效推送 |
| 推送服务层 | 维护连接、订阅关系、并发下发 | WebSocket、SSE、MQTT | 按主题分组推送,支持批量合并和限频 |
| 客户端层 | 大屏、后台页面、第三方系统接收数据 | Web、App、接口订阅方 | 断线重连、心跳保活、离线后重新拉取快照 |
三、推送模型与主题规划
实时推送不建议所有客户端接收全量数据,应按业务范围建立订阅主题:
- 项目级主题:适合驾驶舱、大屏首页,推送项目总功率、在线数量、告警数量、收益或能耗汇总等聚合数据。
- 设备级主题:适合设备详情页,推送某台 PCS、BMS、电表、传感器的实时点位。
- 告警事件主题:适合弹窗、消息中心、声光告警,优先级高于普通遥测数据。
- 控制结果主题:适合策略下发、远程控制、参数设置后的结果回执。
四、并发推送处理策略
1. 队列削峰,避免推送线程被采集流量打爆
设备上报数据先进入消息队列或内存缓冲区,推送服务异步消费。高峰期可以通过批量消费、分区消费和限速策略平滑流量。
2. 最新值覆盖,减少无意义重复推送
工业实时数据通常关注”当前状态”。对于功率、电压、电流、SOC、温度等高频数据,可在短时间窗口内只保留最新值,例如 500ms 或 1s 合并一次。
3. 主题分组,按订阅关系精准下发
服务端维护客户端与主题的关系,减少网络带宽、降低前端渲染压力,并满足不同用户的数据权限隔离。
4. 连接隔离,防止慢客户端拖垮系统
每个客户端连接维护独立发送队列,发送缓慢或长时间无响应的连接要主动降级或断开。
5. 告警优先,普通遥测可合并
告警、故障、控制回执属于高优先级消息,应立即推送;普通遥测数据可以合并、限频、丢弃过期值。
五、数据一致性与异常处理
- 客户端首次连接时先获取一次”当前快照”,再订阅实时增量,避免页面初始数据不完整。
- 断线重连后,先重新鉴权和订阅,再重新拉取快照,随后继续接收实时数据。
- 推送消息建议带上时间戳、设备标识、点位标识、质量码和数据版本,前端可根据时间戳丢弃过期消息。
- 服务端要记录连接数、推送速率、队列积压、失败次数、平均延迟等指标。
六、落地建议
Java 后台使用 Netty 或 Spring WebSocket 作为实时连接层,结合 Redis/Kafka/RabbitMQ 做异步解耦。单机部署时可先使用内存队列和 WebSocket 分组推送;当连接数、设备数或项目数增长后,再拆分为采集服务、消息服务、计算服务和推送服务。
对于能源、储能、工业物联网平台,推荐优先推送”变化数据、聚合数据、告警数据和控制结果”四类核心数据。现场网关推荐使用领祺PBox系列通信管理机,支持MQTT/IEC104/Modbus等多种协议接入。
如需了解更多工业实时数据推送方案详情,请联系杭州领祺科技:全国服务热线 400-001-8882,公司电话 0571-86778850。