鄧桂星
(中國鐵路蘭州局集團有限公司 信息技術所,甘肅 蘭州 730000)
車流徑路是鐵路貨物運輸組織的基礎,是編制貨物列車編組計劃和運行圖的前提,是組織貨運生產與經營的基本依據,也是提升路網效率和效益的重要手段[1]。近年來隨著國家產業結構和生產力布局的調整,高速鐵路成網后主要干線貨運能力釋放,蘭渝(蘭州東—渭沱)、唐包(曹妃甸北—包頭東)、浩吉(浩勒報吉南—吉安)等貨運新通道形成,西合(新豐鎮—合肥東)、陽安(陽平關—安康東)、渝懷(團結村—懷化西)等既有線擴能,新豐鎮、興隆場、襄陽北等編組站能力補強[2],鐵路客戶對運輸價格變化日益關注。為適應鐵路貨物運輸高質量發展,車流徑路調整頻率正逐步加快。而在車流徑路日常調整后,如何通過先進技術手段為全路貨運、調度、運輸、統計和財務業務人員提供復雜路網條件下的可視化徑路分析,以及如何利用網絡通道為全路技術計劃、貨運計劃、中國鐵路95306 網(以下簡稱“95306 網”)、車流推算、運到時限、18 點統計、承運清算等應用提供實時徑路數據支撐,是當前我國鐵路運輸高質量發展亟待突破的技術難點。
目前,面向全路的車流徑路查詢軟件是傳統的單機界面程序,只能以文本方式查詢單條OD 車流徑路結果,此種模式不直觀、作業效率低,不利于業務人員對車流徑路的全面理解與分析。車流徑路查詢軟件界面如圖1 所示。車流徑路為全路技術計劃和貨運計劃等信息系統以DLL(C++動態鏈接庫)方式提供離線數據支撐,此種模式本地計算效率高,但依賴業務人員對車流徑路新版本數據的手工下載,如數據更新不及時,則會造成信息系統和實際運輸組織的不統一。貨車車流徑路公共技術服務平臺是為解決上述問題而進行設計研究,實現網頁端車流徑路可視化分析與海量高并發訪問的實時數據傳輸是該平臺的構建目標。

圖1 車流徑路查詢軟件界面Fig.1 Train flow route query software
車流徑路公共技術服務平臺主要圍繞直觀性、高效性、穩定性和安全性進行設計,在此基礎上滿足不同專業的車流徑路分析需求,滿足不同應用的車流徑路定制化需求。
車流徑路公共技術服務平臺的設計主要包括B/S 可視化平臺[3]、Socket服務和可視化服務的設計[4],分別面向業務人員和應用系統提供技術支撐。B/S 可視化平臺面向貨運、調度、運輸、統計和財務等專業用戶,滿足全路車流徑路優化、計費徑路制定、編組計劃調整、迂回徑路判定、違流徑路檢測、生產經營決策等業務需求;Socket 服務面向全路相關應用系統提供穩定、高效、安全、可定制的車流徑路數據服務,滿足95306 網貨運全程追蹤、違流監測和運到時限等應用的海量高并發訪問需求[5];可視化服務面向全路應用系統提供可視化路網和車流徑路支撐,滿足二次開發需求,兼容谷歌內核瀏覽器。
B/S 可視化平臺以數據驅動文檔(D3)實現路網的矢量化展示,以Spring Boot 微服務架構處理業務數據請求,以MySql 為數據庫進行基礎數據存儲。套接字(Socket)服務以Docker 為服務容器,以Nginx 為負載均衡,以Socket 為通信技術。可視化服務以Js 方式提供可視化調用接口。車流徑路公共技術服務平臺技術架構如圖2所示。

