單士華 李展
(鄭州黃河科技學(xué)院,河南 鄭州4500063)
物聯(lián)網(wǎng)云服務(wù)的設(shè)計(jì)與實(shí)現(xiàn)
單士華 李展
(鄭州黃河科技學(xué)院,河南 鄭州4500063)
在當(dāng)前的數(shù)據(jù)信息時(shí)代,全球以電子方式存儲(chǔ)的數(shù)據(jù)總量正在飛速的增長(zhǎng),2011年全球數(shù)據(jù)量已經(jīng)超過(guò)1.8ZB。海量數(shù)據(jù)的存儲(chǔ)與快速分析也因此對(duì)傳統(tǒng)的計(jì)算機(jī)形成一個(gè)嚴(yán)峻的挑戰(zhàn)。云計(jì)算的快速、高效等特點(diǎn)成為它處理海量數(shù)據(jù)的優(yōu)勢(shì)。
物聯(lián)網(wǎng);云計(jì)算;大數(shù)據(jù)
采用云計(jì)算來(lái)分析處理物聯(lián)網(wǎng)數(shù)據(jù),把物體本身的信息通過(guò)傳感器、智能設(shè)備等采集后,收集至一個(gè)云計(jì)算平臺(tái)進(jìn)行存儲(chǔ)和分析,即是一種良好的解決方案,亦即物聯(lián)網(wǎng)云服務(wù)。
本文以氣象數(shù)據(jù)為例,實(shí)現(xiàn)一種物聯(lián)網(wǎng)云服務(wù)。該設(shè)計(jì)能夠應(yīng)對(duì)氣象數(shù)據(jù)的海量特點(diǎn),進(jìn)行高效存取,數(shù)據(jù)不易丟失,并且以云計(jì)算平臺(tái)為基礎(chǔ)對(duì)海量數(shù)據(jù)進(jìn)行快速的分析計(jì)算,處理成有意義的數(shù)據(jù)。同時(shí),該設(shè)計(jì)提供云服務(wù)接口,方便服務(wù)的消費(fèi)者進(jìn)行使用。
本系統(tǒng)主要包含兩大功能應(yīng)用:氣象數(shù)據(jù)檢索和氣象數(shù)據(jù)統(tǒng)計(jì)。在體系結(jié)構(gòu)上采用SOA架構(gòu)思想,基于SOA的體系架構(gòu)主要的優(yōu)勢(shì)是便于管理不斷增長(zhǎng)的大規(guī)模信息系統(tǒng),通過(guò)利用基于互聯(lián)網(wǎng)的服務(wù)降低企業(yè)間協(xié)作的成本[2]。本文將兩個(gè)服務(wù)劃分到不同的集群中去,在通過(guò)遠(yuǎn)程調(diào)用的方式去訪問(wèn)對(duì)應(yīng)的服務(wù)。服務(wù)劃分之后,對(duì)相應(yīng)的服務(wù)采用水平伸縮的方式進(jìn)行擴(kuò)展,以此來(lái)增強(qiáng)每個(gè)服務(wù)的處理性能,加快后臺(tái)計(jì)算到前臺(tái)交互的響應(yīng)速度。系統(tǒng)架構(gòu)如圖1。
圖1
由于氣象統(tǒng)計(jì)服務(wù)涉及的計(jì)算量較大,將巨量氣象數(shù)據(jù)調(diào)用云計(jì)算服務(wù)進(jìn)行處理;而氣象檢索服務(wù)只是單一的數(shù)據(jù)查詢,不涉及統(tǒng)計(jì)計(jì)算相關(guān)的需求,所以直接通過(guò)存儲(chǔ)層API進(jìn)行存取操作。
在氣象云服務(wù)平臺(tái)中,服務(wù)的訪問(wèn)主要是通過(guò)遠(yuǎn)程調(diào)用的方式來(lái)實(shí)現(xiàn)的。常用的技術(shù)手段包括RMI、WebService和OSGI的RemoteService等服務(wù)。
3.1 技術(shù)選型
3.1.1 RMI技術(shù)
RMI允許Java對(duì)象存在于多個(gè)不同的地址空間,分布在不同的Java虛擬機(jī)上。每一個(gè)地址空間可以在同一臺(tái)主機(jī)上或者網(wǎng)絡(luò)上不同的計(jì)算機(jī)上。使得Java對(duì)象能夠在不同的JVM之間傳遞。
3.1.2 WebService技術(shù)
WebService是一種跨語(yǔ)言平臺(tái)的系統(tǒng)間交互標(biāo)準(zhǔn)。在這個(gè)標(biāo)準(zhǔn)中,對(duì)外提供功能的一方以HTTP的方式提供服務(wù),該服務(wù)采用WSDL(WebServcieDescriptionLanguage)描述,在這個(gè)文件中描述服務(wù)所使用的協(xié)議,所期望的參數(shù),返回的參數(shù)格式等。
3.1.3 OSGIRemoteService
OSGI技術(shù)是面向Java的動(dòng)態(tài)模型系統(tǒng),其本質(zhì)是將Java面向?qū)ο蟮拈_發(fā)方法轉(zhuǎn)向面向組件和服務(wù)的開發(fā)上去,在服務(wù)的處理上使用了生產(chǎn)者消費(fèi)者模式,通過(guò)服務(wù)注冊(cè)表(Service Registry)來(lái)管理服務(wù)。其優(yōu)點(diǎn)在于實(shí)現(xiàn)類似于硬件的熱插拔功能,在無(wú)需重啟系統(tǒng)的情況下,來(lái)完成新功能的擴(kuò)展和已有功能的移除。
OSGIRemoteService體系結(jié)構(gòu)如圖2。
圖2
綜合比較三種實(shí)現(xiàn)方式,RMI和OSGI技術(shù)雖然只適用與Java領(lǐng)域,但是服務(wù)的響應(yīng)速度要高于WebService;而使用Web-Service的主要優(yōu)勢(shì)在于它的跨平臺(tái)處理能力。在評(píng)估系統(tǒng)應(yīng)用時(shí),本文同時(shí)還考慮了另外一種潛在需求:雖然目前系統(tǒng)的功能比較簡(jiǎn)單,然而隨著需求復(fù)雜度的增加,以后逐漸引入的功能會(huì)越來(lái)越豐富,需要各個(gè)模塊之間的解耦和度越來(lái)越高,否則在系統(tǒng)重構(gòu)方面會(huì)存在很多棘手的問(wèn)題。而這也是本文采用OSGI RemoteService的主要原因之一。
在對(duì)大量氣象數(shù)據(jù)統(tǒng)計(jì)服務(wù)的云計(jì)算處理上,主要使用Hadoop的MapReduce框架來(lái)實(shí)現(xiàn)。
4.1 MapReduce框架
MapReduce是最早由google提出的并行編程模型,通過(guò)采用并行計(jì)算的方式來(lái)處理海量數(shù)據(jù)。其核心的操作主要包含兩個(gè),Map(映射)和Reduce(化簡(jiǎn))。簡(jiǎn)單地說(shuō),MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。Map把任務(wù)分解成多個(gè)任務(wù),Reduce把分解后多任務(wù)處理的結(jié)果匯總起來(lái),得到最終結(jié)果。適合用MapReduce處理的任務(wù)有一個(gè)基本要求:待處理的數(shù)據(jù)集可以分解成許多小的數(shù)據(jù)集,而且每一個(gè)小數(shù)據(jù)集都可以完全并行地進(jìn)行處理[3]。圖3為MapReduce的運(yùn)行機(jī)制。
圖3
圖示說(shuō)明:
4.1.1 將數(shù)據(jù)源所存儲(chǔ)的數(shù)據(jù)記錄進(jìn)行切割,劃分成多個(gè)split,然后啟動(dòng)云端服務(wù);
4.1.2 MapReduce程序是基于master/slaves的方式來(lái)進(jìn)行部署的,在云端機(jī)器中會(huì)有一臺(tái)機(jī)器充當(dāng)master角色,它的職責(zé)包括:調(diào)度任務(wù)分配給slaves,監(jiān)聽每一個(gè)任務(wù)的執(zhí)行情況;
4.1.3 在圖形中,每一個(gè)slave體現(xiàn)為一個(gè)worker,當(dāng)worker接到Map任務(wù)時(shí),會(huì)去讀取氣象數(shù)據(jù)片段,從中解析出key/value鍵值對(duì),并作為參數(shù)傳遞到定義好的Map函數(shù)之中,Map函數(shù)同樣會(huì)輸出一些key/value鍵值對(duì),并將這些鍵值對(duì)緩存在內(nèi)存里;
4.1.4 緩存之后,程序定期將緩存數(shù)據(jù)寫入本地硬盤(圖中的localwrite操作),并把存儲(chǔ)地址傳回給master,以便master記錄他們的位置用以執(zhí)行Reduce操作;
4.1.5 當(dāng)worker被通知執(zhí)行Reduce操作時(shí),master會(huì)把相應(yīng)的Map輸出數(shù)據(jù)所存儲(chǔ)的地址也發(fā)送給該worker,以便其通過(guò)遠(yuǎn)程調(diào)用來(lái)獲取這些數(shù)據(jù)。得到這些數(shù)據(jù)之后,reduceworker會(huì)把具有相同key值的記錄組織到一起來(lái)達(dá)到排序的效果;
4.1.6 reduceworker會(huì)把排序后的數(shù)據(jù)作為參數(shù)傳遞到定義好的Reduce函數(shù)中,而函數(shù)的最終輸出結(jié)果會(huì)持久化存儲(chǔ)到outputfile中去;
4.1.7 當(dāng)所有的Map任務(wù)和Reduce任務(wù)結(jié)束之后,master重新喚醒用戶主程序,至此一次MapReduce操作調(diào)用完成。
4.2 MapReduce統(tǒng)計(jì)應(yīng)用
在本文的氣象數(shù)據(jù)統(tǒng)計(jì)處理中,主要通過(guò)MapReduce程序來(lái)統(tǒng)計(jì)以下數(shù)據(jù)信息:
第一,全國(guó)各省的歷史最高氣溫和最低氣溫;
第二,全國(guó)各省的歷史最高能見度和最低能見度;
第三,全國(guó)各省的歷史最高風(fēng)力和最低風(fēng)力。無(wú)論哪一種統(tǒng)計(jì)應(yīng)用,其計(jì)算流程大體上是一致的,如圖4:
圖4
4.2.1 首先執(zhí)行Map計(jì)算對(duì)氣象數(shù)據(jù)進(jìn)行逐年統(tǒng)計(jì),統(tǒng)計(jì)格式如下:
(1996,[10,25,-30,45,20….])
(1997,[17,-10,36,38,15….])
(1998,[23,-12,25,18,24….])……
4.2.2 之后執(zhí)行Reduce計(jì)算,從每一年的統(tǒng)計(jì)列表中選取最大和最小值。
(1996,-30)(1996,45)
(1997,-10)(1997,38)
(1998,-12)(1998,25)
4.3 海量數(shù)據(jù)存儲(chǔ)
由于物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)量較大,這里為了提高數(shù)據(jù)的檢索效率,采用BerkeleyDB進(jìn)行數(shù)據(jù)存儲(chǔ)。BerkeleyDB是一個(gè)高性能的,嵌入數(shù)據(jù)庫(kù)編程庫(kù),可以保存任意類型的鍵/值對(duì)信息,同時(shí)支持?jǐn)?shù)千級(jí)別的并發(fā)線程同時(shí)操作數(shù)據(jù)庫(kù),支持最大256TB的數(shù)據(jù)源,廣泛用于各種操作系統(tǒng),包括大多數(shù)Unix類操作系統(tǒng)和Windows操作系統(tǒng)以及實(shí)時(shí)操作系統(tǒng)。
隨著物聯(lián)網(wǎng)技術(shù)的廣泛普及,電子數(shù)據(jù)的增長(zhǎng)日趨龐大,傳統(tǒng)數(shù)據(jù)處理方式已經(jīng)沒有辦法去消費(fèi)這些數(shù)據(jù)。而隨著云時(shí)代的到來(lái),給人們以全新的思想去解決這些問(wèn)題,從而打破傳統(tǒng)意義上的硬件束縛。本文實(shí)現(xiàn)了一種物聯(lián)網(wǎng)云服務(wù),能對(duì)物聯(lián)網(wǎng)數(shù)據(jù)在云平臺(tái)上進(jìn)行高效處理(map/reduce)、存儲(chǔ)檢索。
[1]楊正洪,周發(fā)武編著.云計(jì)算和物聯(lián)網(wǎng)[M],清華大學(xué)出版社,2011.9:8.
[2].PapazoglouMP,vandenHeuvelW.ServiceOrientedarchitectures:approaches,technologisandresearchissues.The VLDBJournal,2007(16):389-415.
[3]劉鵬主編.云計(jì)算[M],電子工業(yè)出版社,2010.3:163.
[4]張?jiān)朴?,張智江,劉錦德,劉韻潔編著.中間件技術(shù)原理與應(yīng)用[M],清華大學(xué)出版社,2010.8.
TP393
A
1671-0037(2014)01-56-2
2013年12月26日。
單士華(1971-),女,學(xué)士,講師,研究方向:計(jì)算機(jī)應(yīng)用。李展(1983-),男,學(xué)士,講師,主要研究方向:軟件工程。