近日,百度云天工物聯(lián)網(wǎng)場景正式推出流式計算服務(wù),填補了規(guī)則引擎、函數(shù)計算等只能針對單個數(shù)據(jù)流、單個消息處理的局限性。流式計算服務(wù)的推出,意味著用戶在物聯(lián)網(wǎng)場景中可利用流式計算服務(wù)對單個數(shù)據(jù)流的前后多個消息,或者多個數(shù)據(jù)流之間進行聚合計算。
通過流式計算的聚合運算能力,比如求平均、和、最大值、最小值等,可以關(guān)聯(lián)分析多個流之間的聯(lián)系等。接下來,讓我們通過具體案例來了解下流式計算的作用。
以某煙草公司為例,其擁有1000多個烤煙房,每個烤煙房通過一個物解析網(wǎng)關(guān),每分鐘采集一次烤煙房的溫度、濕度等數(shù)據(jù),報送到云端,以實時監(jiān)控烤煙房內(nèi)部溫濕度是否正常。通過為每一個烤煙房建立一條告警,設(shè)定越限條件,當(dāng)該烤煙房的溫濕度越限,則觸發(fā)短信告警。
不過這種解決方案有個先決條件,即:網(wǎng)關(guān)總是能正常地上報數(shù)據(jù)。但是,導(dǎo)致網(wǎng)關(guān)無法上報數(shù)據(jù)的內(nèi)外在因素存在很多,比如供電故障、設(shè)備故障、網(wǎng)絡(luò)信號差、環(huán)境溫度過高等等,這些因素都有可能導(dǎo)致網(wǎng)關(guān)意外停止工作。
設(shè)計流式計算監(jiān)控。針對這種情況,流式計算就可以派上大用場,可以巧妙利用流式計算的窗口和時間概念,設(shè)計出流式監(jiān)控,可以實現(xiàn)一個任務(wù)就監(jiān)控上述1000多個設(shè)備,并且可以實時、準(zhǔn)確報告具體哪個網(wǎng)關(guān)在什么時候停止了數(shù)據(jù)的上報;而增加網(wǎng)關(guān)設(shè)備時,無需修改任務(wù)。
具體解決辦法。在物解析的輪詢請求設(shè)置中,設(shè)置網(wǎng)關(guān)對Modbus設(shè)備的采集周期為60秒,并且每個解析項目解析后的數(shù)據(jù)轉(zhuǎn)到統(tǒng)一的物接入主題:/modbus/parsed;隨后在流式計算中創(chuàng)建名為:device_offine_monitor_src的數(shù)據(jù)源,數(shù)據(jù)源的物接入主題即來自上面解析后的主題:/modbus/parsed;流式計算任務(wù)中使用的時間類型為PROCESSTIME,可以實現(xiàn)即便監(jiān)控一個設(shè)備,也照樣工作;當(dāng)流式計算任務(wù)中的會話窗口一直有數(shù)據(jù)流進來時,窗口始終不會關(guān)閉,不會觸發(fā)告警;而當(dāng)一旦某個設(shè)備在規(guī)定時間內(nèi)沒有數(shù)據(jù)流進來,則對應(yīng)的會話窗口就會關(guān)閉,并輸出一條信息,觸發(fā)告警。
比如,會話窗口選擇了65秒。理想情況下,只要60秒沒有收到消,即認(rèn)為網(wǎng)關(guān)故障,考慮到網(wǎng)絡(luò)傳輸可能導(dǎo)致的延遲,增加了5秒的等待時間,以免因細小的傳輸延遲導(dǎo)致誤報。
具體技術(shù)步驟:
1,在物解析的輪詢請求設(shè)置中,設(shè)置網(wǎng)關(guān)對Modbus設(shè)備的采集周期為60秒
2,每個解析項目解析后的數(shù)據(jù)轉(zhuǎn)到統(tǒng)一的物接入主題:/modbus/parsed
解析后的數(shù)據(jù)格式(關(guān)鍵部分)如下:
{
"gatewayid": "3faedb39-77ff-45b6-ac7e-c1739077e4d5"
}
因為只對網(wǎng)關(guān)id進行監(jiān)控,其他數(shù)據(jù)無關(guān),因此省略。
在流式計算中:
3,創(chuàng)建一個數(shù)據(jù)源,名為: device_offline_monitor_src;數(shù)據(jù)源的物接入主題來自上面解析后的主題:/modbus/parsed
4,創(chuàng)建MQTT數(shù)據(jù)目的地,名為: device_offline_notice_sink,以接收異常設(shè)備告警。物接入主題為:/modbus/device/offline_notice
5,創(chuàng)建流式計算任務(wù)
時間類型選:PROCESSTIME
SQL 語句為:
INSERT INTO device_offline_notice_sink
SELECT
Session_End(rowtime, INTERVAL '65' SECOND ) AS ts_end,
gatewayid
FROM device_offline_monitor_src
GROUP BY
Session(rowtime, INTERVAL '65' SECOND ),
gatewayid
當(dāng)異常發(fā)生時,從數(shù)據(jù)目的地主題/modbus/device/offline_notice能收到如下格式的消息:
{
"ts_end": 1526459666537,
}
其中:ts_end為設(shè)備停止上報數(shù)據(jù)的時間,單位為毫秒。即設(shè)備上一次上報的時間為ts_end – 65000。gatewayid為網(wǎng)關(guān)id。
說明:
1,這里演示的是輸出MQTT報警消息,事實上客戶通過規(guī)則引擎,將該MQTT消息轉(zhuǎn)化成短信告警。
2,流式計算任務(wù)里面使用的時間類型為PROCESSTIME,這樣即便監(jiān)控的是一個設(shè)備,也能照樣工作。
3,流式計算任務(wù)里面采用的會話窗口,當(dāng)一直有數(shù)據(jù)流進來,窗口始終不關(guān)閉,也就是始終沒有輸出。一旦某個設(shè)備規(guī)定時間沒有數(shù)據(jù)流進來,對應(yīng)的會話窗口就會關(guān)閉,就會輸出一條消息。以此觸發(fā)告警。
4,會話窗口選擇了65秒。理想情況下,只要60秒沒有收到消息,即認(rèn)為網(wǎng)關(guān)故障。但考慮到網(wǎng)絡(luò)傳輸上可能導(dǎo)致的延遲,因此,這里再增加了5秒等待,以免因細小的傳輸延遲導(dǎo)致誤報。
現(xiàn)在,是不是比較了解流式計算了呢?
可以說,流式計算在物聯(lián)網(wǎng)場景中有著廣泛的應(yīng)用場景,百度云天工的流式計算服務(wù)讓百度云天工解決方案更加完善,通過與規(guī)則引擎、函數(shù)計算的配合,讓用戶在物聯(lián)網(wǎng)場景中的對數(shù)據(jù)流的實時處理更加科學(xué)和準(zhǔn)確。
特別聲明:本文為網(wǎng)易自媒體平臺“網(wǎng)易號”作者上傳并發(fā)布,僅代表該作者觀點。網(wǎng)易僅提供信息發(fā)布平臺。
榜單收錄、高管收錄、融資收錄、活動收錄可發(fā)送郵件至news#citmt.cn(把#換成@)。
海報生成中...