圖2 車流徑路公共技術服務平臺技術架構Fig.2 Technical architecture of train flow route public technical service platform
車流徑路公共技術服務平臺的功能主要包括路網展示、數據檢索、車流徑路、車流分析、Socket 服務、可視化服務和系統管理7部分。
(1)路網展示功能主要分鐵路局集團公司、省份、線路、合資地方鐵路、單復線和本線到發展示等6個場景,實現全路貨運接算站示意圖的可視化矢量展示,用不同顏色區分線路各種屬性。用戶可與全路貨運接算站示意圖中的各元素進行交互,查看線路和車站屬性,為用戶詳細掌握路網基礎數據提供可視化的便捷操作。
(2)數據檢索功能實現車站、線路的快速定位及展示。用戶通過首字母、電報碼和漢字3 種輸入方式在復雜路網中對車站進行快速查詢和高亮定位,通過首字母和漢字2 種輸入方式在復雜路網中對線路進行快速查找和高亮定位,有效提高用戶對基礎數據的檢索速度和日常作業效率。
(3)車流徑路功能為用戶提供點點徑路、環狀徑路和支點徑路3種徑路分析場景。點點徑路包含全路任意車站的兩點徑路和多點徑路,以及特定徑路、最短徑路、品類等條件選項,提高用戶對車流徑路規章的理解和應用水平;環狀徑路提供任意車站到全路的環狀徑路,有效提升用戶對車流徑路和最短徑路分析能力;支點徑路為全路任意車站經過支點站所覆蓋的到域范圍,此功能豐富了車流徑路的內涵,特別是要為編組計劃制定人員提供編組站組號范圍界定的參考依據。
(4)車流分析功能提供全路任意支點間矢量車流的可視化分析手段,用戶可通過可視化操作選擇經由支點、非經由支點、品類和車種等作為條件,平臺利用全路貨源數據,可視化展示矢量車流和裝卸分布,此功能為車流徑路的調整、編組計劃的優化、線路和技術站運能與運量的定量分析提供技術支撐。
(5)Socket 服務為全路相關應用系統提供穩定、高效、安全和可定制化的徑路數據服務,滿足Java,C#,C++等語言的實時動態調用。
(6)可視化服務為相關應用系統提供基礎路網和車流徑路的可視化服務,滿足車輛定位、軌跡鋪畫等二次開發需求。
(7)系統管理功能主要包含了用戶管理、數據下載、版本更新等功能,為平臺的基礎性功能。
車流徑路公共技術服務平臺的實現主要分為徑路服務、事務處理和平臺展示3個模塊。
徑路服務模塊是車流徑路公共技術服務平臺的核心,承擔了基礎數據處理[6]、車流徑路計算[7]、車流流量分析、外部Socket訪問等重要運算任務,并滿足海量高并發訪問下的穩定、高效和安全的需求。該平臺采用C++圖形化開發框架(Qt)、大批量文件描述符處理(EPOLL)、Socket、負載均衡(Nginx)、應用容器引擎(Docker)等技術,實現了車流徑路公共技術服務平臺徑路服務模塊的構建。
在技術選型方面,徑路服務模塊利用Qt 技術的跨平臺機制,實現既有車流徑路系統從Windows 平臺向Linux 平臺的移植,保留了C++語言高速運算的優勢;利用EPOLL 模型在海量并發訪問的高效處理特性,實現了徑路服務的封裝與邊緣觸發的調用[6];采用Socket套接字編程技術,實現了徑路數據通過二進制方式的遠程傳輸,并滿足Java,C#,C++等多種語言的實時動態調用。
在基本滿足穩定、高效和安全前提條件下,為確保95306 網和運到時限等應用的海量高并發訪問需求,本研究采用Docker 技術部署徑路服務,實現了單臺虛擬機徑路服務由單進程向多進程的轉變,實現了對虛擬機資源的高效利用;同時,應用Nginx 反向代理技術,實現了對多個Docker 容器中徑路服務的負載均衡,滿足了相關應用海量高并發訪問需求。徑路服務模塊系統架構如圖3所示。

圖3 徑路服務模塊系統架構Fig.3 System architecture of train flow route service module
徑路服務模塊基于Linux平臺的EPOLL模型進行設計和編碼。EPOLL模型是Linux內核為處理大批量文件描述符而作了改進的POLL,是Linux 下多路復用I/O接口select/poll的增強版本,能顯著提高系統在大量并發連接中只有部分活躍的情況下的系統CPU利用率。采用TCP/IP 協議在傳輸層進行數據通信,極大地提升了數據的傳輸效率[6]。徑路服務利用多線程技術,分工處理客戶端請求,以提高服務運算效率,其中監聽線程A負責監聽車流徑路數據版本,監聽線程B 負責處理新的客戶端連接,主線程采用邊緣觸發模式處理已經發生的客戶端事件、徑路計算和數據傳輸等相關事務。徑路服務數據處理流程如圖4所示。

圖4 徑路服務數據處理流程Fig.4 Route service data processing flow chart
事務處理模塊是車流徑路公共技術服務平臺的中樞,承擔徑路服務模塊數據的解析、基礎功能的處理、平臺展示數據的傳輸等事務。模塊架構采用Spring Boot 框架進行設計。 Spring Boot 基于Spring4.0,不僅繼承了Spring 框架既有的優秀特性,而且還通過簡化配置進一步簡化了Spring應用的整個搭建和開發過程。
本研究在繼承Spring Boot 框架優勢的前提下,利用Socket客戶端實現對徑路服務模塊的訪問,應用面向對象的思想對返回的二進制數據進行解析;采用Jpa(Java 持久層API)作為數據持久層,充分利用其簡便和高效優勢,對平臺基礎性數據進行操作;采用Restful 方式與平臺展示模塊進行數據傳遞。事務處理模塊數據架構如圖5所示。

