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

圖2 Storm流式數據處理結構框圖
拓撲中包含的兩類節點分別是Spout和Bolt,Spout節點負責將數據流分割處理,最后以Tuple元組的形式發送給Bolt節點。Bolt節點負責處理數據流,然后將處理結果發送給其他Bolt節點。實時數據處理過程如圖3所示。

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

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

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

圖7 兩種方法的消耗時間對比
實驗得出:基于計算機網絡的監測方法消耗的時間是基于云監測平臺實時數據監測方法的兩倍多。故得出,基于云監測實時數據監測方法性能更優。
針對大數據下實時數據監測任務提出了基于云監測平臺的實時數據監測方法,該方法從多個方面對云監測活動中的各個層次進行分析論證,創新出一種適應大數據時代的監測方法。通過實驗與傳統計算機網絡監測方法進行對比,實驗結果表明,所提方法在數據傳輸時間上遠優于傳統監測方法,監測的實時性也得到很大提高。所提監測方法有著廣泛的應用前景,可為未來的發展提供理論支撐。
[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] 李玉琢.關于網絡實時通信在軍事上的應用研究[D].吉林:吉林大學,2008.
[3] 鐘志華.基于計算機技術的互聯網新型商業模式研究[J].無線互聯科技, 2012, (9):21.
[4] 連衛東.基于CAN總線的智能溫壓數據采集及實時監測系統設計[J].化工自動化及儀表,2012,39(1):68~70.
[5] 范明新.基于物聯網技術的旋轉設備狀態監測與預警系統[J].化工自動化及儀表,2013,40(6):746~748.
[6] 李華章,宿紅毅.發布/訂閱系統及其在分布虛擬環境中的應用[J].計算機仿真,2006,23(2):241~244.
[7] 李川,鄂海紅,宋美娜.基于Storm的實時計算框架的研究與應用[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] 曹芳芳.基于海量數據的實時查詢處理[D].武漢:武漢理工大學,2013.
[10] 王瑛.一種基于Redis的消息服務模塊的設計與實現[D].北京:北京大學,2013.
[11] 曾金燕.高性能Redis數據庫安全手冊[J].計算機與網絡, 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].信息與電腦(理論版),2014,(10):142.
[14] 趙東平,張德運,史宏鋒.基于緩存和實時壓縮的動態Web內容加速機制研究[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(修改稿)
昆明理工大學自然科學基金(人培基金:KKSY201403120)