在JavaOne大會上,Pivotal公司首席技術(shù)專家馬克·克勒解釋了物聯(lián)網(wǎng)(IOT)應(yīng)用在云計(jì)算中快速發(fā)展起來的一些最佳實(shí)踐。他的方法使它更容易地嘗試不同的用例,可一旦這些情況的商業(yè)價值已被證實(shí),就可以提煉并實(shí)踐。
作為一個例子,克勒解釋了如何建立一個可再生能源的監(jiān)測和控制應(yīng)用程序的基本框架。他在圣路易斯建造了這一原則,但同樣的原則可以采用多種多樣的物聯(lián)網(wǎng)應(yīng)用中,可以快速部署到云中。
關(guān)鍵是要創(chuàng)建一個軟件開發(fā)工具鏈,為物聯(lián)網(wǎng)設(shè)備和后端的云計(jì)算生成盡可能多的代碼。Spring的啟動使得它容易帶來各種各樣的服務(wù),用于通信,監(jiān)控,數(shù)據(jù)庫和應(yīng)用程序邏輯。這個起始模板可以傳遞到Cloud Foundry自動生成在云中運(yùn)行不同的服務(wù)器平臺的代碼。
保持簡單的物聯(lián)網(wǎng)物理側(cè)
物聯(lián)網(wǎng)的物理硬件方面是很重要的,雖然它只構(gòu)成創(chuàng)造物聯(lián)網(wǎng)應(yīng)用約20%的工作。工程師和建筑師需要密切關(guān)注物聯(lián)網(wǎng)的后臺軟件,克勒表示,物聯(lián)網(wǎng)是大部分的價值來自后臺軟件。
在物理方面,克勒建議物理基礎(chǔ)設(shè)施應(yīng)該是快速且易于配置。一個最小的物理和邏輯的足跡應(yīng)該支持可靠性,良好的溝通方案和標(biāo)準(zhǔn)。例如,克勒的能源監(jiān)控應(yīng)用程序的物理基礎(chǔ)設(shè)施使用了一個Arduino板,可以支持無線網(wǎng)絡(luò)連接和通信的Web Sockets協(xié)議的Raspberry Pi公司網(wǎng)關(guān)。
克勒表示考慮要使用設(shè)備充分的性能,而不是最佳的性能,因?yàn)槎它c(diǎn)需要更好的性能,而往往更多的處理能力和復(fù)雜性是很重要的。這一戰(zhàn)略意味著大部分繁重處理的需求都在云中實(shí)施。克勒說,Arduino平臺用于測試概念證明,這一個不錯的選擇,但它缺乏低成本的溝通能力。他建議采用Raspberry Pi為節(jié)點(diǎn)集中器,因?yàn)樗С諰inux和java,其通信選項(xiàng)具有較好的低成本。
專注于標(biāo)準(zhǔn)
克勒說,人們應(yīng)該采用盡可能地支持標(biāo)準(zhǔn)的、現(xiàn)有的基礎(chǔ)設(shè)施和工具建立云計(jì)算物聯(lián)網(wǎng)應(yīng)用。克勒展示了他是如何能夠快速使用Cloud Foundry云應(yīng)用程序環(huán)境建立發(fā)展基于云計(jì)算的能源監(jiān)控門戶網(wǎng)站的,節(jié)點(diǎn)集中器和獨(dú)立的物聯(lián)網(wǎng)設(shè)備之間的所有交互可通過REST和Web Sockets進(jìn)行溝通。
克勒用這種方法在短時間內(nèi)來開發(fā)他的可再生能源監(jiān)控系統(tǒng)。其應(yīng)用程序通過各種傳感器來監(jiān)測和控制冷卻、加熱和通風(fēng)孔等指標(biāo)。
盡可能地配置
克勒表示,通過一套豐富的軟件工具,所以用戶可以更容易使用不同的方法,找出最好的一個軟件工具開發(fā)和部署應(yīng)用程序架構(gòu)。他有針對性列舉了GlassFish,WebLogic和WildFly服務(wù)器與Cloud Foundry平臺。克勒說,這是一個更好的做法,針對利用現(xiàn)有的工具來手動自定義代碼編程,而不是針對這些服務(wù)器跨平臺移植現(xiàn)有生成代碼的應(yīng)用程序。
使用Cloud Foundry作為擴(kuò)展的后端,使它更容易使用相同的方法,在本地或云環(huán)境進(jìn)行局部處理和部署。這可以幫助減少開發(fā)概念驗(yàn)證的努力,然后遷移到最佳生產(chǎn)環(huán)境。
另一種很好的做法是使用SpringBoot,提供自動配置和外部的結(jié)合能力,使其更容易產(chǎn)生Cloud Foundry的起始代碼。這使得在應(yīng)用程序中更快更容易選擇組件,這可以被部署到不同的目標(biāo)環(huán)境中運(yùn)行。從本質(zhì)上說,Spring Boot可以很容易地設(shè)置傳遞到CloudFoundry,通過對云計(jì)算的核心框架的設(shè)置,從而產(chǎn)生Glass Fish,WebLogic服務(wù)器或Wildfly的代碼。這使得開發(fā)人員可以把重點(diǎn)放在調(diào)整具體的物聯(lián)網(wǎng)使用情況下的應(yīng)用程序背后的邏輯上。
選擇合適的組件
克勒還建議使用Spring Boot驅(qū)動器,它提供了監(jiān)控和管理能力,包括SpringBoot的配置過程中使用應(yīng)用程序的能力。這使得它很容易檢查環(huán)境和路徑,以及使用內(nèi)存,這在開發(fā)和測試過程中非常有用。
超文本應(yīng)用程序的語言,使它更容易探索和應(yīng)用程序相關(guān)的應(yīng)用程序。在網(wǎng)絡(luò)中斷的情況中,在應(yīng)用程序中包含一個數(shù)據(jù)庫或數(shù)據(jù)存儲區(qū)是很重要的。
一旦這些Spring Boot元件被選中,開發(fā)人員可以快速生成一個使用SpringBoot代碼生成工具的功能齊全的應(yīng)用程序。這可以快速導(dǎo)入到一個Java IDE進(jìn)行定制,對于給定的用例,其最終的結(jié)果是很容易通過生成工具生成一個Gradle或Maven項(xiàng)目。
使用REST和WebSockets應(yīng)用程序
REST和JSON是構(gòu)建Web應(yīng)用程序,但他們將在物聯(lián)網(wǎng)應(yīng)用中帶來相當(dāng)大的開銷。REST消息可以添加幾百字節(jié)的頭信息,而物聯(lián)網(wǎng)應(yīng)用程序通常只發(fā)送幾個相關(guān)的測量或控制消息。克勒推薦使用Web Sockets來代替。當(dāng)需要時,所需的開銷更小,其通信也可以是雙向的。
用戶仍然需要創(chuàng)建一個Web Socket的類來處理數(shù)據(jù),這些數(shù)據(jù)可以通過擴(kuò)展的Web Socket處理器來完成。克勒說,他仍然可以通過REST訪問云系統(tǒng)的一個參數(shù),但他說,“它是如此沉重,我不使用它。”
利用Spring Boot,Cloud Foundry和構(gòu)建工具這一基本框架,可以很容易地在短期內(nèi)開發(fā)物聯(lián)網(wǎng)設(shè)備的云應(yīng)用程序。克勒說,他已經(jīng)重新采用相同的框架開發(fā)各種企業(yè)相關(guān)應(yīng)用。
他建議企業(yè)專注于利用現(xiàn)有的工具來制定出物聯(lián)網(wǎng)應(yīng)用的基本邏輯。它可以是具有挑戰(zhàn)性的,以確定最終用途的情況下,推動物聯(lián)網(wǎng)應(yīng)用。從組件開始可以更容易確定業(yè)務(wù)的情況下,然后可以在適當(dāng)?shù)募軜?gòu)進(jìn)行了優(yōu)化。