卞德志 吳 靜 黎敬濤
(昆明理工大學(xué) a.信息工程與自動(dòng)化學(xué)院;b.化學(xué)工程學(xué)院,昆明 650500)
基于云監(jiān)測平臺的實(shí)時(shí)數(shù)據(jù)監(jiān)測
卞德志a吳 靜b黎敬濤a
(昆明理工大學(xué) a.信息工程與自動(dòng)化學(xué)院;b.化學(xué)工程學(xué)院,昆明 650500)
針對傳統(tǒng)實(shí)時(shí)數(shù)據(jù)監(jiān)測方式的不足,提出一種基于云監(jiān)測平臺遠(yuǎn)程處理實(shí)時(shí)數(shù)據(jù)的新型監(jiān)測方法。將數(shù)據(jù)實(shí)時(shí)傳送至Storm數(shù)據(jù)處理平臺,采用實(shí)時(shí)數(shù)據(jù)跟蹤算法來確保數(shù)據(jù)的完整性。在數(shù)據(jù)庫中采用發(fā)布/訂閱的數(shù)據(jù)存儲方案,將MySQL和Redis數(shù)據(jù)庫相結(jié)合,實(shí)現(xiàn)了數(shù)據(jù)的快速存取。最后,依據(jù)客戶端的Highcharts圖形可視化技術(shù)讓用戶通過終端瀏覽器進(jìn)行實(shí)時(shí)監(jiān)測,獲取各種結(jié)果。實(shí)驗(yàn)表明:該方法比傳統(tǒng)監(jiān)測方法的時(shí)間消耗低,實(shí)時(shí)性明顯較強(qiáng)。
云監(jiān)測 Storm 跟蹤算法 Redis WebSocket Highcharts
近年來,信息技術(shù)不斷發(fā)展,已滲透到社會生活的各個(gè)領(lǐng)域,而隨著大數(shù)據(jù)處理、云計(jì)算的出現(xiàn),準(zhǔn)確對目標(biāo)數(shù)據(jù)信息進(jìn)行實(shí)時(shí)監(jiān)測和分析對經(jīng)濟(jì)、軍事及商業(yè)等領(lǐng)域都具有深遠(yuǎn)的影響[1~3],因此,提高遠(yuǎn)程實(shí)時(shí)數(shù)據(jù)監(jiān)測技術(shù)具有十分重要的意義。傳統(tǒng)的監(jiān)測方法經(jīng)歷了從集中式監(jiān)測到基于計(jì)算機(jī)網(wǎng)絡(luò)監(jiān)測的變化過程,其中技術(shù)最先進(jìn)的是基于計(jì)算機(jī)網(wǎng)絡(luò)的監(jiān)測方法。它實(shí)現(xiàn)了從C/S架構(gòu)向B/S架構(gòu)的轉(zhuǎn)變[4]。但基于這兩種構(gòu)架下的現(xiàn)有監(jiān)測模式仍無法滿足當(dāng)前大數(shù)據(jù)背景下對實(shí)時(shí)監(jiān)測的需求。由于數(shù)據(jù)量呈海量式的遞增且監(jiān)測區(qū)域不斷擴(kuò)大,加大了企業(yè)用戶和個(gè)人用戶實(shí)時(shí)監(jiān)測數(shù)據(jù)的難度,而且隨著智能終端多樣化的發(fā)展,傳統(tǒng)的監(jiān)測方法具有地域和時(shí)間的局限性難以滿足用戶的需求[5],因此不斷提高實(shí)時(shí)數(shù)據(jù)監(jiān)測技術(shù),改進(jìn)處理速度、處理方法顯得格外重要。
云監(jiān)測平臺結(jié)構(gòu)從下到上分為數(shù)據(jù)采集層、數(shù)據(jù)處理層、數(shù)據(jù)存儲層和用戶查詢層。數(shù)據(jù)采集層由各種采集器組成,將實(shí)時(shí)數(shù)據(jù)送至本地服務(wù)器,再由本地服務(wù)器通過網(wǎng)絡(luò)傳至數(shù)據(jù)處理層。數(shù)據(jù)處理層是基于Storm實(shí)時(shí)數(shù)據(jù)處理平臺搭建的,通過實(shí)時(shí)數(shù)據(jù)跟蹤算法來確保數(shù)據(jù)處理的可靠性。數(shù)據(jù)存儲層采用Redis數(shù)據(jù)庫和MySQL數(shù)據(jù)庫相結(jié)合的方式,根據(jù)發(fā)布/訂閱原理實(shí)現(xiàn)各數(shù)據(jù)庫的數(shù)據(jù)同步[6]。用戶查詢層由Web服務(wù)器和用戶端組成,Web服務(wù)器將實(shí)時(shí)數(shù)據(jù)根據(jù)WebSocket協(xié)議推送給HTML5搭建的網(wǎng)站平臺。用客戶端可通過瀏覽器訪問該平臺查看實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)。云監(jiān)測平臺結(jié)構(gòu)如圖1所示。
2.1Storm流式數(shù)據(jù)處理框架和過程
Storm的處理框架是由具有實(shí)時(shí)計(jì)算功能的網(wǎng)狀結(jié)構(gòu)組成的,這種結(jié)構(gòu)稱為拓?fù)?Topology)[7~9]。用于分配其他節(jié)點(diǎn)任務(wù)和監(jiān)測拓?fù)渲泄收系墓?jié)點(diǎn)叫Nimbus。Zookeeper集群負(fù)責(zé)發(fā)布代碼并給工作節(jié)點(diǎn)分配任務(wù)。Supervisor負(fù)責(zé)監(jiān)聽各節(jié)點(diǎn)的工作并給工作進(jìn)程發(fā)布命令。Storm流式數(shù)據(jù)處理結(jié)構(gòu)如圖2所示。

