近日,百度云天工物聯網場景正式推出流式計算服務,填補了規則引擎、函數計算等只能針對單個數據流、單個消息處理的局限性。流式計算服務的推出,意味著用戶在物聯網場景中可利用流式計算服務對單個數據流的前后多個消息,或者多個數據流之間進行聚合計算。
通過流式計算的聚合運算能力,比如求平均、和、最大值、最小值等,可以關聯分析多個流之間的聯系等。接下來,讓我們通過具體案例來了解下流式計算的作用。
以某煙草公司為例,其擁有1000多個烤煙房,每個烤煙房通過一個物解析網關,每分鐘采集一次烤煙房的溫度、濕度等數據,報送到云端,以實時監控烤煙房內部溫濕度是否正常。通過為每一個烤煙房建立一條告警,設定越限條件,當該烤煙房的溫濕度越限,則觸發短信告警。
不過這種解決方案有個先決條件,即:網關總是能正常地上報數據。但是,導致網關無法上報數據的內外在因素存在很多,比如供電故障、設備故障、網絡信號差、環境溫度過高等等,這些因素都有可能導致網關意外停止工作。
設計流式計算監控。針對這種情況,流式計算就可以派上大用場,可以巧妙利用流式計算的窗口和時間概念,設計出流式監控,可以實現一個任務就監控上述1000多個設備,并且可以實時、準確報告具體哪個網關在什么時候停止了數據的上報;而增加網關設備時,無需修改任務。
具體解決辦法。在物解析的輪詢請求設置中,設置網關對Modbus設備的采集周期為60秒,并且每個解析項目解析后的數據轉到統一的物接入主題:/modbus/parsed;隨后在流式計算中創建名為:device_offine_monitor_src的數據源,數據源的物接入主題即來自上面解析后的主題:/modbus/parsed;流式計算任務中使用的時間類型為PROCESSTIME,可以實現即便監控一個設備,也照樣工作;當流式計算任務中的會話窗口一直有數據流進來時,窗口始終不會關閉,不會觸發告警;而當一旦某個設備在規定時間內沒有數據流進來,則對應的會話窗口就會關閉,并輸出一條信息,觸發告警。
比如,會話窗口選擇了65秒。理想情況下,只要60秒沒有收到消,即認為網關故障,考慮到網絡傳輸可能導致的延遲,增加了5秒的等待時間,以免因細小的傳輸延遲導致誤報。