如果你問物聯網是什么,那么不同的人會給你不同的答案。有人說它是一種全新的、革命性的技術,也有人說它只是我們這幾十年來努力成果的自然發展。實際上它處于這兩種答案之間。從很早之前,我們就已經擁有物聯網風格的設備了,但這些設備或者極為簡單,例如恒溫器;或者非常復雜,例如飛行器上的遙控自動駕駛裝置。不同的地方在于,我們不需要投入像航天學工程那么大的成本,就能夠交付復雜的設備了。
考慮到這一點,來自微軟的Kevin Miller為使用者啟動物聯網方案的開發提供了這些基本指導方針。
模式:大處著眼,小處著手
開發物聯網設備比起純軟件開發要困難得多。因此在開始一個新的項目時要緊記這個咒語,“大處著眼,小處著手”。原型的設計變得極為重要,因為你不能等到已經賣出了100萬臺設備之后再來決定如何發布固件更新。反之,如果你創建的架構只能夠支持100臺設備,那么當你準備開始配送之前必須將它完全重寫。因此雖然設備的功能要從小處著手,但必須保證它的可伸縮性。
對于不同的物聯網設備來說,保修期的變化非常之大。雖然多數面向消費者的硬件是設計為支持今后數年,乃至十年的期限,但它們很容易被替換。而一旦你開始考慮從物理上就構建到整個結構中的設備,那么保修期可能會延長到幾十年。
模式:遙感優先
要預先預測哪些數據有價值是一件非常困難的事,因此要首先處理這一點。盡可能獲取商業數據與診斷數據,并將它們保存在大容量的系統中。如果你使用Azure,那么就要使用到Event Hub,它能夠每秒鐘處理幾百萬條消息。
當你從遙感方面入手時,安全性方面的問題會相對容易處理。雖然你仍然要考慮違背隱私與安全條例方面的問題,但相比起你將命令與控制方面的特性暴露給使用者可能招致的損害,這種方式可能面臨的破壞性是非常有限的。舉例來說,一個制造業公司寧可讓它每小時能夠生產的配件數量泄露出去,也不愿意將生產線上的機器人的控制權交給他人。
當你的遙感與安全方案證實了其可行性之后,你就能夠滿懷信心地添加命令與控制方式的特性了。
產品專注:流分析
流分析(Stream Analytics)是微軟所推薦的一種工具,可用于大量基于消息的數據。它結合使用了JavaScript和一種類似于SQL的查詢語法來處理來自于Event Hub的數據。
流分析中的SQL功能提供了在一般的數據庫中不具備的功能,其中之一是能夠根據某個滑動窗口對數據進行分組。滑動窗口之間可以是非重疊的,這與你使用SQL Server所創建的功能非常類似。作為一種替代方案,你可以使用一個持續的滑動窗口。比方說,如果你有一個15秒的滑動窗口,那么你就可以看到任意15秒期間的內容,而不是只能看到第0、15、30和第45秒的數據。
流分析工具包含了一個REST風格的接口,允許你與任何應用或數據源進行整合。在這個示例中,他們演示了如何使用遙感數據與滑動窗口找到那些在15秒的窗口期間內出現多次故障的設備。如果對此進一步擴展的話,可以讓某種監控工具使用該REST端點定期地向流分析工具進行輪詢,以找到故障設備,并向相關人士發出警告。
模式:不要干擾快速通道
要千萬注意避免在高容量組件之間進行放入任何東西。舉例來說,不要嘗試改動Event Hub與Stream Insight之間的數據。如果需要對數據進行清理,就在它進入“粗管道”之間完成,或是在數據從另一端返回之后再進行。
模式:深度防御
安全是一種共同承擔的責任。系統中的每個部分,從設備到云端服務器都需要保證其安全性。實現這一點需要每一方的參與:你不可能像購買其它服務那樣購買安全性。如果無法做到涵蓋每一方面的安全性就會造成極大的麻煩,新聞中將出現被攻破的汽車與醫學設備的相關報道。
一種經常被忽略的場景是設備的回收。如果你的電話配備了某種智能無鑰匙啟動系統,然后你又賣掉了這個電話,那么它還能夠解開你家里或汽車的鎖嗎?也許這個電話甚至能夠解開你的銀行帳戶呢?
因此使用多個安全層是非常重要的。除了常見的實踐之外,你還要注意違反模式的地方,例如某個設備出現在錯誤的地方,或是發送的數據與平時的情況不一致。