圖2 Storm流式數(shù)據(jù)處理結(jié)構(gòu)框圖
拓?fù)渲邪膬深惞?jié)點(diǎn)分別是Spout和Bolt,Spout節(jié)點(diǎn)負(fù)責(zé)將數(shù)據(jù)流分割處理,最后以Tuple元組的形式發(fā)送給Bolt節(jié)點(diǎn)。Bolt節(jié)點(diǎn)負(fù)責(zé)處理數(shù)據(jù)流,然后將處理結(jié)果發(fā)送給其他Bolt節(jié)點(diǎn)。實(shí)時(shí)數(shù)據(jù)處理過程如圖3所示。

圖3 實(shí)時(shí)數(shù)據(jù)處理過程
2.2基于Storm的實(shí)時(shí)數(shù)據(jù)跟蹤處理算法
傳統(tǒng)的監(jiān)測方案沒有真正做到數(shù)據(jù)的無損傳輸,而僅僅是將得到的監(jiān)測數(shù)據(jù)發(fā)送出去,至于能否到達(dá)數(shù)據(jù)處理端卻不能保證。Storm最大的特點(diǎn)是通過跟蹤實(shí)時(shí)數(shù)據(jù)的處理過程,從而確保數(shù)據(jù)能被可靠處理。實(shí)時(shí)數(shù)據(jù)流發(fā)送到Spout處理節(jié)點(diǎn),Spout將數(shù)據(jù)以Tuple元組的方式發(fā)送給Bolt,所有Tuple在流過Bolt時(shí)被監(jiān)視線程記錄,形成一棵Tuple樹。若該樹上所有的節(jié)點(diǎn)都被處理過,表明實(shí)時(shí)數(shù)據(jù)被完全處理,否則,說明在Tuple樹上仍有節(jié)點(diǎn)沒有被處理。
算法的具體步驟如下:
a. 針對一個(gè)數(shù)據(jù)分配一個(gè)唯一的標(biāo)識I,例如I=1010,并通知監(jiān)視線程和Topology中相關(guān)的Bolt進(jìn)行監(jiān)視和計(jì)算。若Spout發(fā)送兩個(gè)Tuple,分別記為Tuple1和Tuple2,同時(shí)分別被分配一個(gè)64位的數(shù)據(jù)標(biāo)識ITuple1=0110,ITuple2=1100。分配結(jié)束后,由監(jiān)視線程對ITuple1和ITuple2作異或運(yùn)算,即0110 xor 1100 =1010。
b. Spout將Tuple1(ITuple1= 0110)發(fā)送給Topology中的一個(gè)Bolt,標(biāo)記此Bolt為Bolt1,Bolt1收到Tuple1后進(jìn)行處理,并生成新的Tuple,記為Tuple3。Bolt1隨機(jī)分配一個(gè)新的標(biāo)識,記為ITuple3=1101,ITuple1=0110與ITuple3=1101異或運(yùn)算的結(jié)果為1011,最后監(jiān)視線程將步驟a的異或結(jié)果1010與1011進(jìn)行異或運(yùn)算,結(jié)果為0001。
c. 同樣的,Spout將Tuple2(ITuple2=1100)發(fā)送給Topology中的另一個(gè)Bolt,標(biāo)記此Bolt為Bolt2,Bolt2收到Tuple2后進(jìn)行處理,生成新的Tuple并隨機(jī)分配一個(gè)標(biāo)識,記為ITuple4= 0101,ITuple2=1100與ITuple4=0101異或運(yùn)算的結(jié)果為1001,監(jiān)視線程將此結(jié)果與步驟b得到的結(jié)果異或處理后得到的結(jié)果為1000。
d. 最終,Bolt1和Bolt2發(fā)送的Tuple元組流到同一個(gè)Bolt節(jié)點(diǎn),標(biāo)記此節(jié)點(diǎn)為Bolt3。此時(shí)Bolt3通知監(jiān)視線程已收到由上一級Bolt發(fā)出的所有Tuple元組,監(jiān)視線程對收到的Tuple3和Tuple4的標(biāo)識進(jìn)行異或運(yùn)算1101 xor 0101=1000。最后監(jiān)視線程將此結(jié)果與步驟c得到的結(jié)果進(jìn)行異或運(yùn)算1000 xor 1000=0000。結(jié)果表明Tuple樹中的每一個(gè)Tuple元組都已成功被處理,也就是說發(fā)送到Storm中的實(shí)時(shí)數(shù)據(jù)都能被完全處理,不會發(fā)生丟包處理。
綜上所述,實(shí)時(shí)數(shù)據(jù)跟蹤處理算法不僅能有效增強(qiáng)Storm實(shí)時(shí)數(shù)據(jù)平臺的可靠性,而且也能進(jìn)一步解決數(shù)據(jù)在傳輸過程中的丟失問題,使得監(jiān)測結(jié)果更加準(zhǔn)確。
發(fā)布/訂閱是一種多對多的消息發(fā)送和接收方式,消息的發(fā)送方負(fù)責(zé)向多位消息接收方發(fā)送消息,而無需了解接收方的情況。接收消息的一方根據(jù)自己的需要收到相應(yīng)的消息,而無需了解發(fā)送方的情況。實(shí)時(shí)數(shù)據(jù)經(jīng)過Storm實(shí)時(shí)數(shù)據(jù)處理平臺處理結(jié)束后,發(fā)送(發(fā)布)給實(shí)時(shí)數(shù)據(jù)庫Redis[10,11],同時(shí)對MySQL數(shù)據(jù)庫和備份數(shù)據(jù)庫進(jìn)行同步寫入操作。在Web服務(wù)器的查詢端進(jìn)行分層查詢,當(dāng)用戶查看歷史數(shù)據(jù)時(shí),調(diào)用程序?qū)B1進(jìn)行查詢。當(dāng)用戶查看實(shí)時(shí)數(shù)據(jù)時(shí),由實(shí)時(shí)數(shù)據(jù)庫DB2直接推送(訂閱)給Web服務(wù)器端,從而節(jié)省了Web服務(wù)器請求響應(yīng)的時(shí)間。備份數(shù)據(jù)庫的應(yīng)用進(jìn)一步提高了系統(tǒng)整體的可靠性,使得緊急情況下系統(tǒng)仍然可正常運(yùn)行。根據(jù)發(fā)布/訂閱原理所設(shè)計(jì)的數(shù)據(jù)庫方案如圖4所示。

