天天看點

如何為雲計算加快開發物聯網應用程式?

在javaone大會上,pivotal的首席技術專家mark heckler介紹了一些快速在雲計算中開發新的物聯網(iot)應用程式的最佳實踐。他的做法讓我們更容易地嘗試不同的用例,一旦其商業價值得到證明,我們就可以具體實施。

作為一個例子,heckler解釋了如何為一個可再生能源監控和控制應用開發基本架構。他為他位于聖路易斯的房子開發了一個基本架構,但是同樣的原理也可被應用于可在雲計算中快捷部署的多種物聯網應用中。

其關鍵在于建立一個軟體開發工具鍊,這個工具鍊可以盡可能地為物聯網設施和雲計算後端實作代碼生成自動化。spring boot 将有助于引入各種各樣的服務以供通信、監控、資料庫以及應用程式邏輯等應用使用。這個初始模闆可被傳輸至cloud foundry以便于為在雲計算運作的不同伺服器平台自動生成代碼。

確定物聯網實體端的簡單化

雖然物聯網的實體端在開發物聯網應用程式中隻占據了二成,但它卻是非常重要的。工程師和架構師需要密切關注後端物聯網軟體,heckler說。這恰恰正是其大部分價值的來源之處。

在實體端,heckler建議其實體基礎設施應當是易于快速配置的。一個最小的實體和邏輯元件都應支援良好的可靠性、溝通方案和标準。例如,heckler的能源監控應用使用了一個包括arduino闆、raspberry pi網關以及供通信使用的無線網絡連接配接和websockets協定在内的實體基礎設施。

heckler表示,為裝置思考如何提供足夠的性能而不是最佳的性能将是非常重要的,這是因為更高的性能表現往往需要更強的處理能力和提高端點的複雜性。這一政策意味着大部分的繁重處理任務都需要在雲計算中完成。heckler說,arduino平台是用于驗證概念設計的一個不錯選擇,但是它缺乏低成本的通信能力。他推薦使用raspberry pi作為節點,因為它支援linux和java,而且它還具有較好的低成本通信方案。

關注标準

heckler說,你應當盡可能地基于現有支援标準的基礎設施和工具來開發雲計算物聯網應用程式。heckler展示了他是如何能夠通過使用cloud foundry來快速地開發出一個雲計算應用程式環境,進而在基于雲計算的門戶網站、節點和獨立物聯網裝置之間確定互動通信都可通過rest和 websockets實作。

heckler使用這種方法在很短時間内就完成了他的可再生能源監控和控制系統的開發工作。這一應用的輸入包括多種不同的傳感器,而其控制輸出涉及冷卻、加熱和通風等。

盡可能多的配置

由使用一組強大的軟體工具入手,多嘗試一些不同的方法,将更易于開發和重新部署一個應用程式架構,這樣你就可以找出一個最佳方案,heckler說。他曾在cloud foundry平台上嘗試過glassfish、weblogic和wildfly 伺服器。heckler說,與手工自定義改寫代碼來實作現有應用程式的跨平台移植相比,以這些伺服器為目标使用現有工具來程式設計生成代碼是一個更好的方法。

将cloudfoundry作為後端将更易于使用相同的方法來實作在本地、内部部署或者雲計算環境中的處理和部署。這将有助于減少在開發概念設計驗證階段以及之後遷移至以生産為目的的最佳環境階段的工作量。

另一個很好的做法就是使用spring boot來提供自動配置和外部綁定功能,進而更易于生成cloud foundry初始代碼。這也更有助于選擇元件來快速內建應用程式,可部署應用程式以便于在不同目标環境中運作。從本質上來說,spring boot 可有助于設定被傳送至cloud foundry的核心架構,它可為glassfish、weblogic 或 wildfly伺服器生成代碼。這使得開發人員能夠把更多的時間和精力關注于針對物聯網用例應用程式背後的邏輯開發中。

選擇合适的元件

heckler還推薦使用spring boot actuator,它可在spring boot配置過程中從價格成本角度提供監控和管理應用程式的功能。這将有助于檢查環境、檢視類路徑和記憶體使用情況,這些功能在開發和測試階段都是非常有用的。

超文本應用程式語言可以幫助我們探索和解決與應用程式相關的api。同樣重要的是,囊括一個資料庫,或者将資料存儲在應用程式中,以便于在發生網絡中斷事件時應用程式仍能夠掌控資料。

一旦這些spring boot 單元被選中,那麼開發人員就能夠使用spring boot代碼生成工具快速地生成一個全功能(雖然可能用處也不大)的應用程式。這個應用程式可被快速導入一個java內建開發環境中,以便于進一步實作針對某一用例的定制化。那麼,最後的結果就可以很容易地推送至一個開放工具以生成一個gradle 或 maven 項目。

棄用rest,使用websockets

rest 和 json非常适用于開發網絡應用程式,但是它們為物聯網應用程式帶來了相當可觀的開銷。rest消息有時候會增加數百位元組的頭資訊,而物聯網應用程式本身通常隻會發送與測量或控制消息相關的幾個位元組的資訊。heckler 建議使用websockets來代替前者。其開銷要小得多,此外在必要時可實作雙工通信。

你還需要開發一個websocket類來處理資料,這些資料可以通過擴充websocket處理程式來完成。heckler說,他仍然有一個可通過rest來通路雲計算系統的參數,但是他說,“使用它的代價如此高昂,是以我不會使用它。”

基于spring boot的基本架構、cloud foundry和一個開發工具将有助于在較短時間内針對物聯網裝置完成一個雲計算應用程式的開發工作。heckler表示,他已經把同樣的一個架構重新用于各種與企業應用相關的應用中。他建議企業重點關注使用現有工具來為物聯網應用程式開發基本的邏輯功能。而最終識别出能夠推動物聯網應用發展的用例将是一項極具挑戰性的任務。從元件入手将更易于最初的業務識别,之後就可以使用合适的架構對其進行優化。

本文作者:滕曉龍

來源:51cto