物聯(lián)網(wǎng)項目,采集設(shè)備測點(diǎn)過多有什么架構(gòu)設(shè)計方案?
萬點(diǎn)以上物聯(lián)網(wǎng)采集架構(gòu)設(shè)計:從“能采”到“穩(wěn)采”的四個關(guān)鍵技術(shù)抉擇
上周和某水務(wù)集團(tuán)的技術(shù)負(fù)責(zé)人交流,他們一個30萬噸水廠改造項目,規(guī)劃測點(diǎn)從最初設(shè)計的3000點(diǎn)一路追加到近2萬點(diǎn)。原以為網(wǎng)關(guān)配置夠高就能搞定,結(jié)果POC測試時系統(tǒng)直接卡死——不是采不上來,而是采上來之后數(shù)據(jù)根本跑不動。

測點(diǎn)過萬在工業(yè)物聯(lián)網(wǎng)項目中已經(jīng)不是極端場景,而是新常態(tài)。慕尼黑機(jī)場的建筑自動化系統(tǒng)有28萬個數(shù)據(jù)點(diǎn)需要接入,某車企車聯(lián)網(wǎng)平臺要處理億級測點(diǎn)、千萬級每秒寫入。當(dāng)測點(diǎn)數(shù)量從“千”跨越到“萬”,架構(gòu)設(shè)計邏輯需要徹底重構(gòu)。以下是我跟蹤多個大型項目后梳理的四條核心設(shè)計原則。
一、邊緣層必須做“減法”:不要試圖采集所有原始數(shù)據(jù)
很多項目失敗的第一原因:把所有點(diǎn)位數(shù)據(jù)原封不動往平臺上送。一條產(chǎn)線振動傳感器1kHz采樣率,一天就是86GB數(shù)據(jù),云端再強(qiáng)大的時序數(shù)據(jù)庫也扛不住這種流量。
正確做法是在邊緣網(wǎng)關(guān)側(cè)做三道預(yù)處理:
第一,批量讀取替代單點(diǎn)輪詢。某工廠改造項目中,采用Modbus批量寄存器讀取,一個節(jié)點(diǎn)一次性讀取一整塊連續(xù)地址,在網(wǎng)關(guān)內(nèi)部做拆分映射,采集效率提升5倍以上。
第二,變化上報替代周期上報。溫度穩(wěn)定在25℃±0.1時,沒必要每秒上報。設(shè)置死區(qū)閾值,只有數(shù)值變化超過設(shè)定范圍才上傳。華為云一個2000臺設(shè)備的項目,通過這個策略讓整體流量降低60%。
第三,邊緣計算提取特征值。振動數(shù)據(jù)1kHz原始采樣在邊緣做FFT變換,只上傳頻譜特征值,數(shù)據(jù)量減少99%,而且更有分析價值。
二、協(xié)議層必須做“兼容”:Modbus采底層,MQTT傳上層
萬點(diǎn)采集必然面臨協(xié)議碎片化:智能電表用Modbus RTU,PLC用OPC UA,新型傳感器可能走M(jìn)QTT。讓平臺直接處理多協(xié)議接入是架構(gòu)災(zāi)難。
成熟的架構(gòu)是分層處理:邊緣層以Modbus為主,覆蓋現(xiàn)場95%以上的傳統(tǒng)工業(yè)設(shè)備,通過輪詢方式“拉取”數(shù)據(jù)。傳輸層以MQTT為主,邊緣節(jié)點(diǎn)將處理后的數(shù)據(jù)通過MQTT“推送”到中心平臺。
這種“Modbus采上來,MQTT傳出去”的組合,實(shí)現(xiàn)了從現(xiàn)場總線到物聯(lián)網(wǎng)協(xié)議的無縫轉(zhuǎn)換。美國某中游管道運(yùn)營商管理350個遠(yuǎn)程站點(diǎn)、50萬測點(diǎn),采用的就是這套模式:邊緣網(wǎng)關(guān)采集PLC數(shù)據(jù)(Modbus/DNP3),通過MQTT Sparkplug B協(xié)議發(fā)布到中心Broker,即使衛(wèi)星網(wǎng)絡(luò)中斷也能本地緩存續(xù)傳。
三、傳輸層必須做“分級”:不是所有數(shù)據(jù)都走同一條路
萬點(diǎn)采集的另一個坑:重要告警和例行數(shù)據(jù)搶帶寬,結(jié)果關(guān)鍵事件被堵在路上。
合理做法是建立分級傳輸機(jī)制:
??QoS 0級:周期性溫度、濕度、壓力數(shù)據(jù),丟了不可惜,走普通通道
??QoS 1級:設(shè)備狀態(tài)變更、告警事件,確保至少一次送達(dá)
??QoS 2級:遠(yuǎn)程控制指令、參數(shù)下發(fā),嚴(yán)格保證不重不漏
同時要在邊緣做本地緩存和斷網(wǎng)續(xù)傳。衛(wèi)星鏈路中斷是常態(tài),網(wǎng)關(guān)必須支持磁盤隊列緩存,網(wǎng)絡(luò)恢復(fù)后自動續(xù)傳。慕尼黑機(jī)場的28萬點(diǎn)采集項目,核心考量之一就是通信可靠性和低功耗。
四、存儲層必須做“壓縮”:時序數(shù)據(jù)庫是唯一選擇
萬點(diǎn)采集產(chǎn)生的時序數(shù)據(jù),用傳統(tǒng)關(guān)系型數(shù)據(jù)庫存儲是自殺行為。必須采用原生時序數(shù)據(jù)庫。
國產(chǎn)IoTDB在某鋼廠智能運(yùn)維平臺中,接入數(shù)百萬設(shè)備、千萬級時間序列,通過列式存儲和復(fù)合壓縮算法,數(shù)據(jù)壓縮比達(dá)到10倍以上。阿里L(fēng)indorm時序引擎采用LSM-Tree結(jié)構(gòu)和Zstandard壓縮,存儲空間壓縮至原始數(shù)據(jù)的1/5~1/10.
更關(guān)鍵的是冷熱數(shù)據(jù)分層:熱數(shù)據(jù)(最近7天)保留在高性能SSD,冷數(shù)據(jù)自動壓縮遷移到對象存儲,查詢性能不受影響,存儲成本降低30%~50%。
五、實(shí)戰(zhàn)配置建議
基于上述原則,給出不同規(guī)模項目的參考配置:
1-5萬點(diǎn)中型項目(如中型工廠、園區(qū)):
??邊緣層:4-8臺工業(yè)網(wǎng)關(guān)(如BL118級),每臺支持4路RS485+2路網(wǎng)口,掛載20-30臺設(shè)備
??傳輸層:本地MQTT Broker集群
??存儲層:單節(jié)點(diǎn)時序數(shù)據(jù)庫,SSD存儲熱數(shù)據(jù)
5-20萬點(diǎn)大型項目(如機(jī)場、鋼鐵廠):
??邊緣層:分布式邊緣節(jié)點(diǎn),按車間/區(qū)域部署
??傳輸層:分級Broker架構(gòu)(邊緣Broker+工廠Broker+云端Broker)
??存儲層:時序數(shù)據(jù)庫集群,支持分布式查詢和冷熱分層
20萬點(diǎn)以上超大規(guī)模(如車聯(lián)網(wǎng)、城市級物聯(lián)):
??參考慕尼黑機(jī)場28萬點(diǎn)方案:mioty LPWAN無線采集+自動化主數(shù)據(jù)遷移+智能數(shù)據(jù)庫自配置
??或參考某車企千萬級寫入架構(gòu):Kafka+Flink+時序數(shù)據(jù)庫實(shí)時處理鏈路
萬點(diǎn)采集的技術(shù)核心不是“采得上”,而是“采得穩(wěn)、傳得快、存得省”。如果您手頭有具體項目正在規(guī)劃,或現(xiàn)有系統(tǒng)遇到性能瓶頸,歡迎帶測點(diǎn)規(guī)模和數(shù)據(jù)頻率交流。