新疆維吾爾自治區防雷減災中心 劉兆旭 鄭國宏 張永軍
風監測區間復示系統從數據分析的角度對系統進行優化,并基于大風監測數據進行分析,實現了多路測風站點可靠接入,為管理用戶提供了6條鐵路線大風實時監測數據顯示、數據查詢和鐵路線設備故障數據顯示等功能,為用戶提供遠程在線監控和在線調測業務需要。
我國地域遼闊,氣候千變萬化,在鐵路運輸線路上更是面臨復雜的自然災害及突發事故威脅。烏魯木齊鐵路局所轄蘭新鐵路西線、北疆線、南疆線,3000多公里的鐵路線穿越了安西、山口、十三間房、珍珠泉、八盤磨、阿拉山口等風區。鐵路沿線特殊的地理環境又形成了無數風口,大風所起飛沙走石,交通受阻,行人遭殃。大風作為影響新疆鐵路運輸的主要自然災害之一,常會刮翻車輛,中斷鐵路運輸,嚴重地制約了新疆鐵路運輸的發展。因此,建立高速鐵路大風監測與預警系統,對于預防大風事故的發生,確保高速鐵路運輸安全具有重要的現實意義。國內外針對對鐵路大風監測(預警)系統開發已有大量研究成果,例如日本的強風預警系統,我國京津冀鐵路大風系統等,都為高速鐵路運輸安全提供了及時有效的大風監測預警服務。我國的普速鐵路風監測既有區間復示系統自2014年投入應用,隨著測風站點不斷增加以及業務管理模式發生變化,復式系統運行中發生的問題和系統日常運行維護功能已不能滿足用戶的需求。因而研制具有高度可靠性和安全性、符合當前生產架構及運用維護需求的數據監測系統,從而進一步提高風監測技術保障效率。本文將重點介紹升級后的風監測區間復示系統設計架構和系統功能,從而為沿線鐵路路線大風災害監測和高速鐵路運輸安全保駕護航。
通過對項目需求的分析,確定了系統主要功能如下:
(1)減少網絡波動的影響:設備原有系統存在數據傳輸通道中斷時不斷提示10053、10054網絡錯誤,導致系統宕機的現象,復式系統可避免或減少這種現象的發生,提供持續穩定的數據通信服務。
(2)自動跟蹤數據中斷情況:對管轄的風監測設備數據的連續性、可靠性進行跟蹤和記錄并將故障設備信息進行報警提示。
(3)風監測設備工況快速查看:可快速查看風監測設備短時變化曲線,了解關鍵站點變化趨勢;同時在需要決策風監測主(備)設備切換時,對比主(備)數據的差異。
1.2.1 選用Netty框架的理由及技術特點
本項目的主要設計思路之一就是解決因網絡通信不穩定引起的網絡故障頻發和復式系統宕機問題,課題組通過網絡查詢和技術咨詢相結合的方式,對比了Mina和Netty兩個流行的網絡通信框架優劣性如表1所示。

表1 Mina和Netty兩個流行的網絡通信框架優劣性對比表
通過對比Mina、Netty兩個通信框架發現Netty優勢顯著,其主要功能特點還包含:支持多種協議通信層(TCP/UDP);API簡單易上手開發門檻低市場性價比高;可通過管道流水線自定義信道處理器,將處理過程綁定在流水線上即可實現特定協議處理需求;版本更新頻率高,社區活躍,發現bug會被及時修復;Netty官網宣稱:“Netty修復了已經發現的所有JDK非阻塞通信BUG”,綜上所述選擇Netty框架更適合本項目功能開發。
1.2.2 依托Netty搭建高效可靠通信服務
(1)選用異步非阻塞模型達到多路異步雙向通信機制,通過多線程提升系統的通信響應能力,通過啟用主監聽線程處理網絡的注冊,連接,斷線等事務。
(2)選用主副線程池實現核心網絡服務數據分離,通過線程池管理模塊,管理各網絡連接的數據讀寫,各網絡通道都分配獨立的處理線程,保證數據互不干擾。
(3)采用成熟的數據緩存中間件,實現數據的可靠存儲和高效讀取。
(4)通過微服務框架將系統的多個功能模塊拆分成了多個微服務程序,每個微服務實現單獨的功能,降低每個服務的開發難度,提升每個服務的可用性。微服務是一種服務間松耦合的、每個服務之間高度自治并且使用輕量級協議進行通信的可持續集成部署的分布式架構體系。
系統在技術實現上,核心內容如下:
(1)采用Netty網絡框架構建了多路Tcp通道并發處理系統,系統選用異步非阻塞模型通信,數據的讀取和寫入函數都會立刻返回。在原有系統進行數據處理中常見的10053、10054錯誤產生的原因有如下:a)可能軟件的其它地方關閉了socket而本函數還沒有返回;b)可能由于網絡故障對端已關閉了連接;c)可能你網絡緩存內存訪問越界;d)或提前釋放緩存。異步非阻塞模型正是解決這一問題的良方,它不論讀取還是寫入都會立刻完成,如出現異常,也會立刻進入異常處理流程,而不會提示10053、10054的錯誤。
(2)數據解析處理程序采用了裝飾者設計模式,該模式具有以下特點:基于零拷貝設計思想減少了數據復制,提高了數據處理效率,進而提升并發量;統一實現接口,使多種數據的操作具有一致性;具備按需加載處理模塊能力,根據數據處理的需要調用不同的處理模塊。
(3)傳感器等設備故障提示信息的可靠處理是本課題研究的重要內容,在故障信息處理流程中,做到信息處理達到及時準確、分類處理、優先提示等功能需求。經過網絡查詢和功能對比發現:采用消息隊列能很好的實現故障信息流轉,同時它又實現了故障數據和操作的解耦合,加強了設備故障處理程序的穩定性。
復式系統采用前后端分離的微服務設計,降低了系統間的耦合度,同時每個服務都設計成了功能單一的模塊,提高了系統的內聚性,保證了系統各模塊的穩定性,降低了各模塊的互相依賴,降低了系統不穩定性的傳播。系統結構圖如圖1所示。

