劉晨光,王新安,雍珊珊,徐伯星,張 丹,周康生
(1.北京大學(xué)深圳研究生院 集成微系統(tǒng)科學(xué)工程與應(yīng)用重點實驗室,廣東 深圳 518055;2.武漢大學(xué) 計算機學(xué)院,湖北 武漢 430072)
地震是一種會給人類社會造成巨大經(jīng)濟損失的自然災(zāi)害。僅因地震導(dǎo)致的人員死亡數(shù),就占全球各類自然災(zāi)害造成的死亡人數(shù)總數(shù)的54%[1],堪稱群災(zāi)之首。中國是世界上地震活動多發(fā)且受地震災(zāi)害最為嚴重的國家之一[2]。為解決地震監(jiān)測預(yù)測的難題,北京大學(xué)深圳研究生院集成微系統(tǒng)實驗室研制了AETA多分量地震監(jiān)測系統(tǒng),希望通過低成本、大區(qū)域、高密度的設(shè)備布設(shè),建立完善的監(jiān)測網(wǎng)絡(luò),捕捉比較一致的前兆異常信號,服務(wù)于地震預(yù)測。
AETA系統(tǒng)由地聲傳感探頭[3-4]、電磁傳感探頭、數(shù)據(jù)處理終端[5]以及云端的應(yīng)用服務(wù)器、數(shù)據(jù)存儲中心及數(shù)據(jù)分析系統(tǒng)組成。目前該系統(tǒng)已在國內(nèi)地震多發(fā)的川滇藏和京冀粵臺等地區(qū)建立監(jiān)測站點約200個 (見圖1黑點標記),云服務(wù)器將實時接收、處理海量監(jiān)測數(shù)據(jù)并將其存儲至數(shù)據(jù)庫。由此帶來的海量監(jiān)測數(shù)據(jù)傳輸、存儲和訪問問題,將會給后臺數(shù)據(jù)中心帶來巨大壓力。任何節(jié)點上的軟硬件異?;蛉藶槭д`,都可能導(dǎo)致實時數(shù)據(jù)入庫失敗或歷史數(shù)據(jù)丟失,給整個AETA監(jiān)測系統(tǒng)帶來巨大的數(shù)據(jù)損失;在保證數(shù)據(jù)安全性的同時,數(shù)據(jù)中心還需要提供方便高效的數(shù)據(jù)訪問接口,服務(wù)于后期的數(shù)據(jù)分析。因此,如何保證海量監(jiān)測數(shù)據(jù)的完整性和安全性,是AETA多分量地震監(jiān)測系統(tǒng)連續(xù)可靠運行的關(guān)鍵;一套高可用、高安全的監(jiān)測數(shù)據(jù)存儲方案,對AETA系統(tǒng)來說有著重大意義。
圖1 多分量地震監(jiān)測系統(tǒng)AETA站點分布
基于以上背景,文中介紹了當(dāng)前AETA系統(tǒng)數(shù)據(jù)安全存儲方案的設(shè)計和實現(xiàn)。該方案對系統(tǒng)中的原始數(shù)據(jù)和特征數(shù)據(jù)分別采用不同的存儲和備份方式,涉及本地RAID存儲、主從同步和分庫分表等技術(shù);同時數(shù)據(jù)訪問中間件提供了統(tǒng)一的數(shù)據(jù)接口,向用戶屏蔽了數(shù)據(jù)源內(nèi)部結(jié)構(gòu)和操作,提升了系統(tǒng)安全性。
在AETA多分量地震監(jiān)測系統(tǒng)中,監(jiān)測數(shù)據(jù)首先由傳感探頭采集,依次經(jīng)數(shù)據(jù)處理終端和應(yīng)用服務(wù)器處理,最終存入數(shù)據(jù)存儲層。其數(shù)據(jù)流圖如圖2所示。
傳感探頭利用內(nèi)部傳感器和放大調(diào)理電路獲取地震前兆信號,并通過TCP/IP協(xié)議將探頭原始數(shù)據(jù)發(fā)送至數(shù)據(jù)采集終端。
探頭原始數(shù)據(jù)在數(shù)據(jù)處理終端內(nèi)首先進行窗口取樣,每3 min數(shù)據(jù)取1 min數(shù)據(jù)存入Buffer;Buffer內(nèi)數(shù)據(jù)又分為兩路,一路經(jīng)軟件低通濾波后成為低頻原始數(shù)據(jù);另一路不進行濾波操作,直接成為全頻原始數(shù)據(jù)。低頻原始數(shù)據(jù)和全頻數(shù)據(jù)都將通過HTTP協(xié)議發(fā)送至云端應(yīng)用服務(wù)器。
圖2 多分量地震監(jiān)測系統(tǒng)AETA的數(shù)據(jù)流圖
低頻原始數(shù)據(jù)和全頻原始數(shù)據(jù),被應(yīng)用服務(wù)器端校驗接收后將再次分為兩路,一路直接作為原始數(shù)據(jù)存入數(shù)據(jù)存儲層,另一路經(jīng)特定算法處理,提取出均值、振鈴計數(shù)和峰值頻率等特征值,并作為特征數(shù)據(jù)存入數(shù)據(jù)存儲層。經(jīng)上述分層處理后,傳感器采集到的連續(xù)傳感信號,將最終被劃分為原始數(shù)據(jù)和特征數(shù)據(jù),并計劃存入數(shù)據(jù)存儲層。原始數(shù)據(jù)和特征數(shù)據(jù)相關(guān)屬性如表1所示。
特征數(shù)據(jù)均是經(jīng)處理的十進制數(shù)值型特征值,數(shù)據(jù)量較??;原始數(shù)據(jù)是未經(jīng)特征值提取處理的二進制采樣數(shù)據(jù),數(shù)據(jù)量較大,主要考慮原始數(shù)據(jù)的空間占用情況。原始數(shù)據(jù)單條記錄占用60 K字節(jié)(除全頻地聲原始數(shù)據(jù)單條數(shù)據(jù)占用300 K字節(jié))。所有信號分量均按照1條/3 min的頻率采集入庫。那么可以計算得到單臺終端一天的原始數(shù)據(jù)將占用約230兆字節(jié)的空間。若考慮整個AETA地震監(jiān)測網(wǎng)絡(luò),原始數(shù)據(jù)的空間占用將更加龐大。
表1 AETA系統(tǒng)中的信號類型
AETA系統(tǒng)的數(shù)據(jù)存儲層,承擔(dān)著數(shù)據(jù)存儲和安全訪問的作用,是整個AETA系統(tǒng)中最重要的基礎(chǔ)支撐。為保證該系統(tǒng)設(shè)計和實現(xiàn)的科學(xué)性和可靠性,需結(jié)合業(yè)務(wù)特點對數(shù)據(jù)存儲層進行全方面的需求分析。
AETA系統(tǒng)數(shù)據(jù)存儲與安全的需求點主要有:
(1)數(shù)據(jù)存儲的可用性:按滿足AETA系統(tǒng)中期1 000臺設(shè)備、長期10 000臺設(shè)備同時運行的目標,數(shù)據(jù)存儲層需支持每日約230 GB,全年約84 TB規(guī)模數(shù)據(jù)的可控入庫。所以數(shù)據(jù)存儲服務(wù)的可用性成為關(guān)鍵。應(yīng)首先保證服務(wù)高可用,不輕易宕機;其次大量終端的海量實時數(shù)據(jù)涌來時,數(shù)據(jù)存儲層需保證對這些數(shù)據(jù)的可靠接收。
(2)數(shù)據(jù)存儲的可靠性:數(shù)據(jù)存儲進該層后,應(yīng)保證存量數(shù)據(jù)可靠地保存在物理介質(zhì)中,不易因人為操作或外來災(zāi)害而丟失數(shù)據(jù)。即使發(fā)生數(shù)據(jù)損失,也可以從備份中迅速恢復(fù)數(shù)據(jù)。該需求其實對數(shù)據(jù)備份和恢復(fù)機制的完善性提出了較高要求。
(3)數(shù)據(jù)訪問的高效性:除了存數(shù)據(jù),數(shù)據(jù)存儲層的另一項重要職責(zé)是取數(shù)據(jù)。該層需保證向外取數(shù)據(jù)的接口便捷性和讀取高效性。
(4)數(shù)據(jù)訪問的安全性:向外提供數(shù)據(jù)訪問時,數(shù)據(jù)存儲層存在被不合法使用,造成數(shù)據(jù)泄露、更改或破壞的情況。目前對數(shù)據(jù)安全有較大威脅的攻擊手段主要有SQL注入[6]、比特幣勒索攻擊等。
數(shù)據(jù)存儲層設(shè)計時應(yīng)考慮這些因素,設(shè)計適當(dāng)機制以提升數(shù)據(jù)安全性。
設(shè)計的數(shù)據(jù)存儲方案如圖3所示。應(yīng)用服務(wù)器送來的特征數(shù)據(jù)和原始數(shù)據(jù),首先在該數(shù)據(jù)存儲層分開入庫保存,然后通過備份和同步等機制,最后經(jīng)數(shù)據(jù)接口向外提供數(shù)據(jù)訪問服務(wù)。
圖3 數(shù)據(jù)存儲層架構(gòu)
經(jīng)應(yīng)用服務(wù)器處理后的原始數(shù)據(jù)和特征數(shù)據(jù),因其數(shù)據(jù)特點和應(yīng)用場景不同,在數(shù)據(jù)存儲層中將被分別存儲到硬盤的文件系統(tǒng)和關(guān)系型數(shù)據(jù)庫MySQL。
原始數(shù)據(jù)是未經(jīng)特征值提取處理的二進制采樣數(shù)據(jù),單臺設(shè)備單天原始數(shù)據(jù)即達到230 M字節(jié),空間占用較大;此外原始數(shù)據(jù)一般適用于細粒度的信號時域和頻域分析,系統(tǒng)中使用頻率較低。因此原始數(shù)據(jù)并不適合存儲于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中,否則隨數(shù)據(jù)量增大數(shù)據(jù)庫將出現(xiàn)較大的讀寫瓶頸。
為解決海量原始數(shù)據(jù)的存儲問題,參考了國家地震臺網(wǎng)和美國地震學(xué)聯(lián)合研究協(xié)會IRIS的處理辦法[7],不采用數(shù)據(jù)庫,而采用了文件系統(tǒng)存儲原始數(shù)據(jù)的方法。本設(shè)計將原始數(shù)據(jù)存儲在Linux系統(tǒng)的文件系統(tǒng)(目錄樹)中,存儲路徑類似于/Date/StationID/DataChannel/TimeStamp.data,最底層DataChannel目錄下將存儲該終端某一分量一天內(nèi)的全部480條數(shù)據(jù)記錄(3分鐘一條記錄),每個文件的文件名含該記錄的準確時間戳。
特征數(shù)據(jù)是原始數(shù)據(jù)經(jīng)算法處理后得到的數(shù)值型數(shù)據(jù),分為均值、振鈴計數(shù)和峰值頻率等細分項目,可以有效體現(xiàn)前兆信號的時域或頻域特征。特征數(shù)據(jù)的數(shù)據(jù)量很小,頻繁用于波形繪制和數(shù)據(jù)分析,適合存儲在MySQL數(shù)據(jù)庫中。在MySQL建立四張?zhí)卣鲾?shù)據(jù)表,分別用來存儲低頻電磁、全頻電磁、低頻地聲、全頻地聲四大類特征數(shù)據(jù),每張?zhí)卣鲾?shù)據(jù)表中建立時間戳(Time)和站點號(StationID)的聯(lián)合主鍵。
這種分離存儲的好處是,既可以支撐特征數(shù)據(jù)的快速頻繁訪問,也可以保證原始數(shù)據(jù)的可控存取;同時也避免了大量原始數(shù)據(jù)存入數(shù)據(jù)庫,給MySQL帶來存儲和訪問上的隱患。
任何一種物理存儲介質(zhì)都無法保證數(shù)據(jù)的絕對可靠,現(xiàn)實生活中種種因素如自然災(zāi)害、系統(tǒng)異常、人工操作失誤或黑客入侵,都可能導(dǎo)致數(shù)據(jù)損失的發(fā)生。因此數(shù)據(jù)備份是保證數(shù)據(jù)可靠性的關(guān)鍵性機制。針對云端文件系統(tǒng)中存儲的原始數(shù)據(jù),設(shè)計了本地RAID配合熱備盤的數(shù)據(jù)備份方案。
RAID的全稱是redundant arrays of inexpensive disks,即容錯廉價磁盤陣列,簡稱磁盤陣列,是由UCLA研究人員[8]于1988年提出的。其原理是將多塊獨立的物理硬盤通過陣列控制器,整合成虛擬的單臺大容量硬盤,以提高硬盤的傳輸速率和容錯能力。按照數(shù)據(jù)分布和冗余方式,可以將RAID大致劃分為RAID0、RAID1、RAID3、RAID5、RAID10等不同等級,不同等級的RAID存儲具有不同的存儲特性和應(yīng)用場景[9]。這里采用了兼具經(jīng)濟實用性和數(shù)據(jù)安全性的RAID5備份原始數(shù)據(jù)。
將N塊(N≥3)容量為X的磁盤放入磁盤陣列柜,即可組建總?cè)萘繛?N-1)*X的RAID5磁盤陣列;將磁盤陣列掛載至本地CentOS 6.5系統(tǒng)中,即可在操作系統(tǒng)中訪問該RAID文件系統(tǒng)。本地備份環(huán)境搭建完成,如何自動獲取云端原始數(shù)據(jù)并備份至磁盤陣列,是一個亟待解決的問題。設(shè)計了一套基于HTTP協(xié)議的C/S架構(gòu)的原始數(shù)據(jù)備份工具。
原始數(shù)據(jù)備份工具是使用Java語言在MyEclipse平臺開發(fā)的,由Server端和Client端組成。Client端在Linux系統(tǒng)中每日定時啟動,通過HTTP協(xié)議向Server端發(fā)送近期原始數(shù)據(jù)的備份請求,Server端監(jiān)聽到備份請求后,將相應(yīng)的數(shù)據(jù)通過HTTP協(xié)議返回Client端。Client端獲得返回數(shù)據(jù)后,將文件存儲至本地磁盤陣列,并將文件路徑存入本地數(shù)據(jù)庫作為文件索引。至此,該系統(tǒng)便完成了原始數(shù)據(jù)定期下載至RAID5的工作。
MySQL中存儲的特征數(shù)據(jù),是前兆信號分析中頻繁使用的數(shù)據(jù),需要對這一部分結(jié)構(gòu)化數(shù)據(jù)設(shè)計合理的備份方案。
首先MySQL中提供了內(nèi)建的復(fù)制機制,可以實現(xiàn)從數(shù)據(jù)庫Slave與主數(shù)據(jù)庫Master的近實時數(shù)據(jù)同步。MySQL復(fù)制的基本原理是:Master將數(shù)據(jù)更改記錄到二進制日志中,Slave不斷追蹤該二進制日志的DDL和DML事件,并將這些事件重做至Slave中,這樣就實現(xiàn)了主庫和從庫數(shù)據(jù)的持續(xù)同步[10]。
該系統(tǒng)采用了一主一備的拓撲結(jié)構(gòu)來實現(xiàn)MySQL復(fù)制,主庫僅提供地震數(shù)據(jù)的實時入庫功能,從庫通過同步機制獲取主庫數(shù)據(jù),并對外提供準實時的特征數(shù)據(jù)訪問服務(wù)。該設(shè)計的好處在于,主庫宕機后可快速切換至從庫恢復(fù)服務(wù),降低單點風(fēng)險;還可將讀操作全部指向從庫,主庫僅負責(zé)數(shù)據(jù)插入,即讀寫分離,可大大降低Master的訪問壓力;此外復(fù)制也可以作為一種數(shù)據(jù)庫備份方式,一定程度上提升數(shù)據(jù)安全性。但是MYSQL復(fù)制不能代替?zhèn)浞?,它對?shù)據(jù)庫誤操作也無能為力,誤操作也會同步至從庫無法挽回。所以額外的數(shù)據(jù)庫備份機制也是必需的。
MySQL數(shù)據(jù)庫備份,按備份原理可分為邏輯備份和物理備份;按照備份策略可以分為全量備份、差異備份和增量備份[11]。該系統(tǒng)采用了長周期全量備份與短周期增量備份結(jié)合的策略,基于開源備份工具Percona XtraBackup每周進行兩次全量的物理熱備,并使用二進制日志binlog功能來進行增量備份。這種策略既保證了數(shù)據(jù)的安全性和高可恢復(fù)性,也避免了海量數(shù)據(jù)的備份對數(shù)據(jù)層正常業(yè)務(wù)的影響。
除上述機制外,AETA地震監(jiān)測系統(tǒng)的以下設(shè)計也對數(shù)據(jù)安全有重要意義。
(1)數(shù)據(jù)存儲層的分區(qū)域水平分割:研究地震前兆信號時的一個重要因素是站點地理位置。按照地理位置的遠近,將系統(tǒng)內(nèi)臺站劃分成西南區(qū)域、華南區(qū)域或華北區(qū)域等不同片區(qū),同一片區(qū)的臺站數(shù)據(jù)統(tǒng)一存儲至同一數(shù)據(jù)服務(wù)器,即將數(shù)據(jù)存儲層分區(qū)域進行水平分割。這樣設(shè)計的好處是,采用了一種類似分布式的架構(gòu)存儲地震監(jiān)測數(shù)據(jù),避免了單臺數(shù)據(jù)庫主機的讀寫壓力,也提升了數(shù)據(jù)的災(zāi)備能力。
(2)應(yīng)用層主機與存儲層主機的分離:應(yīng)用層主機提供數(shù)據(jù)接收處理服務(wù),存儲層主機提供關(guān)系型數(shù)據(jù)庫等存儲服務(wù)。將兩層服務(wù)分別部署在不同主機上,保證了數(shù)據(jù)接收處理模塊和數(shù)據(jù)存儲模塊的解耦,提升了系統(tǒng)架構(gòu)的靈活性和安全性。
(3)基于云計算的基礎(chǔ)設(shè)施:AETA多分量地震監(jiān)測系統(tǒng)的線上服務(wù)均基于阿里云服務(wù)搭建,主要包括彈性計算服務(wù)ECS和關(guān)系型數(shù)據(jù)庫服務(wù)RDS,具備彈性,高可靠,高可用的特點。此外,阿里云服務(wù)在態(tài)勢感知、緊急預(yù)警、訪問控制、防DDos攻擊等安全運維領(lǐng)域有獨特優(yōu)勢,提升了系統(tǒng)的數(shù)據(jù)安全性。
AETA數(shù)據(jù)安全訪問中間件主要涉及3個模塊,數(shù)據(jù)訪問平臺、數(shù)據(jù)接口層和數(shù)據(jù)安全存儲層,如圖4所示。其中數(shù)據(jù)安全存儲層即上一節(jié)所述的數(shù)據(jù)安全存儲方案,所以這里將重點介紹數(shù)據(jù)訪問平臺和數(shù)據(jù)接口層。
數(shù)據(jù)訪問平臺是向用戶提供的地震數(shù)據(jù)查看工具,包括WEB端網(wǎng)頁和桌面客戶端軟件。WEB端網(wǎng)頁可向外提供簡單的特征和原始數(shù)據(jù)波形查看功能,也支持AETA系統(tǒng)的在線運維監(jiān)控和管理功能;桌面客戶端軟件可提供更豐富的數(shù)據(jù)訪問和展示功能,如數(shù)據(jù)波形查看、數(shù)據(jù)下載、異常標注、地震事件查看和地圖服務(wù)等。
無論是WEB平臺還是桌面客戶端,都可劃分為展示層和后臺服務(wù)層兩層。展示層向用戶提供最直觀的頁面顯示和操作界面,可按月周日等不同時間跨度繪制某一臺站的數(shù)據(jù)波形,滿足最基本的數(shù)據(jù)分析需求;后臺服務(wù)層是數(shù)據(jù)訪問平臺的后端服務(wù)模塊,負責(zé)從數(shù)據(jù)接口層獲取配置信息和地震數(shù)據(jù),并響應(yīng)展示層的數(shù)據(jù)請求。后臺服務(wù)層主要包括地址解析和配置信息緩存等模塊。
圖4 數(shù)據(jù)訪問中間件的邏輯框圖
數(shù)據(jù)接口層是數(shù)據(jù)訪問平臺和數(shù)據(jù)安全存儲層的中間代理,避免了客戶端與數(shù)據(jù)源的直接異地相連,向用戶屏蔽了數(shù)據(jù)源的結(jié)構(gòu)和操作。數(shù)據(jù)接口層由配置信息服務(wù)和地震數(shù)據(jù)服務(wù)兩部分組成。
配置信息服務(wù)提供用戶驗證、權(quán)限查詢和地震事件查詢等接口,保證了數(shù)據(jù)訪問平臺的基礎(chǔ)功能;更重要的是,配置信息服務(wù)還對外提供了地址解析接口,可以向數(shù)據(jù)訪問平臺提供待查詢站點的數(shù)據(jù)服務(wù)接口,數(shù)據(jù)訪問平臺再訪問該接口即可獲取指定臺站的地震數(shù)據(jù),完成波形繪制工作。配置信息服務(wù)的底層是數(shù)據(jù)安全存儲層的一系列配置表,主要存儲了用戶權(quán)限、地震事件、站點信息和站點對應(yīng)數(shù)據(jù)接口等信息。
地震監(jiān)測數(shù)據(jù)服務(wù)是數(shù)據(jù)安全存儲層的對外數(shù)據(jù)接口,向用戶提供統(tǒng)一的數(shù)據(jù)訪問接口。該服務(wù)負責(zé)響應(yīng)數(shù)據(jù)訪問平臺的數(shù)據(jù)請求,向后臺數(shù)據(jù)安全存儲層查取特征數(shù)據(jù)或原始數(shù)據(jù),并將其返回給接口調(diào)用者。按區(qū)域不同該服務(wù)劃分為不同接口,如華北數(shù)據(jù)接口、西南數(shù)據(jù)接口和華南數(shù)據(jù)接口等,分別對應(yīng)于后臺的數(shù)據(jù)安全存儲層的分區(qū)域存儲方案。
在上一節(jié)模塊設(shè)計的基礎(chǔ)上,本節(jié)將討論中間件處理數(shù)據(jù)查詢請求的詳細流程和原理。一個數(shù)據(jù)請求的全周期處理流程大致包括5個步驟,如圖4所示。
(0)用戶登錄:用戶使用本人賬號和密碼登錄系統(tǒng)。登錄認證通過后,數(shù)據(jù)訪問平臺將收到配置信息服務(wù)的地址解析信息,該信息將被緩存在用戶端應(yīng)用中(客戶端或WEB端應(yīng)用中)。
(1)本地地址解析:用戶選定某一臺站請求地震數(shù)據(jù),用戶端應(yīng)用將在緩存中檢索該臺站數(shù)據(jù)服務(wù)接口,若命中則直接跳至第4步進行數(shù)據(jù)請求。若未命中(如緩存過期,未與臺站數(shù)據(jù)進行及時同步),則跳至第2步。
(2)發(fā)送地址解析請求:緩存未命中時,數(shù)據(jù)訪問平臺將向配置信息服務(wù)的地址解析接口請求準確的數(shù)據(jù)服務(wù)接口信息。
(3)獲取數(shù)據(jù)接口信息:地址解析接口從數(shù)據(jù)安全存儲層拉取最新數(shù)據(jù),將數(shù)據(jù)服務(wù)接口信息在POST響應(yīng)中以HTTP的訪問URL字符串形式返回給用戶端應(yīng)用。
(4)發(fā)送地震數(shù)據(jù)查詢請求:數(shù)據(jù)訪問平臺已獲取到準確的數(shù)據(jù)接口信息,將向該接口發(fā)送POST請求查詢某一臺站某一時間范圍內(nèi)的地震數(shù)據(jù)。
(5)地震數(shù)據(jù)的返回和展示:地震數(shù)據(jù)接口從數(shù)據(jù)安全存儲層獲取指定數(shù)據(jù)后,向數(shù)據(jù)訪問平臺返回該數(shù)據(jù)。地震數(shù)據(jù)經(jīng)前端渲染繪制成波形圖,在用戶展示層向用戶顯示出來。
以上步驟中,數(shù)據(jù)訪問平臺與配置信息服務(wù)和地震信息服務(wù)之間的交互,均基于事先定義好的交互協(xié)議。該交互協(xié)議定義,數(shù)據(jù)接口層作為WEB服務(wù)器監(jiān)聽HTTP請求,而用戶端應(yīng)用以POST請求形式,攜帶特定字段對該WEB服務(wù)器進行訪問,以實現(xiàn)用戶登錄、地址解析或數(shù)據(jù)查詢等任務(wù)。數(shù)據(jù)接口層處理好用戶端請求后,也會以POST方式向用戶端返回響應(yīng)數(shù)據(jù)。
經(jīng)前述框架設(shè)計后,中間件可進入方案實現(xiàn)階段。這里將分數(shù)據(jù)展示端和服務(wù)端對其具體實現(xiàn)進行簡要介紹。
數(shù)據(jù)展示端分為WEB端網(wǎng)頁和桌面客戶端。其中WEB端網(wǎng)頁是基于B/S架構(gòu),使用Java語言在MyEclipse平臺開發(fā)完成的,應(yīng)用運行在Tomcat容器中,可對外提供簡單的數(shù)據(jù)波形查看功能。桌面客戶端軟件是基于C/S架構(gòu),使用C++語言在QT平臺開發(fā)完成的。該軟件基于QT的信號與槽機制[12]提供了直觀的桌面GUI,擁有更豐富的數(shù)據(jù)訪問和展示功能。
服務(wù)端產(chǎn)品包括配置信息服務(wù)aeta_middleware_AR和地震數(shù)據(jù)服務(wù)aeta_middleware_DS。這兩大服務(wù)均基于Spring框架的依賴注入機制,服務(wù)內(nèi)所有對象均以bean的形式自動掃描并裝配給相關(guān)應(yīng)用。無論是前端的HTTP請求對象還是后端的數(shù)據(jù)庫返回數(shù)據(jù),均在Spring容器的管理下有機協(xié)調(diào)和運行,各層對象的調(diào)用完全面向接口,這樣就實現(xiàn)了系統(tǒng)的松耦合和非侵入特性[13]。
客戶端和服務(wù)端應(yīng)用開發(fā)完成后,在AETA系統(tǒng)內(nèi)進行上線部署。服務(wù)端aeta_middleware_AR和WEB網(wǎng)頁可部署在同一Linux主機內(nèi),便于WEB應(yīng)用在同一主機內(nèi)獲取快速的配置信息服務(wù)響應(yīng)。用戶端在瀏覽器中驗證賬號密碼后,進入該應(yīng)用的波形展示頁面,在左側(cè)導(dǎo)航欄中點選臺站即可查看該臺站的各數(shù)據(jù)分量波形。
數(shù)據(jù)服務(wù)aeta_middleware_DS在每一個分區(qū)域數(shù)據(jù)服務(wù)器中均有部署,每個aeta_middleware_DS均服務(wù)于后臺某一分區(qū)域數(shù)據(jù)源,為該數(shù)據(jù)源提供統(tǒng)一的對外數(shù)據(jù)訪問接口。在本地Windows系統(tǒng)內(nèi)安裝客戶端,經(jīng)驗證通過用戶同樣可進入數(shù)據(jù)波形查看界面。用戶點選某一臺站時請求波形時,客戶端和WEB端均完全按照圖4流程,通過中間件獲取波形數(shù)據(jù)并在前臺展示。
文中設(shè)計并實現(xiàn)了一套應(yīng)用于AETA系統(tǒng)的數(shù)據(jù)存儲與安全訪問解決方案,已經(jīng)應(yīng)用于當(dāng)前AETA系統(tǒng)約200個站點,總計約5 TB規(guī)模數(shù)據(jù)量的業(yè)務(wù)系統(tǒng)內(nèi),穩(wěn)定運行6個月,數(shù)據(jù)備份有序進行,未出現(xiàn)數(shù)據(jù)存儲與安全事故。另外該系統(tǒng)在設(shè)計上考慮了更大規(guī)模數(shù)據(jù)量的情況,應(yīng)對日后系統(tǒng)規(guī)模擴大具備良好的擴展性。數(shù)據(jù)按區(qū)域分布存儲在不同數(shù)據(jù)服務(wù)器,完善的備份和恢復(fù)機制保證了數(shù)據(jù)安全性。同時中間件的存在,使得數(shù)據(jù)的分布式高效訪問成為可能,數(shù)據(jù)的訪問安全性也得到有效提升。