新疆維吾爾自治區(qū)防雷減災(zāi)中心 劉兆旭 鄭國宏 張永軍
風(fēng)監(jiān)測區(qū)間復(fù)示系統(tǒng)從數(shù)據(jù)分析的角度對系統(tǒng)進(jìn)行優(yōu)化,并基于大風(fēng)監(jiān)測數(shù)據(jù)進(jìn)行分析,實現(xiàn)了多路測風(fēng)站點可靠接入,為管理用戶提供了6條鐵路線大風(fēng)實時監(jiān)測數(shù)據(jù)顯示、數(shù)據(jù)查詢和鐵路線設(shè)備故障數(shù)據(jù)顯示等功能,為用戶提供遠(yuǎn)程在線監(jiān)控和在線調(diào)測業(yè)務(wù)需要。
我國地域遼闊,氣候千變?nèi)f化,在鐵路運輸線路上更是面臨復(fù)雜的自然災(zāi)害及突發(fā)事故威脅。烏魯木齊鐵路局所轄蘭新鐵路西線、北疆線、南疆線,3000多公里的鐵路線穿越了安西、山口、十三間房、珍珠泉、八盤磨、阿拉山口等風(fēng)區(qū)。鐵路沿線特殊的地理環(huán)境又形成了無數(shù)風(fēng)口,大風(fēng)所起飛沙走石,交通受阻,行人遭殃。大風(fēng)作為影響新疆鐵路運輸?shù)闹饕匀粸?zāi)害之一,常會刮翻車輛,中斷鐵路運輸,嚴(yán)重地制約了新疆鐵路運輸?shù)陌l(fā)展。因此,建立高速鐵路大風(fēng)監(jiān)測與預(yù)警系統(tǒng),對于預(yù)防大風(fēng)事故的發(fā)生,確保高速鐵路運輸安全具有重要的現(xiàn)實意義。國內(nèi)外針對對鐵路大風(fēng)監(jiān)測(預(yù)警)系統(tǒng)開發(fā)已有大量研究成果,例如日本的強(qiáng)風(fēng)預(yù)警系統(tǒng),我國京津冀鐵路大風(fēng)系統(tǒng)等,都為高速鐵路運輸安全提供了及時有效的大風(fēng)監(jiān)測預(yù)警服務(wù)。我國的普速鐵路風(fēng)監(jiān)測既有區(qū)間復(fù)示系統(tǒng)自2014年投入應(yīng)用,隨著測風(fēng)站點不斷增加以及業(yè)務(wù)管理模式發(fā)生變化,復(fù)式系統(tǒng)運行中發(fā)生的問題和系統(tǒng)日常運行維護(hù)功能已不能滿足用戶的需求。因而研制具有高度可靠性和安全性、符合當(dāng)前生產(chǎn)架構(gòu)及運用維護(hù)需求的數(shù)據(jù)監(jiān)測系統(tǒng),從而進(jìn)一步提高風(fēng)監(jiān)測技術(shù)保障效率。本文將重點介紹升級后的風(fēng)監(jiān)測區(qū)間復(fù)示系統(tǒng)設(shè)計架構(gòu)和系統(tǒng)功能,從而為沿線鐵路路線大風(fēng)災(zāi)害監(jiān)測和高速鐵路運輸安全保駕護(hù)航。
通過對項目需求的分析,確定了系統(tǒng)主要功能如下:
(1)減少網(wǎng)絡(luò)波動的影響:設(shè)備原有系統(tǒng)存在數(shù)據(jù)傳輸通道中斷時不斷提示10053、10054網(wǎng)絡(luò)錯誤,導(dǎo)致系統(tǒng)宕機(jī)的現(xiàn)象,復(fù)式系統(tǒng)可避免或減少這種現(xiàn)象的發(fā)生,提供持續(xù)穩(wěn)定的數(shù)據(jù)通信服務(wù)。
(2)自動跟蹤數(shù)據(jù)中斷情況:對管轄的風(fēng)監(jiān)測設(shè)備數(shù)據(jù)的連續(xù)性、可靠性進(jìn)行跟蹤和記錄并將故障設(shè)備信息進(jìn)行報警提示。
(3)風(fēng)監(jiān)測設(shè)備工況快速查看:可快速查看風(fēng)監(jiān)測設(shè)備短時變化曲線,了解關(guān)鍵站點變化趨勢;同時在需要決策風(fēng)監(jiān)測主(備)設(shè)備切換時,對比主(備)數(shù)據(jù)的差異。
1.2.1 選用Netty框架的理由及技術(shù)特點
本項目的主要設(shè)計思路之一就是解決因網(wǎng)絡(luò)通信不穩(wěn)定引起的網(wǎng)絡(luò)故障頻發(fā)和復(fù)式系統(tǒng)宕機(jī)問題,課題組通過網(wǎng)絡(luò)查詢和技術(shù)咨詢相結(jié)合的方式,對比了Mina和Netty兩個流行的網(wǎng)絡(luò)通信框架優(yōu)劣性如表1所示。
表1 Mina和Netty兩個流行的網(wǎng)絡(luò)通信框架優(yōu)劣性對比表
通過對比Mina、Netty兩個通信框架發(fā)現(xiàn)Netty優(yōu)勢顯著,其主要功能特點還包含:支持多種協(xié)議通信層(TCP/UDP);API簡單易上手開發(fā)門檻低市場性價比高;可通過管道流水線自定義信道處理器,將處理過程綁定在流水線上即可實現(xiàn)特定協(xié)議處理需求;版本更新頻率高,社區(qū)活躍,發(fā)現(xiàn)bug會被及時修復(fù);Netty官網(wǎng)宣稱:“Netty修復(fù)了已經(jīng)發(fā)現(xiàn)的所有JDK非阻塞通信BUG”,綜上所述選擇Netty框架更適合本項目功能開發(fā)。
1.2.2 依托Netty搭建高效可靠通信服務(wù)
(1)選用異步非阻塞模型達(dá)到多路異步雙向通信機(jī)制,通過多線程提升系統(tǒng)的通信響應(yīng)能力,通過啟用主監(jiān)聽線程處理網(wǎng)絡(luò)的注冊,連接,斷線等事務(wù)。
(2)選用主副線程池實現(xiàn)核心網(wǎng)絡(luò)服務(wù)數(shù)據(jù)分離,通過線程池管理模塊,管理各網(wǎng)絡(luò)連接的數(shù)據(jù)讀寫,各網(wǎng)絡(luò)通道都分配獨立的處理線程,保證數(shù)據(jù)互不干擾。
(3)采用成熟的數(shù)據(jù)緩存中間件,實現(xiàn)數(shù)據(jù)的可靠存儲和高效讀取。
(4)通過微服務(wù)框架將系統(tǒng)的多個功能模塊拆分成了多個微服務(wù)程序,每個微服務(wù)實現(xiàn)單獨的功能,降低每個服務(wù)的開發(fā)難度,提升每個服務(wù)的可用性。微服務(wù)是一種服務(wù)間松耦合的、每個服務(wù)之間高度自治并且使用輕量級協(xié)議進(jìn)行通信的可持續(xù)集成部署的分布式架構(gòu)體系。
系統(tǒng)在技術(shù)實現(xiàn)上,核心內(nèi)容如下:
(1)采用Netty網(wǎng)絡(luò)框架構(gòu)建了多路Tcp通道并發(fā)處理系統(tǒng),系統(tǒng)選用異步非阻塞模型通信,數(shù)據(jù)的讀取和寫入函數(shù)都會立刻返回。在原有系統(tǒng)進(jìn)行數(shù)據(jù)處理中常見的10053、10054錯誤產(chǎn)生的原因有如下:a)可能軟件的其它地方關(guān)閉了socket而本函數(shù)還沒有返回;b)可能由于網(wǎng)絡(luò)故障對端已關(guān)閉了連接;c)可能你網(wǎng)絡(luò)緩存內(nèi)存訪問越界;d)或提前釋放緩存。異步非阻塞模型正是解決這一問題的良方,它不論讀取還是寫入都會立刻完成,如出現(xiàn)異常,也會立刻進(jìn)入異常處理流程,而不會提示10053、10054的錯誤。
(2)數(shù)據(jù)解析處理程序采用了裝飾者設(shè)計模式,該模式具有以下特點:基于零拷貝設(shè)計思想減少了數(shù)據(jù)復(fù)制,提高了數(shù)據(jù)處理效率,進(jìn)而提升并發(fā)量;統(tǒng)一實現(xiàn)接口,使多種數(shù)據(jù)的操作具有一致性;具備按需加載處理模塊能力,根據(jù)數(shù)據(jù)處理的需要調(diào)用不同的處理模塊。
(3)傳感器等設(shè)備故障提示信息的可靠處理是本課題研究的重要內(nèi)容,在故障信息處理流程中,做到信息處理達(dá)到及時準(zhǔn)確、分類處理、優(yōu)先提示等功能需求。經(jīng)過網(wǎng)絡(luò)查詢和功能對比發(fā)現(xiàn):采用消息隊列能很好的實現(xiàn)故障信息流轉(zhuǎn),同時它又實現(xiàn)了故障數(shù)據(jù)和操作的解耦合,加強(qiáng)了設(shè)備故障處理程序的穩(wěn)定性。
復(fù)式系統(tǒng)采用前后端分離的微服務(wù)設(shè)計,降低了系統(tǒng)間的耦合度,同時每個服務(wù)都設(shè)計成了功能單一的模塊,提高了系統(tǒng)的內(nèi)聚性,保證了系統(tǒng)各模塊的穩(wěn)定性,降低了各模塊的互相依賴,降低了系統(tǒng)不穩(wěn)定性的傳播。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖設(shè)計
為解決因網(wǎng)絡(luò)通信不穩(wěn)定引起的網(wǎng)絡(luò)故障頻發(fā)和復(fù)式系統(tǒng)宕機(jī)問題,本系統(tǒng)采用Netty網(wǎng)絡(luò)框架構(gòu)建了多路Tcp通道并發(fā)處理系統(tǒng),基于多線程通信技術(shù),構(gòu)建通用異步非阻塞式多線程通信模塊。同時,數(shù)據(jù)解析處理程序采用了裝飾者設(shè)計模式,減少數(shù)據(jù)復(fù)制,提高數(shù)據(jù)處理效率,進(jìn)而提升并發(fā)量塊。另外,采用消息隊列,信息處理達(dá)到及時準(zhǔn)確、分類處理、優(yōu)先提示等功能需求,解決了傳感器等設(shè)備故障提示信息。
前端設(shè)備請求連接處理、信道管理和異常處理由主線程池負(fù)責(zé),保證了網(wǎng)絡(luò)服務(wù)始終在線的能力。測風(fēng)設(shè)備數(shù)據(jù)讀取,字符解碼,數(shù)據(jù)分類處理,在網(wǎng)路讀線程池內(nèi)有序進(jìn)行,讀取到有效數(shù)據(jù)后,將設(shè)備的信息通過內(nèi)建設(shè)備信息數(shù)據(jù)表進(jìn)行緩存,該表提供了設(shè)備名稱和網(wǎng)絡(luò)通道的關(guān)聯(lián)信息,為網(wǎng)絡(luò)數(shù)據(jù)寫入提供路由,保證了網(wǎng)絡(luò)寫數(shù)據(jù)的有序進(jìn)行。
本系統(tǒng)中最關(guān)鍵的是網(wǎng)絡(luò)通信程序。程序中要處理的核心數(shù)據(jù)都在網(wǎng)絡(luò)服務(wù)中運轉(zhuǎn),當(dāng)網(wǎng)絡(luò)服務(wù)穩(wěn)定運行時后續(xù)的服務(wù)才能正常提供。服務(wù)端網(wǎng)絡(luò)服務(wù)采用異步非阻塞模型,通過完備的錯誤捕獲和處置機(jī)制,解決區(qū)間復(fù)示系統(tǒng)在網(wǎng)絡(luò)波動環(huán)境下的穩(wěn)定性問題。核心網(wǎng)絡(luò)服務(wù)通過主副線程池實現(xiàn),主線程負(fù)責(zé)客戶網(wǎng)絡(luò)三次握手和連接,連接成功的客戶信道將移交工作線程池,工作線程池負(fù)責(zé)讀取網(wǎng)絡(luò)信道的數(shù)據(jù),設(shè)備的注冊,在網(wǎng)絡(luò)信道數(shù)據(jù)讀取或?qū)懭氘惓jP(guān)閉網(wǎng)絡(luò)信道。同時配置了單獨的寫數(shù)據(jù)線程池,實現(xiàn)寫數(shù)據(jù)分離。另外利用sql和nosql數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)本地存儲,采用成熟的數(shù)據(jù)緩存中間件,為數(shù)據(jù)的高效可靠存儲和服務(wù)器端歷史數(shù)據(jù)補(bǔ)缺提供解決方法。實踐中采用redis緩存,將多線程讀取到的數(shù)據(jù)可以用毫秒級的速度寫入數(shù)據(jù)庫,避免了由于數(shù)據(jù)庫延遲造成通信線程延遲和數(shù)據(jù)通信延遲造成數(shù)據(jù)不能及時存儲,也避免通信延遲造成的網(wǎng)絡(luò)緩存堆積和內(nèi)存泄漏問題。網(wǎng)絡(luò)通信服務(wù)流程如圖2所示。
圖2 網(wǎng)絡(luò)通信服務(wù)流程
系統(tǒng)主界面可實現(xiàn)蘭新線、南疆線,臨哈線,哈羅線,奎北線和克塔線共6條鐵路線瞬時風(fēng)速、平均風(fēng)速等實時監(jiān)測數(shù)據(jù)顯示、數(shù)據(jù)查詢和鐵路線設(shè)備的故障數(shù)據(jù)顯示功能。
數(shù)據(jù)實時監(jiān)測和查看模塊可顯示對應(yīng)鐵路線主用設(shè)備和備用設(shè)備實時數(shù)據(jù)顯示(如圖3(a)所示)。通過點擊[A路數(shù)據(jù)監(jiān)測]和[B路數(shù)據(jù)監(jiān)測]菜單,選擇相關(guān)站點后可實現(xiàn)對某站當(dāng)前平均風(fēng)向和瞬時風(fēng)向查看(如圖3(b)所示)。
圖3 (a)實時監(jiān)測數(shù)據(jù)顯示和(b)站點風(fēng)向顯示
故障添加模塊可實現(xiàn)對未能及時處理的各類故障進(jìn)行進(jìn)一步處理的功能和手工登記故障的功能。主界面右側(cè)為故障事件顯示區(qū)(見圖4),該區(qū)域上部顯示管理用戶未處理完成的事件列表。通過單擊事件列表中的數(shù)據(jù),可對相應(yīng)時間進(jìn)行處理,從而改變事件處理狀態(tài)。當(dāng)系統(tǒng)智能判斷到某些站點有明確異常和故障時,會彈出事件提示窗口(包含標(biāo)題,事具體內(nèi)),使管理用戶可快速處理事件。
圖4 故障事件顯示
數(shù)據(jù)查詢模塊實現(xiàn)對各鐵路線及下屬測風(fēng)點的10min數(shù)據(jù)進(jìn)行顯示(見圖5)??赏ㄟ^數(shù)據(jù)查詢頁面選擇鐵路線路和其下屬查詢站點,顯示該鐵路線下屬的測風(fēng)站點最近10min數(shù)據(jù)列表(如圖5(a)所示)和數(shù)據(jù)曲線圖(如圖5(b)所示)。
圖5 (a)測站風(fēng)速數(shù)據(jù)列表和(b)風(fēng)速隨時間變化圖
結(jié)論:本復(fù)式系統(tǒng)基于網(wǎng)絡(luò)流行框架Netty構(gòu)建多線程處理框架,采用雙向異步通信方式搭建了以實時數(shù)據(jù)為中心的服務(wù)系統(tǒng),解決了風(fēng)監(jiān)測中網(wǎng)絡(luò)服務(wù)的不穩(wěn)定問題,提高了風(fēng)監(jiān)測系統(tǒng)數(shù)據(jù)傳輸?shù)目煽啃?,實現(xiàn)了多路測風(fēng)站點可靠接入,并為管理用戶提供了6條鐵路線瞬時風(fēng)速、平均風(fēng)速等實時監(jiān)測數(shù)據(jù)顯示、數(shù)據(jù)查詢和鐵路線設(shè)備故障數(shù)據(jù)顯示等功能?;陲L(fēng)監(jiān)測區(qū)間復(fù)試系統(tǒng)能實現(xiàn)設(shè)備端的遠(yuǎn)程配置和監(jiān)控,可以滿足用戶遠(yuǎn)程在線監(jiān)控和在線調(diào)測業(yè)務(wù)的需要。