圖4 根據(jù)發(fā)布/訂閱原理設(shè)計(jì)的數(shù)據(jù)庫方案
實(shí)時(shí)數(shù)據(jù)通過基于WebSocket全雙工通信協(xié)議的數(shù)據(jù)通道不斷地流向客戶端,當(dāng)新數(shù)據(jù)到達(dá)客戶端時(shí),觸發(fā)Highcharts中的load事件完成對實(shí)時(shí)數(shù)據(jù)的可視化更新[12~14]。以下模擬某車間操作平臺的實(shí)時(shí)溫度,及時(shí)反映車間操作平臺的運(yùn)行狀態(tài),為平臺的安全運(yùn)行提供保障。
4.1實(shí)時(shí)云監(jiān)測數(shù)據(jù)的呈現(xiàn)原理
客戶端頁面通過定時(shí)器定時(shí)調(diào)用JQuery發(fā)送Ajax請求給數(shù)據(jù)獲取端getDatas.php,在getDatas.php中取得數(shù)據(jù),然后由Json返回實(shí)時(shí)獲取的數(shù)據(jù),并將數(shù)據(jù)發(fā)送至客戶端數(shù)據(jù)呈現(xiàn)界面,進(jìn)行解析并繪制圖表。
設(shè)置定時(shí)器定時(shí)從數(shù)據(jù)庫中取數(shù)據(jù)(算法1)的代碼如下:
$result1 = mysql_fetch_row(mysql_query("select count(*) from Temperature"));
$pages = ((int)$result1[0])/1;
$(function () {……
queryData(i);},1000);//此處的1000是刷新頻率 );
Ajax獲取數(shù)據(jù)并解析繪制Highcharts圖表(算法2)的代碼如下:
function queryData(index) {
$.ajax({……});
options.xAxis.categories = categories;
options.series[0].data = datas;
chart = new Highcharts.Chart(options);}});}
算法1、2分別為數(shù)據(jù)提取和繪制圖形的主要算法,其原理如圖5所示。

