任東冉, 張文亮, 楊盧陽, 王若楠, 衛(wèi)權(quán)崗
(1 鄭州大學(xué) 軟件與應(yīng)用科技學(xué)院, 鄭州 450002; 2 河南省氣象探測數(shù)據(jù)中心, 鄭州 450003)
隨著中國氣象系統(tǒng)的新型自動化氣象站的建成和使用,當前已經(jīng)逐步實現(xiàn)了地面氣象觀測數(shù)據(jù)處理的自動化。即氣象數(shù)據(jù)的聯(lián)網(wǎng)收集。地方地面氣象站氣象數(shù)據(jù)每日定時上傳,數(shù)據(jù)中心站自動匯總數(shù)據(jù)、監(jiān)控數(shù)據(jù)、分析數(shù)據(jù)。而地面氣象觀測儀器設(shè)備精密,極易受到外界及自身損耗的影響而出現(xiàn)運行故障,降低地面氣象觀測工作質(zhì)量與數(shù)據(jù)精度。因此地面氣象站需要依賴于信息傳輸間接反映設(shè)備運行狀態(tài)的方式和人員定期巡檢查驗地面氣象觀測設(shè)備運行狀態(tài)的方式來監(jiān)控氣象觀測設(shè)備的實效性和可用性。
目前在人員巡檢工作領(lǐng)域,缺乏系統(tǒng)規(guī)劃該方面業(yè)務(wù)機制的意識,再加上技術(shù)手段尚未成熟,存在著因巡檢周期長、地面觀測設(shè)備規(guī)格、種類繁多,檢測指標多樣造成的檢測拖延、漏檢、錯檢而延誤維修并導(dǎo)致上傳數(shù)據(jù)異常與數(shù)據(jù)缺失的情況。氣象觀測站亟需配備研發(fā)一個智能、高效的巡檢系統(tǒng)來處理這些問題。當前市面上有很多公司推出了巡檢設(shè)備信息的采集平臺,但這種平臺巡檢對象多為電氣工廠,石油天然氣等大型工廠設(shè)備,與本次研究指定的設(shè)備儀器不符,而且多采用硬件輔助設(shè)備巡檢,成本很高。針對上述狀況深入分析后,研究中利用信息網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫技術(shù)、移動通信技術(shù)、數(shù)據(jù)監(jiān)控分析技術(shù)和數(shù)據(jù)挖掘技術(shù),設(shè)計搭建了氣象巡檢數(shù)據(jù)智能采集管理平臺。
1.1.1 GPS智能識別與記憶
考慮到硬件設(shè)備的安裝位置是固定的,且有一些不可變更的信息,如硬件型號、硬件功率、硬件標號等指標,因此為了避免在每一次的巡檢中反復(fù)輸入類似信息,研究采用了GPS技術(shù)來自動識別巡檢儀器信息,但鑒于傳統(tǒng)的GPS單點定位誤差較大,只適合在大范圍內(nèi)獲得模糊位置信息。而精密單點定位則先利用全球若干IGS跟蹤站數(shù)據(jù)計算出精密衛(wèi)星軌道參數(shù)和衛(wèi)星鐘差,再利用求得的數(shù)值結(jié)果對單臺接收機采集的相位和偽距觀測值進行非差定位處理[1]。研究可得非差模糊度解算如圖1所示。
圖1 精密單點定位非差模糊度解算
Fig.1Precisionsingle-pointpositioningnon-differenceambiguitysolution
由此,就可利用高精度的精密單點GPS定位,在初次巡檢設(shè)備時記錄下該設(shè)備的定位信息,而且同時綁定式地儲存一些無法更改的設(shè)備屬性,并在數(shù)據(jù)上傳的過程中自動將其序列化(Serialization)實現(xiàn)持久化保存,這樣在每次巡檢時,采集儀器都會對經(jīng)緯度信息進行自動分析并且捕捉到該位置的相應(yīng)儀器,從而展開有關(guān)硬件信息的自動填充。
1.1.2 同步過程中的數(shù)據(jù)加密
在傳輸過程中如果將數(shù)據(jù)序列化為二進制流而不對其進行加密處理,將極易在外部截獲后被反序列化為原始數(shù)據(jù),因此通常都會在數(shù)據(jù)的傳輸端融入算法加密以保證數(shù)據(jù)的傳輸安全性[2],本系統(tǒng)使用流行通用的https ssl(Secure Sockets Layer,安全套接層)協(xié)議進行數(shù)據(jù)加密,加密的過程大致可解析為如下步驟:
(1)App客戶端發(fā)送請求后,數(shù)據(jù)庫服務(wù)器端使用加密算法以證書的形式返回身份信息。
(2)App客戶端獲取證書后,驗證證書合法性。
(3)App客戶端隨機產(chǎn)生一個密鑰,并以證書中的公鑰加密。
(4)將用公鑰加密后的密鑰傳送給數(shù)據(jù)庫服務(wù)器。
(5)數(shù)據(jù)庫服務(wù)器使用自己的密鑰解密,獲取隨機值。
(6)App客戶端使用密鑰加密所生成的Json字符串或請求,然后與數(shù)據(jù)庫服務(wù)器進行通信。
(7)數(shù)據(jù)庫服務(wù)器使用密匙解密后進行相應(yīng)處理。
研究過程中的數(shù)據(jù)加密流程則如圖2所示。
圖2 數(shù)據(jù)加密傳輸過程Fig. 2 Data encryption transmission process
由上文可知,客戶端系統(tǒng)主要是供工作人員在日常定期設(shè)備巡檢中用作設(shè)備信息的采集終端來定制設(shè)計,因此在模塊研發(fā)上有針對性地對各類儀器提供分模塊整合處理,將各儀器的常規(guī)指標設(shè)置為系統(tǒng)中的可選選項,當該指標屬性出現(xiàn)問題時僅需巡檢人員在判斷后應(yīng)對以可選擇性的填寫和補充。除了設(shè)備的損耗和狀態(tài)信息之外,系統(tǒng)會在上傳數(shù)據(jù)時根據(jù)當前登錄的用戶名自動獲取到用戶綁定的巡檢人員的信息一并上傳,這樣在巡檢出現(xiàn)問題時巡檢控制中心可以通過綁定的人員信息追查到操作者個人。而一旦在巡檢中出現(xiàn)了一些意外問題(如儀器信號不正常、波動過于頻繁等),工作人員則可以通過系統(tǒng)中的影像采集和儀器信息附加功能進行詳細的記錄。
當次巡檢結(jié)束時,工作人員需主動提交過程巡檢信息,此時移動端設(shè)備作為采集器終端向服務(wù)器發(fā)送傳輸信號,服務(wù)器檢測到傳輸信號后將會開啟信息接收,將該次巡檢的全部信息一并持久化保存至數(shù)據(jù)庫服務(wù)器中。
數(shù)據(jù)交互即數(shù)據(jù)同步,由于在巡檢過程中數(shù)據(jù)延遲上傳和獲取往往會給巡檢指揮工作帶來很大的問題,因此本系統(tǒng)需要高精度實現(xiàn)對巡檢數(shù)據(jù)的實時同步,使用系統(tǒng)算法生成的業(yè)務(wù)標號對數(shù)據(jù)進行唯一性標示,使服務(wù)器間的數(shù)據(jù)同步性能更趨優(yōu)良[3]。在巡檢工作中的數(shù)據(jù)交互主要體現(xiàn)在2個過程中,具體內(nèi)容如下。
1.3.1 App端數(shù)據(jù)封裝發(fā)送與請求
App端向應(yīng)用服務(wù)器發(fā)送認證請求,應(yīng)用服務(wù)器向數(shù)據(jù)庫服務(wù)器申請所接收到的App需要的Access,數(shù)據(jù)庫服務(wù)器返回給應(yīng)用服務(wù)器后,應(yīng)用服務(wù)器將對數(shù)據(jù)進一步包裝并發(fā)送給App應(yīng)用,App收到Access即獲得了數(shù)據(jù)庫服務(wù)器的訪問權(quán)限。其次,App客戶端對所請求或發(fā)送數(shù)據(jù)將同步配設(shè)封裝操作,數(shù)據(jù)封裝技術(shù)主要使用符合JSON規(guī)范的FastJson將原始數(shù)據(jù)序列化為Json字符串。Fastjson是一個Java語言編寫的JSON處理器,由阿里巴巴公司開發(fā)。JSON易于閱讀和編碼,且是JavaScript規(guī)范中的子集,能由支持JavaScript的瀏覽器所規(guī)范解析。相比XML,緩解了解析時帶來的性能和兼容性問題。這些特性就使JSON成為理想的數(shù)據(jù)交換語言[4]。
1.3.2 服務(wù)器端數(shù)據(jù)處理和數(shù)據(jù)封裝發(fā)送
服務(wù)器端需要對接收到的App客戶端Access進行檢驗,如果Access正確,發(fā)送證書,然后依次展開Https ssl規(guī)范操作,進行數(shù)據(jù)通信,使數(shù)據(jù)庫服務(wù)器端的數(shù)據(jù)封裝和App客戶端一致,同時保證SSL連接是安全的,以確認得到客戶機與服務(wù)器之間通信的真實性、機密性、完整性[5]。最后,使用相同的數(shù)據(jù)抽象結(jié)構(gòu)將Dao層返回的數(shù)據(jù)序列化為Json字符串,使用密匙加密后進行通信。數(shù)據(jù)在服務(wù)器端和移動端的交互過程如圖3所示。
圖3 App應(yīng)用與服務(wù)器之間的數(shù)據(jù)交互Fig. 3 App application and server data interaction
在功能研發(fā)中,該系統(tǒng)的服務(wù)器端著重于對接收到的前端數(shù)據(jù)進行適當?shù)奶幚斫y(tǒng)計、將數(shù)據(jù)持久化至遠端數(shù)據(jù)庫、并將所需反饋信息返回至移動端程序等主體功能,而又因為這些功能的實現(xiàn)相對來說邏輯較為單一,只需對不同數(shù)據(jù)進行相同的算法操作,而無需冗余代碼的設(shè)計支撐。況且,軟件功能又決定了在同一時間,不可能對服務(wù)器發(fā)送大量的請求導(dǎo)致服務(wù)器堵塞,因此程序的服務(wù)器所面臨的負載是很小的。分析至此,就僅需考慮將服務(wù)器更加輕量化、各個流程最優(yōu)化等等的研究問題[6]。
綜上可知,最終在服務(wù)器的基本配置上選擇了Linux(centOS)的操作系統(tǒng),對于項目的承載容器使用了Tomcat輕量級服務(wù)器(Apache軟件基金會的Jakarta 項目),并將版本制定在較為穩(wěn)定的7.0版本。該版本與之前的版本相比,增強了管理程序和服務(wù)器管理程序的安全性、提供一般CSRF保護、支持Web應(yīng)用中的外部內(nèi)容的直接引用、并對重構(gòu)及很多核心代碼做出了全面梳理,這些較為完善的功能足以支撐軟件的正常運行并生成一個良好的安全環(huán)境。
在數(shù)據(jù)庫服務(wù)器上,選擇使用了Mysql數(shù)據(jù)庫(一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前屬于Oracle旗下產(chǎn)品)。因其具有體積小、速度快、成本低,尤其是開放源碼這些特點,對于本系統(tǒng)來說是一個極為合適的選擇。MySQL默認配置了許多不同的存儲引擎可以預(yù)先設(shè)置或者在MySQL服務(wù)器中啟用。備選類型分別有: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB (BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE[7]。每一種類型均獨具優(yōu)勢,在不同的開發(fā)需求中設(shè)定不同的存儲引擎可以在很大程度上調(diào)整優(yōu)化服務(wù)器的存儲效能。系統(tǒng)的整體架構(gòu)如圖4所示。
圖4 系統(tǒng)架構(gòu)圖Fig. 4 System architecture
為了使客戶端軟件趨于更好的靈活性,可將系統(tǒng)搭建在Android平臺上供一切支持Android系統(tǒng)的移動設(shè)備使用。值得一提的是,Android是一個真正意義上的開放性移動設(shè)備綜合平臺,其中包括操作系統(tǒng)、用戶界面、中間件和應(yīng)用程序,并且具備移動電話工作所需的全部軟件,同時其開放性保證該平臺不存在任何掣肘移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙[8]?;贏ndroid版本使用率的調(diào)研結(jié)果,研究將開發(fā)的最低版本制定在已基本普及的4.0版本。
在頁面的編寫上采用了Android所推薦的XML(可擴展標記語言)技術(shù),如此即可使布局文件的解析更加準確、迅速,并且使各組件的操作更加高效[9]。系統(tǒng)將重點功能分別具體化為數(shù)個不同的模塊設(shè)計部署在主頁面中,再基于子功能拓展為子頁面中的模塊的原則而生成一系列的嵌套設(shè)計,便于在巡檢中的組合使用、以及最大限度地減少使用者的誤操作?;竟δ苣K頁面如圖5所示。
當工作人員進行設(shè)備損耗信息采集時,系統(tǒng)會自動啟用GPS精準定位分析,智能檢測出當前位置的已在服務(wù)器端記錄的儀器信息,實現(xiàn)儀器基本信息的自動填寫。而如果當前設(shè)備為初次巡檢,系統(tǒng)會自動記錄下當前設(shè)備的GPS定位信息,繼而在最終上傳巡檢信息時一并上傳至服務(wù)器并持久化儲存至服務(wù)器中。
在最終當次巡檢結(jié)束進行信息提交時,系統(tǒng)會根據(jù)系統(tǒng)中設(shè)置的對象結(jié)構(gòu)將此次的所有設(shè)備信息封裝成類對象,并通過Fastjson將對象序列化為二進制流的Json字符串,經(jīng)過協(xié)議加密后向服務(wù)器端發(fā)送請求并上傳數(shù)據(jù)。
圖5 移動設(shè)備數(shù)據(jù)收集系統(tǒng)Fig. 5 Mobile device data collection system
在服務(wù)器的運作方面,由相關(guān)的控制器負責(zé)實時檢測用戶提交的請求,當接收到移動端發(fā)送的請求后,將請求進行解析,提取出其中的請求體(requestBody)部分,而這部分正是前端通過封裝發(fā)送過來的JSON實體類所轉(zhuǎn)化的字符串,服務(wù)器的后續(xù)過程就是在控制器的函數(shù)中進行反解析,得到一個相關(guān)的實體(這里需要用到Google公司所提供的Gson工具),并對實體中的字段進行提取和持久化至數(shù)據(jù)庫服務(wù)器中[10]。當數(shù)據(jù)庫事務(wù)正常提交后,服務(wù)器還會追加一個對當次儲存數(shù)據(jù)的統(tǒng)計分析操作,并將最終的分析統(tǒng)計結(jié)果轉(zhuǎn)化成JSON流的形式,通過HTTP請求返回至移動端設(shè)備,作為當次巡檢的反饋信息。
本文根據(jù)氣象站對于日常儀器巡檢監(jiān)控任務(wù)分散、監(jiān)控軟件龐雜、故障處理低效等問題,深入分析
后研究利用信息網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫技術(shù)、移動通信技術(shù)、數(shù)據(jù)監(jiān)控分析技術(shù)和數(shù)據(jù)挖掘技術(shù),搭建巡檢數(shù)據(jù)智能采集管理系統(tǒng),通過系統(tǒng)的智能檢測和自動化分析處理,使日常巡檢中所產(chǎn)生的儀器設(shè)備信息記錄變更為電子化,基本解決了人工巡檢中監(jiān)控能力差、業(yè)務(wù)分散、保障效率低以及對故障分析不足等缺陷,是促進完善氣象巡檢智能化體系的有效工具。
[1] 劉經(jīng)南,葉世榕. GPS非差相位精密單點定位技術(shù)探討[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版), 2002,27(3):234-240.
[2] 劉宇平. 數(shù)據(jù)加密技術(shù)在計算機安全中的應(yīng)用分析[J]. 信息通信, 2012(2):160-161.
[3] 董立巖,毛銳,余宜誠,等. 基于分布式多服務(wù)系統(tǒng)的數(shù)據(jù)同步方法[J].吉林大學(xué)學(xué)報(理學(xué)版), 2011,49(4):745-749.
[4] 高靜,段會川. JSON數(shù)據(jù)傳輸效率研究[J]. 計算機工程與設(shè)計, 2011,32(7):2267-2270.
[5] 何旭,鮮乾坤,雷建平. 基于SSL證書認證中間件的安全性分析[J]. 四川理工學(xué)院學(xué)報(自然科學(xué)版). 2014,27(3):59-64.
[6] 李杰. 一種高性能服務(wù)器的設(shè)計與性能評估[J]. 軟件, 2014,35(12):88-93.
[7] 吳滄舟,蘭逸正,張輝. 基于MySQL數(shù)據(jù)庫的優(yōu)化[J]. 電子科技, 2013,26(9):182-184.
[8] 姚昱旻,劉衛(wèi)國. Android的架構(gòu)與應(yīng)用開發(fā)研究[J]. 計算機系統(tǒng)應(yīng)用,2008(11):110-112,24.
[9] 李瑞花. 基于Android的XML解析技術(shù)的分析[J]. 計算機時代, 2010(12):31-33.
[10]李張永, 陳和平, 顧進廣. 跨平臺移動Web開發(fā)框架與數(shù)據(jù)交互方法[J]. 計算機工程與設(shè)計, 2014,35(5):1827-1832.