鄧桂星
(中國鐵路蘭州局集團有限公司 信息技術(shù)所,甘肅 蘭州 730000)
車流徑路是鐵路貨物運輸組織的基礎(chǔ),是編制貨物列車編組計劃和運行圖的前提,是組織貨運生產(chǎn)與經(jīng)營的基本依據(jù),也是提升路網(wǎng)效率和效益的重要手段[1]。近年來隨著國家產(chǎn)業(yè)結(jié)構(gòu)和生產(chǎn)力布局的調(diào)整,高速鐵路成網(wǎng)后主要干線貨運能力釋放,蘭渝(蘭州東—渭沱)、唐包(曹妃甸北—包頭東)、浩吉(浩勒報吉南—吉安)等貨運新通道形成,西合(新豐鎮(zhèn)—合肥東)、陽安(陽平關(guān)—安康東)、渝懷(團結(jié)村—懷化西)等既有線擴能,新豐鎮(zhèn)、興隆場、襄陽北等編組站能力補強[2],鐵路客戶對運輸價格變化日益關(guān)注。為適應(yīng)鐵路貨物運輸高質(zhì)量發(fā)展,車流徑路調(diào)整頻率正逐步加快。而在車流徑路日常調(diào)整后,如何通過先進技術(shù)手段為全路貨運、調(diào)度、運輸、統(tǒng)計和財務(wù)業(yè)務(wù)人員提供復(fù)雜路網(wǎng)條件下的可視化徑路分析,以及如何利用網(wǎng)絡(luò)通道為全路技術(shù)計劃、貨運計劃、中國鐵路95306 網(wǎng)(以下簡稱“95306 網(wǎng)”)、車流推算、運到時限、18 點統(tǒng)計、承運清算等應(yīng)用提供實時徑路數(shù)據(jù)支撐,是當(dāng)前我國鐵路運輸高質(zhì)量發(fā)展亟待突破的技術(shù)難點。
目前,面向全路的車流徑路查詢軟件是傳統(tǒng)的單機界面程序,只能以文本方式查詢單條OD 車流徑路結(jié)果,此種模式不直觀、作業(yè)效率低,不利于業(yè)務(wù)人員對車流徑路的全面理解與分析。車流徑路查詢軟件界面如圖1 所示。車流徑路為全路技術(shù)計劃和貨運計劃等信息系統(tǒng)以DLL(C++動態(tài)鏈接庫)方式提供離線數(shù)據(jù)支撐,此種模式本地計算效率高,但依賴業(yè)務(wù)人員對車流徑路新版本數(shù)據(jù)的手工下載,如數(shù)據(jù)更新不及時,則會造成信息系統(tǒng)和實際運輸組織的不統(tǒng)一。貨車車流徑路公共技術(shù)服務(wù)平臺是為解決上述問題而進行設(shè)計研究,實現(xiàn)網(wǎng)頁端車流徑路可視化分析與海量高并發(fā)訪問的實時數(shù)據(jù)傳輸是該平臺的構(gòu)建目標(biāo)。
圖1 車流徑路查詢軟件界面Fig.1 Train flow route query software
車流徑路公共技術(shù)服務(wù)平臺主要圍繞直觀性、高效性、穩(wěn)定性和安全性進行設(shè)計,在此基礎(chǔ)上滿足不同專業(yè)的車流徑路分析需求,滿足不同應(yīng)用的車流徑路定制化需求。
車流徑路公共技術(shù)服務(wù)平臺的設(shè)計主要包括B/S 可視化平臺[3]、Socket服務(wù)和可視化服務(wù)的設(shè)計[4],分別面向業(yè)務(wù)人員和應(yīng)用系統(tǒng)提供技術(shù)支撐。B/S 可視化平臺面向貨運、調(diào)度、運輸、統(tǒng)計和財務(wù)等專業(yè)用戶,滿足全路車流徑路優(yōu)化、計費徑路制定、編組計劃調(diào)整、迂回徑路判定、違流徑路檢測、生產(chǎn)經(jīng)營決策等業(yè)務(wù)需求;Socket 服務(wù)面向全路相關(guān)應(yīng)用系統(tǒng)提供穩(wěn)定、高效、安全、可定制的車流徑路數(shù)據(jù)服務(wù),滿足95306 網(wǎng)貨運全程追蹤、違流監(jiān)測和運到時限等應(yīng)用的海量高并發(fā)訪問需求[5];可視化服務(wù)面向全路應(yīng)用系統(tǒng)提供可視化路網(wǎng)和車流徑路支撐,滿足二次開發(fā)需求,兼容谷歌內(nèi)核瀏覽器。
B/S 可視化平臺以數(shù)據(jù)驅(qū)動文檔(D3)實現(xiàn)路網(wǎng)的矢量化展示,以Spring Boot 微服務(wù)架構(gòu)處理業(yè)務(wù)數(shù)據(jù)請求,以MySql 為數(shù)據(jù)庫進行基礎(chǔ)數(shù)據(jù)存儲。套接字(Socket)服務(wù)以Docker 為服務(wù)容器,以Nginx 為負(fù)載均衡,以Socket 為通信技術(shù)??梢暬?wù)以Js 方式提供可視化調(diào)用接口。車流徑路公共技術(shù)服務(wù)平臺技術(shù)架構(gòu)如圖2所示。
圖2 車流徑路公共技術(shù)服務(wù)平臺技術(shù)架構(gòu)Fig.2 Technical architecture of train flow route public technical service platform
車流徑路公共技術(shù)服務(wù)平臺的功能主要包括路網(wǎng)展示、數(shù)據(jù)檢索、車流徑路、車流分析、Socket 服務(wù)、可視化服務(wù)和系統(tǒng)管理7部分。
(1)路網(wǎng)展示功能主要分鐵路局集團公司、省份、線路、合資地方鐵路、單復(fù)線和本線到發(fā)展示等6個場景,實現(xiàn)全路貨運接算站示意圖的可視化矢量展示,用不同顏色區(qū)分線路各種屬性。用戶可與全路貨運接算站示意圖中的各元素進行交互,查看線路和車站屬性,為用戶詳細(xì)掌握路網(wǎng)基礎(chǔ)數(shù)據(jù)提供可視化的便捷操作。
(2)數(shù)據(jù)檢索功能實現(xiàn)車站、線路的快速定位及展示。用戶通過首字母、電報碼和漢字3 種輸入方式在復(fù)雜路網(wǎng)中對車站進行快速查詢和高亮定位,通過首字母和漢字2 種輸入方式在復(fù)雜路網(wǎng)中對線路進行快速查找和高亮定位,有效提高用戶對基礎(chǔ)數(shù)據(jù)的檢索速度和日常作業(yè)效率。
(3)車流徑路功能為用戶提供點點徑路、環(huán)狀徑路和支點徑路3種徑路分析場景。點點徑路包含全路任意車站的兩點徑路和多點徑路,以及特定徑路、最短徑路、品類等條件選項,提高用戶對車流徑路規(guī)章的理解和應(yīng)用水平;環(huán)狀徑路提供任意車站到全路的環(huán)狀徑路,有效提升用戶對車流徑路和最短徑路分析能力;支點徑路為全路任意車站經(jīng)過支點站所覆蓋的到域范圍,此功能豐富了車流徑路的內(nèi)涵,特別是要為編組計劃制定人員提供編組站組號范圍界定的參考依據(jù)。
(4)車流分析功能提供全路任意支點間矢量車流的可視化分析手段,用戶可通過可視化操作選擇經(jīng)由支點、非經(jīng)由支點、品類和車種等作為條件,平臺利用全路貨源數(shù)據(jù),可視化展示矢量車流和裝卸分布,此功能為車流徑路的調(diào)整、編組計劃的優(yōu)化、線路和技術(shù)站運能與運量的定量分析提供技術(shù)支撐。
(5)Socket 服務(wù)為全路相關(guān)應(yīng)用系統(tǒng)提供穩(wěn)定、高效、安全和可定制化的徑路數(shù)據(jù)服務(wù),滿足Java,C#,C++等語言的實時動態(tài)調(diào)用。
(6)可視化服務(wù)為相關(guān)應(yīng)用系統(tǒng)提供基礎(chǔ)路網(wǎng)和車流徑路的可視化服務(wù),滿足車輛定位、軌跡鋪畫等二次開發(fā)需求。
(7)系統(tǒng)管理功能主要包含了用戶管理、數(shù)據(jù)下載、版本更新等功能,為平臺的基礎(chǔ)性功能。
車流徑路公共技術(shù)服務(wù)平臺的實現(xiàn)主要分為徑路服務(wù)、事務(wù)處理和平臺展示3個模塊。
徑路服務(wù)模塊是車流徑路公共技術(shù)服務(wù)平臺的核心,承擔(dān)了基礎(chǔ)數(shù)據(jù)處理[6]、車流徑路計算[7]、車流流量分析、外部Socket訪問等重要運算任務(wù),并滿足海量高并發(fā)訪問下的穩(wěn)定、高效和安全的需求。該平臺采用C++圖形化開發(fā)框架(Qt)、大批量文件描述符處理(EPOLL)、Socket、負(fù)載均衡(Nginx)、應(yīng)用容器引擎(Docker)等技術(shù),實現(xiàn)了車流徑路公共技術(shù)服務(wù)平臺徑路服務(wù)模塊的構(gòu)建。
在技術(shù)選型方面,徑路服務(wù)模塊利用Qt 技術(shù)的跨平臺機制,實現(xiàn)既有車流徑路系統(tǒng)從Windows 平臺向Linux 平臺的移植,保留了C++語言高速運算的優(yōu)勢;利用EPOLL 模型在海量并發(fā)訪問的高效處理特性,實現(xiàn)了徑路服務(wù)的封裝與邊緣觸發(fā)的調(diào)用[6];采用Socket套接字編程技術(shù),實現(xiàn)了徑路數(shù)據(jù)通過二進制方式的遠(yuǎn)程傳輸,并滿足Java,C#,C++等多種語言的實時動態(tài)調(diào)用。
在基本滿足穩(wěn)定、高效和安全前提條件下,為確保95306 網(wǎng)和運到時限等應(yīng)用的海量高并發(fā)訪問需求,本研究采用Docker 技術(shù)部署徑路服務(wù),實現(xiàn)了單臺虛擬機徑路服務(wù)由單進程向多進程的轉(zhuǎn)變,實現(xiàn)了對虛擬機資源的高效利用;同時,應(yīng)用Nginx 反向代理技術(shù),實現(xiàn)了對多個Docker 容器中徑路服務(wù)的負(fù)載均衡,滿足了相關(guān)應(yīng)用海量高并發(fā)訪問需求。徑路服務(wù)模塊系統(tǒng)架構(gòu)如圖3所示。
圖3 徑路服務(wù)模塊系統(tǒng)架構(gòu)Fig.3 System architecture of train flow route service module
徑路服務(wù)模塊基于Linux平臺的EPOLL模型進行設(shè)計和編碼。EPOLL模型是Linux內(nèi)核為處理大批量文件描述符而作了改進的POLL,是Linux 下多路復(fù)用I/O接口select/poll的增強版本,能顯著提高系統(tǒng)在大量并發(fā)連接中只有部分活躍的情況下的系統(tǒng)CPU利用率。采用TCP/IP 協(xié)議在傳輸層進行數(shù)據(jù)通信,極大地提升了數(shù)據(jù)的傳輸效率[6]。徑路服務(wù)利用多線程技術(shù),分工處理客戶端請求,以提高服務(wù)運算效率,其中監(jiān)聽線程A負(fù)責(zé)監(jiān)聽車流徑路數(shù)據(jù)版本,監(jiān)聽線程B 負(fù)責(zé)處理新的客戶端連接,主線程采用邊緣觸發(fā)模式處理已經(jīng)發(fā)生的客戶端事件、徑路計算和數(shù)據(jù)傳輸?shù)认嚓P(guān)事務(wù)。徑路服務(wù)數(shù)據(jù)處理流程如圖4所示。
圖4 徑路服務(wù)數(shù)據(jù)處理流程Fig.4 Route service data processing flow chart
事務(wù)處理模塊是車流徑路公共技術(shù)服務(wù)平臺的中樞,承擔(dān)徑路服務(wù)模塊數(shù)據(jù)的解析、基礎(chǔ)功能的處理、平臺展示數(shù)據(jù)的傳輸?shù)仁聞?wù)。模塊架構(gòu)采用Spring Boot 框架進行設(shè)計。 Spring Boot 基于Spring4.0,不僅繼承了Spring 框架既有的優(yōu)秀特性,而且還通過簡化配置進一步簡化了Spring應(yīng)用的整個搭建和開發(fā)過程。
本研究在繼承Spring Boot 框架優(yōu)勢的前提下,利用Socket客戶端實現(xiàn)對徑路服務(wù)模塊的訪問,應(yīng)用面向?qū)ο蟮乃枷雽Ψ祷氐亩M制數(shù)據(jù)進行解析;采用Jpa(Java 持久層API)作為數(shù)據(jù)持久層,充分利用其簡便和高效優(yōu)勢,對平臺基礎(chǔ)性數(shù)據(jù)進行操作;采用Restful 方式與平臺展示模塊進行數(shù)據(jù)傳遞。事務(wù)處理模塊數(shù)據(jù)架構(gòu)如圖5所示。
圖5 事務(wù)處理模塊數(shù)據(jù)架構(gòu)Fig.5 Transaction processing module data architecture
事務(wù)處理模塊主要包含控制層、業(yè)務(wù)層、Socket流數(shù)據(jù)解析和持久層??刂茖佑糜谶壿嬁刂疲捎肦estful 方式與平臺展示模塊進行數(shù)據(jù)交互;業(yè)務(wù)層負(fù)責(zé)業(yè)務(wù)邏輯的實現(xiàn),是控制層和Socket流數(shù)據(jù)解析與持久層的交互區(qū)域,實現(xiàn)用戶權(quán)限的判別、系統(tǒng)菜單的分配、徑路數(shù)據(jù)的處理等事務(wù);Socket 流數(shù)據(jù)解析利用Socket 客戶端接收徑路服務(wù)模塊傳輸?shù)穆肪W(wǎng)、徑路和車流數(shù)據(jù),按字節(jié)進行解析后生成對象實例;持久層采用Jpa 技術(shù)實現(xiàn)對關(guān)系型數(shù)據(jù)庫的增刪查改。
平臺展示模塊是車流徑路公共技術(shù)服務(wù)平臺的窗口,承擔(dān)用戶交互、可視化展示、徑路分析等重要任務(wù)。在技術(shù)選型方面,采用Bootstrap 作為前端框架,實現(xiàn)了主界面布局的自適應(yīng)和元素動態(tài)渲染;借鑒JavaScript 原生的面向?qū)ο笏枷?,實現(xiàn)了對路網(wǎng)展示、車站定位、徑路分析、車流分析等方法的封裝,提高了代碼的開發(fā)效率和可維護性;運用D3矢量圖形技術(shù),實現(xiàn)了路網(wǎng)矢量圖的拖動和縮放,以及圓、線、路徑、字型的快速鋪畫,滿足了全路相關(guān)業(yè)務(wù)部門對路網(wǎng)展示、數(shù)據(jù)檢索、車流徑路[8]、環(huán)狀徑路、支點徑路和車流分析等功能需求。平臺展示模塊的車流徑路如圖6所示,環(huán)狀徑路如圖7所示,支點徑路如圖8所示。
圖6 車流徑路Fig.6 Train flow route
圖7 環(huán)狀徑路Fig.7 Ring path
圖8 支點徑路Fig.8 Pivot path
車流徑路公共技術(shù)服務(wù)平臺于2021 年部署測試運行,是全路首次以網(wǎng)頁方式實現(xiàn)車流徑路的可視化分析。目前,全路各專業(yè)測試用戶已達1 500 余人,同時為95306 網(wǎng)和中鐵特貨物流股份有限公司(以下簡稱“中鐵特貨”)相關(guān)應(yīng)用系統(tǒng)提供了車流徑路數(shù)據(jù)服務(wù)。
車流徑路公共技術(shù)服務(wù)平臺的全路測試用戶主要涵蓋貨運、調(diào)度、運輸、統(tǒng)計、財務(wù)和信息等專業(yè),平臺各功能一是解決了路網(wǎng)和徑路可視化展示問題,二是能夠快速定位復(fù)雜路網(wǎng)中的車站和線路,三是能夠?qū)嚵骱蛷铰愤M行深度的可視化分析,提高了業(yè)務(wù)人員的工作效率。
該平臺在2021 年全路《貨車車流徑路》(鐵貨[2021]58 號)和《貨物列車編組計劃》(鐵運函[2021]137號)規(guī)章的制定和執(zhí)行工作中發(fā)揮了關(guān)鍵作用,最大程度統(tǒng)一了各鐵路局集團公司相關(guān)專業(yè)人員對車流徑路的理解和認(rèn)知,鐵路局集團公司編組計劃制定人員利用該平臺僅需1 d 即可完成編組站組號范圍的界定,以往則需數(shù)天以上。目前平臺運行穩(wěn)定,日均訪問量在5 000次以上。
車流徑路公共技術(shù)服務(wù)平臺為95306 網(wǎng)貨運全程追蹤和中鐵特貨機保車走行公里等應(yīng)用提供了徑路數(shù)據(jù)服務(wù),利用Socket 客戶端實現(xiàn)了Java 和C#等語言的實時遠(yuǎn)程調(diào)用,并可根據(jù)應(yīng)用需求返回里程、線路等級里程、內(nèi)燃電力里程、分界口、經(jīng)由站等多種數(shù)據(jù)集,同時在海量高并發(fā)訪問時保持了穩(wěn)定與高效,目前日均數(shù)據(jù)訪問量超過50 萬次。95306 網(wǎng)貨運全程追蹤應(yīng)用如圖9所示。
圖9 95306網(wǎng)貨運全程追蹤應(yīng)用Fig.9 Freight tracking application on 95306 net
車流徑路公共技術(shù)服務(wù)平臺為中鐵特貨車輛動態(tài)追蹤應(yīng)用提供了可視化服務(wù),能夠直觀反映中鐵特貨車輛動態(tài)分布、停留狀態(tài),以及單個載重車輛已經(jīng)過的軌跡和未來將要經(jīng)過的線路。車輛動態(tài)追蹤應(yīng)用如圖10所示。
圖10 車輛動態(tài)追蹤應(yīng)用Fig.10 Trains dynamic tracking application
車流徑路公共技術(shù)服務(wù)平臺較好地解決了車流徑路可視化分析和全路數(shù)據(jù)同步問題。下一步,平臺將在可視化展示、徑路分析、Socket 服務(wù)、可視化服務(wù)等方面繼續(xù)深化技術(shù)研究,為全路相關(guān)專業(yè)人員和應(yīng)用系統(tǒng)提供更便捷的操作方法、更高效的響應(yīng)速度、更豐富的功能支撐,為新時期中國鐵路運輸高質(zhì)量發(fā)展做出新的更大的貢獻。