圖1 系統結構圖設計
為解決因網絡通信不穩定引起的網絡故障頻發和復式系統宕機問題,本系統采用Netty網絡框架構建了多路Tcp通道并發處理系統,基于多線程通信技術,構建通用異步非阻塞式多線程通信模塊。同時,數據解析處理程序采用了裝飾者設計模式,減少數據復制,提高數據處理效率,進而提升并發量塊。另外,采用消息隊列,信息處理達到及時準確、分類處理、優先提示等功能需求,解決了傳感器等設備故障提示信息。
前端設備請求連接處理、信道管理和異常處理由主線程池負責,保證了網絡服務始終在線的能力。測風設備數據讀取,字符解碼,數據分類處理,在網路讀線程池內有序進行,讀取到有效數據后,將設備的信息通過內建設備信息數據表進行緩存,該表提供了設備名稱和網絡通道的關聯信息,為網絡數據寫入提供路由,保證了網絡寫數據的有序進行。
本系統中最關鍵的是網絡通信程序。程序中要處理的核心數據都在網絡服務中運轉,當網絡服務穩定運行時后續的服務才能正常提供。服務端網絡服務采用異步非阻塞模型,通過完備的錯誤捕獲和處置機制,解決區間復示系統在網絡波動環境下的穩定性問題。核心網絡服務通過主副線程池實現,主線程負責客戶網絡三次握手和連接,連接成功的客戶信道將移交工作線程池,工作線程池負責讀取網絡信道的數據,設備的注冊,在網絡信道數據讀取或寫入異常關閉網絡信道。同時配置了單獨的寫數據線程池,實現寫數據分離。另外利用sql和nosql數據庫實現數據本地存儲,采用成熟的數據緩存中間件,為數據的高效可靠存儲和服務器端歷史數據補缺提供解決方法。實踐中采用redis緩存,將多線程讀取到的數據可以用毫秒級的速度寫入數據庫,避免了由于數據庫延遲造成通信線程延遲和數據通信延遲造成數據不能及時存儲,也避免通信延遲造成的網絡緩存堆積和內存泄漏問題。網絡通信服務流程如圖2所示。

圖2 網絡通信服務流程
系統主界面可實現蘭新線、南疆線,臨哈線,哈羅線,奎北線和克塔線共6條鐵路線瞬時風速、平均風速等實時監測數據顯示、數據查詢和鐵路線設備的故障數據顯示功能。
數據實時監測和查看模塊可顯示對應鐵路線主用設備和備用設備實時數據顯示(如圖3(a)所示)。通過點擊[A路數據監測]和[B路數據監測]菜單,選擇相關站點后可實現對某站當前平均風向和瞬時風向查看(如圖3(b)所示)。

圖3 (a)實時監測數據顯示和(b)站點風向顯示
故障添加模塊可實現對未能及時處理的各類故障進行進一步處理的功能和手工登記故障的功能。主界面右側為故障事件顯示區(見圖4),該區域上部顯示管理用戶未處理完成的事件列表。通過單擊事件列表中的數據,可對相應時間進行處理,從而改變事件處理狀態。當系統智能判斷到某些站點有明確異常和故障時,會彈出事件提示窗口(包含標題,事具體內),使管理用戶可快速處理事件。

圖4 故障事件顯示
數據查詢模塊實現對各鐵路線及下屬測風點的10min數據進行顯示(見圖5)。可通過數據查詢頁面選擇鐵路線路和其下屬查詢站點,顯示該鐵路線下屬的測風站點最近10min數據列表(如圖5(a)所示)和數據曲線圖(如圖5(b)所示)。

圖5 (a)測站風速數據列表和(b)風速隨時間變化圖
結論:本復式系統基于網絡流行框架Netty構建多線程處理框架,采用雙向異步通信方式搭建了以實時數據為中心的服務系統,解決了風監測中網絡服務的不穩定問題,提高了風監測系統數據傳輸的可靠性,實現了多路測風站點可靠接入,并為管理用戶提供了6條鐵路線瞬時風速、平均風速等實時監測數據顯示、數據查詢和鐵路線設備故障數據顯示等功能。基于風監測區間復試系統能實現設備端的遠程配置和監控,可以滿足用戶遠程在線監控和在線調測業務的需要。