圖5 事務處理模塊數據架構Fig.5 Transaction processing module data architecture
事務處理模塊主要包含控制層、業務層、Socket流數據解析和持久層。控制層用于邏輯控制,采用Restful 方式與平臺展示模塊進行數據交互;業務層負責業務邏輯的實現,是控制層和Socket流數據解析與持久層的交互區域,實現用戶權限的判別、系統菜單的分配、徑路數據的處理等事務;Socket 流數據解析利用Socket 客戶端接收徑路服務模塊傳輸的路網、徑路和車流數據,按字節進行解析后生成對象實例;持久層采用Jpa 技術實現對關系型數據庫的增刪查改。
平臺展示模塊是車流徑路公共技術服務平臺的窗口,承擔用戶交互、可視化展示、徑路分析等重要任務。在技術選型方面,采用Bootstrap 作為前端框架,實現了主界面布局的自適應和元素動態渲染;借鑒JavaScript 原生的面向對象思想,實現了對路網展示、車站定位、徑路分析、車流分析等方法的封裝,提高了代碼的開發效率和可維護性;運用D3矢量圖形技術,實現了路網矢量圖的拖動和縮放,以及圓、線、路徑、字型的快速鋪畫,滿足了全路相關業務部門對路網展示、數據檢索、車流徑路[8]、環狀徑路、支點徑路和車流分析等功能需求。平臺展示模塊的車流徑路如圖6所示,環狀徑路如圖7所示,支點徑路如圖8所示。

圖6 車流徑路Fig.6 Train flow route

圖7 環狀徑路Fig.7 Ring path

圖8 支點徑路Fig.8 Pivot path
車流徑路公共技術服務平臺于2021 年部署測試運行,是全路首次以網頁方式實現車流徑路的可視化分析。目前,全路各專業測試用戶已達1 500 余人,同時為95306 網和中鐵特貨物流股份有限公司(以下簡稱“中鐵特貨”)相關應用系統提供了車流徑路數據服務。
車流徑路公共技術服務平臺的全路測試用戶主要涵蓋貨運、調度、運輸、統計、財務和信息等專業,平臺各功能一是解決了路網和徑路可視化展示問題,二是能夠快速定位復雜路網中的車站和線路,三是能夠對車流和徑路進行深度的可視化分析,提高了業務人員的工作效率。
該平臺在2021 年全路《貨車車流徑路》(鐵貨[2021]58 號)和《貨物列車編組計劃》(鐵運函[2021]137號)規章的制定和執行工作中發揮了關鍵作用,最大程度統一了各鐵路局集團公司相關專業人員對車流徑路的理解和認知,鐵路局集團公司編組計劃制定人員利用該平臺僅需1 d 即可完成編組站組號范圍的界定,以往則需數天以上。目前平臺運行穩定,日均訪問量在5 000次以上。
車流徑路公共技術服務平臺為95306 網貨運全程追蹤和中鐵特貨機保車走行公里等應用提供了徑路數據服務,利用Socket 客戶端實現了Java 和C#等語言的實時遠程調用,并可根據應用需求返回里程、線路等級里程、內燃電力里程、分界口、經由站等多種數據集,同時在海量高并發訪問時保持了穩定與高效,目前日均數據訪問量超過50 萬次。95306 網貨運全程追蹤應用如圖9所示。

圖9 95306網貨運全程追蹤應用Fig.9 Freight tracking application on 95306 net
車流徑路公共技術服務平臺為中鐵特貨車輛動態追蹤應用提供了可視化服務,能夠直觀反映中鐵特貨車輛動態分布、停留狀態,以及單個載重車輛已經過的軌跡和未來將要經過的線路。車輛動態追蹤應用如圖10所示。

圖10 車輛動態追蹤應用Fig.10 Trains dynamic tracking application
車流徑路公共技術服務平臺較好地解決了車流徑路可視化分析和全路數據同步問題。下一步,平臺將在可視化展示、徑路分析、Socket 服務、可視化服務等方面繼續深化技術研究,為全路相關專業人員和應用系統提供更便捷的操作方法、更高效的響應速度、更豐富的功能支撐,為新時期中國鐵路運輸高質量發展做出新的更大的貢獻。