圖5 查詢請求與響應(yīng)關(guān)系
4.2實(shí)時(shí)云監(jiān)測曲線圖的實(shí)現(xiàn)
通過接收實(shí)時(shí)溫度數(shù)據(jù)并采用Highcharts高效繪圖組件實(shí)現(xiàn)數(shù)據(jù)的可視化,每個(gè)點(diǎn)上的溫度數(shù)據(jù)都顯示在點(diǎn)的上面,方便用戶觀察,如圖6所示。
為進(jìn)一步驗(yàn)證云監(jiān)測平臺的高實(shí)時(shí)性,在實(shí)驗(yàn)室局域網(wǎng)內(nèi)進(jìn)行模擬實(shí)驗(yàn)測試。測試對象為基于計(jì)算機(jī)網(wǎng)絡(luò)的監(jiān)測方法和基于云監(jiān)測平臺實(shí)時(shí)數(shù)據(jù)監(jiān)測方法。測試分為15組,每組200個(gè)數(shù)據(jù),分別測試兩種監(jiān)測方法下的時(shí)間消耗。消耗時(shí)間對照如圖7所示。

圖7 兩種方法的消耗時(shí)間對比
實(shí)驗(yàn)得出:基于計(jì)算機(jī)網(wǎng)絡(luò)的監(jiān)測方法消耗的時(shí)間是基于云監(jiān)測平臺實(shí)時(shí)數(shù)據(jù)監(jiān)測方法的兩倍多。故得出,基于云監(jiān)測實(shí)時(shí)數(shù)據(jù)監(jiān)測方法性能更優(yōu)。
針對大數(shù)據(jù)下實(shí)時(shí)數(shù)據(jù)監(jiān)測任務(wù)提出了基于云監(jiān)測平臺的實(shí)時(shí)數(shù)據(jù)監(jiān)測方法,該方法從多個(gè)方面對云監(jiān)測活動(dòng)中的各個(gè)層次進(jìn)行分析論證,創(chuàng)新出一種適應(yīng)大數(shù)據(jù)時(shí)代的監(jiān)測方法。通過實(shí)驗(yàn)與傳統(tǒng)計(jì)算機(jī)網(wǎng)絡(luò)監(jiān)測方法進(jìn)行對比,實(shí)驗(yàn)結(jié)果表明,所提方法在數(shù)據(jù)傳輸時(shí)間上遠(yuǎn)優(yōu)于傳統(tǒng)監(jiān)測方法,監(jiān)測的實(shí)時(shí)性也得到很大提高。所提監(jiān)測方法有著廣泛的應(yīng)用前景,可為未來的發(fā)展提供理論支撐。
[1] Liao C, Zhu T, Huang Z. Development Trend of Agricultural Products Deep Processing Technologies and Counterneasures in the 21st Century[J].Transactions of the Chinese Society of Agricultural Engineering,2004,20(2):288~291.
[2] 李玉琢.關(guān)于網(wǎng)絡(luò)實(shí)時(shí)通信在軍事上的應(yīng)用研究[D].吉林:吉林大學(xué),2008.
[3] 鐘志華.基于計(jì)算機(jī)技術(shù)的互聯(lián)網(wǎng)新型商業(yè)模式研究[J].無線互聯(lián)科技, 2012, (9):21.
[4] 連衛(wèi)東.基于CAN總線的智能溫壓數(shù)據(jù)采集及實(shí)時(shí)監(jiān)測系統(tǒng)設(shè)計(jì)[J].化工自動(dòng)化及儀表,2012,39(1):68~70.
[5] 范明新.基于物聯(lián)網(wǎng)技術(shù)的旋轉(zhuǎn)設(shè)備狀態(tài)監(jiān)測與預(yù)警系統(tǒng)[J].化工自動(dòng)化及儀表,2013,40(6):746~748.
[6] 李華章,宿紅毅.發(fā)布/訂閱系統(tǒng)及其在分布虛擬環(huán)境中的應(yīng)用[J].計(jì)算機(jī)仿真,2006,23(2):241~244.
[7] 李川,鄂海紅,宋美娜.基于Storm的實(shí)時(shí)計(jì)算框架的研究與應(yīng)用[J].軟件,2014,35(10):16~20.
[8] Memishi B, Montes J,Sánchez A, et al.GMonE: a Complete Approach to Cloud Monitoring[J].Future Generation Computer Systems,2013,29(8):2026~2040.
[9] 曹芳芳.基于海量數(shù)據(jù)的實(shí)時(shí)查詢處理[D].武漢:武漢理工大學(xué),2013.
[10] 王瑛.一種基于Redis的消息服務(wù)模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京大學(xué),2013.
[11] 曾金燕.高性能Redis數(shù)據(jù)庫安全手冊[J].計(jì)算機(jī)與網(wǎng)絡(luò), 2015,41(6):44~45.
[12] Pimentel V, Nickerson B G. Communicating and Displaying Real-Time Data with WebSocket[J]. IEEE Internet Computing, 2012, 16(4):45~53.
[13] 張華,王東輝,吳烜.流式計(jì)算的分布式框架的應(yīng)用[J].信息與電腦(理論版),2014,(10):142.
[14] 趙東平,張德運(yùn),史宏鋒.基于緩存和實(shí)時(shí)壓縮的動(dòng)態(tài)Web內(nèi)容加速機(jī)制研究[J].微電子學(xué)與計(jì)算機(jī),2004, 21(12):187~190.
Real-timeDataMonitoringBasedonCloudMonitoringPlatform
BIAN De-zhia, WU Jingb,LI Jing-taoa
( a.FacultyofInformationEngineeringandAutomation; b.FacultyofChemicalEngineering,KunmingUniversityofScienceandTechnology,Kunming650500,China)
Aiming at the shortage of the traditional real-time data monitoring method, a new monitoring method based on cloud monitoring platform was proposed. In which, having the data transmitted to the Storm data processing platform at real time and then having the real-time data tracking algorithm adopted to ensure data integrity; in the database, having publish/subscribe principle used and having MySQL combined with Redis database to achieve rapid access of the data; finally, having the Highcharts graphics visualization technology based to allow users monitoring real-time data through the terminal browser and to obtain a variety of results. Experimental results show that, as compared to the traditional method, the time consumption of this method is lower together with an improved instantaneity.
cloud monitoring, Storm, tracking algorithm, Redis, WebSocket, Highcharts
TH865
A
1000-3932(2016)09-0966-04
2016-07-25(修改稿)
昆明理工大學(xué)自然科學(xué)基金(人培基金:KKSY201403120)