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