從1999年Kevin Ashton第一次提出這個概念以來,物聯網已經經歷了迅速的轉變。隨著近年來連接到物聯網的設備在多樣性和數量方面出現指數式的增長,物聯網已經成為了一種主流技術,在推動現在社會的生活方式方面有著極大的潛力。
在物聯網的技術與工程上,硬件與軟件平臺之間目前仍有明確的界限,其中大多數供應商都將精力放在硬件方面。只有極少數供應商提供物聯網軟件服務:例如,Mattermark根據所獲總投資排名的前100名物聯網創業公司中,只有13家提供物聯網軟件服務。
本文針對現有物聯網軟件平臺,基于我們對IoT供應商進行的詳細分析做了一份綜合調查。而本文最后選擇的物聯網供應商,完全是基于這樣的標準:這些供應商是否提供軟件解決方案,來處理從物聯網設備/傳感器獲取的信息。注意:雖然我們希望盡可能全面,但本文中仍有可能漏掉了一些這些平臺的最新改進。
物聯網軟件平臺想要的重要功能基于最近的幾份調查,我們選出了物聯網軟件平臺最關鍵的功能:設備管理、集成、安全性、數據收集協議、分析類型以及支持可視化,以便對樣本功能進行比較。本文的后半段中會對這些特性進行簡單介紹。
設備管理與支持集成設備管理是物聯網軟件平臺所需的重要功能之一。物聯網平臺應當維護著一堆與之連接的設備,并跟蹤這些設備的運行狀態;還應當能夠處理配置、固件(或其他軟件)更新問題,并提供設備級的錯誤報告和處理方案。每天結束前,設備用戶應當能夠獲得個人設備級的統計。
支持集成是物聯網軟件平臺需要的另一個重要功能。需要從物聯網平臺上公布的重要操作和數據應當能通過API訪問,RESTAPI常用于這一目的。
信息安全運營物聯網軟件平臺所需的信息安全手段,比普通軟件應用和服務所需的要求更高。數百萬臺設備與物聯網平臺連接,代表著我們需要處理的漏洞也是相應比例的。一般來講,為了避免被竊聽,物聯網設備與物聯網軟件平臺之間的網絡連接需要通過強大的加密機制來保障。
然而,在現代的物聯網軟件平臺上,大多低成本、低功率的設備都無法支持這樣的高級訪問控制措施。因此,物聯網軟件平臺自身需要采取替代措施,以解決這類設備級的問題。例如:將物聯網流量劃分為專用網絡,依靠云應用級的強大安全性,要求定期更新密碼并支持驗證更新固件,還有簽名才能更新軟件等等,這些手段都能加強物聯網軟件平臺的安全級別。
數據收集協議需要注意的另一個重要方面,是物聯網軟件平臺的各個組件之間用于數據通信的協議類型。物聯網平臺可能需要擴展到數百萬甚至數十億設備(節點)上。應當使用輕量級通信協議,以實現低能耗以及低帶寬功能。
注意:雖然我們在本文中將協議作為概述性詞匯,不過用以收集數據的協議可分為下面幾類:比如應用、負載容器、信息傳遞和遺留協議。
數據分析從連接到物聯網平臺的傳感器中所收集的數據需要通過智能化手段進行分析,以獲得有意義的見解。
物聯網數據分析有四種主要類型:實時分析、批處理分析、預測分析與交互式分析。實時分析:對數據流執行在線(動態)分析。樣本操作包括基于窗口的集成、篩選、轉換等。
批處理分析:對積累的數據集進行操作。這樣,批處理操作會在預定時間段內運行,也許持續數小時或數日。預測分析:基于各類統計與機器學習技術,集中進行預測。交互式分析:對數據流和批數據執行多個探索性分析。最后一個就是實時分析,在任何軟件平臺都占據較重的份量。
當前的物聯網軟件平臺對當前的物聯網軟件平臺進行仔細調查后,我們發現上面提到的每個功能都已實現,只是程度不同而已。我們在下面列出了相關的平臺,并進行了功能總結對比:
表1 相關平臺功能總結對比(標著“未知”的欄目代表相關信息在可用文件中無法找到)
很明顯,上面列舉的物聯網初創公司,其中很多可能還不具備設備管理功能。在這方面,還需要物聯網軟件平臺供應商提供解決方案。
此外在分析生成的物聯網數據時,在計算及可視化方面提供的支持相對較少。它們大多支持實時分析——這是任何物聯網框架的必備功能。然而,只有極少數物聯網軟件平臺為其他3種分析類型提供支持。而可視化界面大多表現為門戶網站這樣的簡單模式,允許對物聯網生態環境進行管理,不過很少提供可視化的數據分析功能。
在不同的物聯網軟件平臺中,還有幾個常見功能,包括基于集成的REST API,支持用MQTT協議來收集數據,以及使用SSL進行鏈路加密。盡管在表一中沒有提到,不過單ParStream公司就能達到300萬到400萬行/秒的吞吐量。
這表明大多數物聯網軟件平臺設計時并未太多考慮物聯網部署的系統性能,而在真實情況下這是非常關鍵的。
需要改進的功能很明顯有若干地方需要改進。在本節中,我們首先提供了一張改進功能列表。在物聯網軟件平臺供應商的努力下,其中一些項目已經實現,還有一些性能等待實現。之后我們提供了一張列表,包括現在尚未實現的這些新功能。
現有功能數據分析現在物聯網軟件平臺大多支持實時分析,不過批處理分析和交互式數據分析也許同樣重要。
在這一點上,有人可能會爭辯:在其他知名的處理平臺中包括這類分析功能,想要配置用于分析場景的軟件系統也很簡單。不過,這談何容易。用于實時分析(Storm、Samza等)、用于批處理分析(Hadoop、Spark等)、用于預測分析(Spark MLLIB等)、用于交互式分析(Apache Drill等)的知名數據處理系統,并不能直接用在物聯網案例中。
基準物聯網軟件平臺需要有擴展性,還應包含描述和評估系統性能的設備。定義良好的性能指標需要:能夠塑造與測量物聯網系統的性能,并考慮到網絡特性、能耗特點、系統吞吐率、計算資源消耗以及其他運行特征。
邊緣分析需要采取措施以減少傳感器設備與物聯網服務器之間的大量網絡帶寬損耗。解決方案之一是使用輕量級的通訊協議。另一個辦法就是使用邊緣分析法,以減少傳輸到物聯網服務器上的原始數據總量。即便是在簡單的硬件嵌入系統中(如Arduino),也可以實現邊緣分析法。
其他問題應當注意:有多個與物聯網軟件平臺相關的其他問題,比如倫理、道德和法律問題,在本文中并未涉及。盡管這些問題也很重要,但在本文中不作討論。
需要添加的功能處理無序進程在任何物聯網應用中都有可能碰到無序事件,在傳感器所發出的事件流中,元組順序混亂可能是網絡延遲、時鐘偏移等原因所導致的。處理無序的物聯網事件可能會導致系統故障。處理無序事件時,需要在結果準確性與延遲之間做出權衡。
有四項主要的處理技術:基于緩存(Buffer-based)、基于標點(Punctuation-based)、基于推測(Speculation-based)以及基于近似(Approximation-based techniques)。在物聯網解決方案中,應當使用其中的一項或多項來解決無序事件的問題。
支持物聯網背景背景主要由個體、其偏好或過去的行為構成。例如:在移動電話案例中,由于現代移動電話中有很多不同類型的傳感器,因此我們能夠獲得豐富的背景信息。在物聯網分析中,這些背景數據應當被納入考慮。
結論物聯網模式的快速發展需要強大的物聯網軟件平臺,能通過物聯網用例滿足出現的需求。本文中,我們調查了現有最先進的物聯網軟件平臺的功能,調查集中在這些方面:設備管理、集成、安全性、數據收集協議、分析類型、可視化支持。從這項研究中,像設備管理、物聯網數據分析、物聯網軟件系統可擴展性以及性能這樣的領域明顯需要物聯網平臺社區投入特別的關注。