工業(yè)實時數(shù)據(jù)推送方案 - 杭州領祺科技
領祺科技工業(yè)實時數(shù)據(jù)推送方案采用”采集接入+數(shù)據(jù)緩沖+規(guī)則分發(fā)+推送服務+客戶端訂閱”五層架構,支持毫秒到秒級數(shù)據(jù)推送,滿足組態(tài)大屏、移動端和第三方系統(tǒng)的實時訂閱需求,適用于設備遙測、能源監(jiān)控、告警事件等場景。
- 日期: 2026-05-28 | 來源: 原創(chuàng)
- 分類: 技術分享
一、建設目標與總體思路
工業(yè)現(xiàn)場設備數(shù)量多、點位頻率高、數(shù)據(jù)類型復雜,實時數(shù)據(jù)推送不能簡單依賴單線程輪詢或接口頻繁查詢。推薦采用”采集接入層、數(shù)據(jù)緩沖層、規(guī)則分發(fā)層、推送服務層、客戶端訂閱層”的分層架構,將數(shù)據(jù)接入、數(shù)據(jù)處理和數(shù)據(jù)推送解耦,保證高并發(fā)、低延遲和可擴展。
系統(tǒng)核心目標是:設備數(shù)據(jù)進入平臺后,能夠在毫秒到秒級范圍內(nèi)推送到大屏、Web、移動端或第三方系統(tǒng);同時在高并發(fā)連接、網(wǎng)絡抖動、客戶端離線、瞬時數(shù)據(jù)洪峰等情況下,保證服務穩(wěn)定,不因單個客戶端或單個通道異常影響整體業(yè)務。
二、總體架構設計
方案采用”消息隊列削峰 + 連接會話管理 + 主題訂閱分發(fā) + 批量/合并推送”的模式。采集端只負責上報,推送端只負責下發(fā),中間通過隊列和內(nèi)存緩存完成異步解耦。
| 層級 | 主要職責 | 推薦組件 | 設計要點 |
|---|---|---|---|
| 采集接入層 | 接收 MQTT、TCP、HTTP、網(wǎng)關上報數(shù)據(jù) | MQTT Broker、Netty、HTTP 接口 | 只做協(xié)議接入和基礎校驗,避免復雜業(yè)務阻塞 |
| 緩沖解耦層 | 削峰填谷、異步處理、失敗重試 | Kafka、RabbitMQ、Redis Stream | 按項目、網(wǎng)關、設備或數(shù)據(jù)類型分區(qū),保證消費能力 |
| 實時計算層 | 解析、清洗、補充設備信息、判斷變化 | Java Worker、線程池 | 只處理最新值、變化值、告警值,減少無效推送 |
| 推送服務層 | 維護連接、訂閱關系、并發(fā)下發(fā) | WebSocket、SSE、MQTT | 按主題分組推送,支持批量合并和限頻 |
| 客戶端層 | 大屏、后臺頁面、第三方系統(tǒng)接收數(shù)據(jù) | Web、App、接口訂閱方 | 斷線重連、心跳保活、離線后重新拉取快照 |
三、推送模型與主題規(guī)劃
實時推送不建議所有客戶端接收全量數(shù)據(jù),應按業(yè)務范圍建立訂閱主題:
- 項目級主題:適合駕駛艙、大屏首頁,推送項目總功率、在線數(shù)量、告警數(shù)量、收益或能耗匯總等聚合數(shù)據(jù)。
- 設備級主題:適合設備詳情頁,推送某臺 PCS、BMS、電表、傳感器的實時點位。
- 告警事件主題:適合彈窗、消息中心、聲光告警,優(yōu)先級高于普通遙測數(shù)據(jù)。
- 控制結果主題:適合策略下發(fā)、遠程控制、參數(shù)設置后的結果回執(zhí)。
四、并發(fā)推送處理策略
1. 隊列削峰,避免推送線程被采集流量打爆
設備上報數(shù)據(jù)先進入消息隊列或內(nèi)存緩沖區(qū),推送服務異步消費。高峰期可以通過批量消費、分區(qū)消費和限速策略平滑流量。
2. 最新值覆蓋,減少無意義重復推送
工業(yè)實時數(shù)據(jù)通常關注”當前狀態(tài)”。對于功率、電壓、電流、SOC、溫度等高頻數(shù)據(jù),可在短時間窗口內(nèi)只保留最新值,例如 500ms 或 1s 合并一次。
3. 主題分組,按訂閱關系精準下發(fā)
服務端維護客戶端與主題的關系,減少網(wǎng)絡帶寬、降低前端渲染壓力,并滿足不同用戶的數(shù)據(jù)權限隔離。
4. 連接隔離,防止慢客戶端拖垮系統(tǒng)
每個客戶端連接維護獨立發(fā)送隊列,發(fā)送緩慢或長時間無響應的連接要主動降級或斷開。
5. 告警優(yōu)先,普通遙測可合并
告警、故障、控制回執(zhí)屬于高優(yōu)先級消息,應立即推送;普通遙測數(shù)據(jù)可以合并、限頻、丟棄過期值。
五、數(shù)據(jù)一致性與異常處理
- 客戶端首次連接時先獲取一次”當前快照”,再訂閱實時增量,避免頁面初始數(shù)據(jù)不完整。
- 斷線重連后,先重新鑒權和訂閱,再重新拉取快照,隨后繼續(xù)接收實時數(shù)據(jù)。
- 推送消息建議帶上時間戳、設備標識、點位標識、質(zhì)量碼和數(shù)據(jù)版本,前端可根據(jù)時間戳丟棄過期消息。
- 服務端要記錄連接數(shù)、推送速率、隊列積壓、失敗次數(shù)、平均延遲等指標。
六、落地建議
Java 后臺使用 Netty 或 Spring WebSocket 作為實時連接層,結合 Redis/Kafka/RabbitMQ 做異步解耦。單機部署時可先使用內(nèi)存隊列和 WebSocket 分組推送;當連接數(shù)、設備數(shù)或項目數(shù)增長后,再拆分為采集服務、消息服務、計算服務和推送服務。
對于能源、儲能、工業(yè)物聯(lián)網(wǎng)平臺,推薦優(yōu)先推送”變化數(shù)據(jù)、聚合數(shù)據(jù)、告警數(shù)據(jù)和控制結果”四類核心數(shù)據(jù)?,F(xiàn)場網(wǎng)關推薦使用領祺PBox系列通信管理機,支持MQTT/IEC104/Modbus等多種協(xié)議接入。
如需了解更多工業(yè)實時數(shù)據(jù)推送方案詳情,請聯(lián)系杭州領祺科技:全國服務熱線 400-001-8882,公司電話 0571-86778850。