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