楊 將,鄧永祁,鄧國知
(湖南中車時代通信信號有限公司,長沙 410005)
隨著科學(xué)技術(shù)不斷發(fā)展與創(chuàng)新,鐵路的信息化已逐漸走向成熟,在此背景下,綜合型、企業(yè)級系統(tǒng)應(yīng)用進(jìn)一步深化。在中國國家鐵路集團(tuán)有限公司發(fā)布的《鐵路信息化總體規(guī)劃》及《鐵路“十三五”發(fā)展規(guī)劃》中提到,到2020 年,將在全路建成具有中國特色的鐵路運(yùn)輸信息系統(tǒng),鐵路建設(shè)的加快已然導(dǎo)致鐵路信息化建設(shè)的加快。目前LKJ 設(shè)備運(yùn)行監(jiān)測管理系統(tǒng)(LMD 系統(tǒng))已完成車地?cái)?shù)據(jù)傳輸、采集、分析和應(yīng)用于一體,具備海量數(shù)據(jù)的獲取能力。為進(jìn)一步深化服務(wù)能力,建立集監(jiān)測、控制和管理決策為一體的智能化信息系統(tǒng)。LMD 系統(tǒng)在保持LAIS 系統(tǒng)基本結(jié)構(gòu)、應(yīng)用功能和技術(shù)體系完整性的基礎(chǔ)上,通過對既有LAIS 車載設(shè)備改造或采用TSC2 設(shè)備,建立互聯(lián)網(wǎng)環(huán)境中云數(shù)據(jù)中心的數(shù)據(jù)接收、處理、分發(fā)機(jī)制等,實(shí)現(xiàn)LKJ 設(shè)備運(yùn)行狀態(tài)和數(shù)據(jù)版本運(yùn)用狀態(tài)的實(shí)時監(jiān)測和管理,并為鐵路運(yùn)輸及相關(guān)作業(yè)提供管理信息支持,確保LKJ 系統(tǒng)設(shè)備的穩(wěn)定運(yùn)行和安全風(fēng)險的有效管控。
LMD 系統(tǒng)通過遠(yuǎn)程無線傳輸裝置實(shí)現(xiàn)實(shí)時監(jiān)測機(jī)車運(yùn)行狀態(tài)、車載設(shè)備質(zhì)量、LKJ 數(shù)據(jù)版本、數(shù)據(jù)換裝、機(jī)車檢測與檢修狀態(tài)。系統(tǒng)地面服務(wù)器與車載終端進(jìn)行實(shí)時海量的數(shù)據(jù)交互,隨著鐵路局機(jī)車數(shù)量、系統(tǒng)功能與交互數(shù)據(jù)量不斷增加,數(shù)據(jù)庫訪問操作頻率上升,導(dǎo)致數(shù)據(jù)庫與系統(tǒng)性能出現(xiàn)瓶頸,車地?cái)?shù)據(jù)交互隊(duì)列堵塞與系統(tǒng)訪問卡頓。因此,本文設(shè)計(jì)基于RMI 分布式技術(shù)的LMD 系統(tǒng)性能優(yōu)化與實(shí)現(xiàn),應(yīng)用RMI 分布式技術(shù),提升系統(tǒng)數(shù)據(jù)交互操作性能、訪問體驗(yàn)。
LMD 系統(tǒng)技術(shù)結(jié)構(gòu)共分為6 層,可視層、控制層、業(yè)務(wù)層、支撐層、數(shù)據(jù)層以及基礎(chǔ)設(shè)施層。如圖1 所示,可視層主要采用BootStrap 前端框架、Html5、Javascript 和css3 技術(shù),在Web 端實(shí)現(xiàn)數(shù)據(jù)渲染。控制層通過攔截分發(fā)器轉(zhuǎn)發(fā)前端發(fā)送的請求,并把業(yè)務(wù)層處理完的響應(yīng)返回到前端,其通過數(shù)據(jù)適配插件適配表現(xiàn)層與業(yè)務(wù)層的差異。業(yè)務(wù)層Spring 為后臺提供事務(wù)與Bean 管理接口,通過IOC 的注解方式實(shí)現(xiàn)Bean 的解析和管理。在支撐層部署分布式RMI 服務(wù),為業(yè)務(wù)層與數(shù)據(jù)層之間的高并發(fā)數(shù)據(jù)交互與訪問提供高效服務(wù)。同時,借助Spring 的優(yōu)勢,系統(tǒng)降低了業(yè)務(wù)對象替換的復(fù)雜性,提高了組件之間的解耦。基于Hibernate 框架的支撐層通過水平和垂直分庫支持大數(shù)據(jù)量處理。

圖1 LMD系統(tǒng)技術(shù)架構(gòu)圖Fig.1 Technological architecture diagram of LMD system
遠(yuǎn)程方法調(diào)用(Remote Method Invocation,RMI)是J2EE 中一項(xiàng)非常重要的技術(shù),能夠?qū)崿F(xiàn)遠(yuǎn)程過程調(diào)用 (Remote Procedure Call,RPC),便于Java 分布式應(yīng)用程序開發(fā),高吞吐業(yè)務(wù)功能解耦與分布式部署。
它使得Java 程序之間能夠?qū)崿F(xiàn)靈活的、可擴(kuò)展的分布式通信。RMI 允許對象存在于多個指定地址空間,分布在不同的Java 虛擬機(jī)上。每個指定地址空間可以在同一計(jì)算機(jī)上或網(wǎng)上的不同計(jì)算機(jī)上。RMI 為Java 對象的分布式計(jì)算提供了一個簡單而直接的模型,可以把代理和業(yè)務(wù)邏輯遷移到最具有存在意義的網(wǎng)絡(luò)節(jié)點(diǎn)上。
如圖2 所示,為提升系統(tǒng)數(shù)據(jù)交互操作性能、訪問體驗(yàn),以RMI 分布式技術(shù)部署車地?cái)?shù)據(jù)交互服務(wù)、機(jī)車運(yùn)行數(shù)據(jù)服務(wù)、機(jī)車定位糾偏服務(wù)、車載設(shè)備監(jiān)測服務(wù)。車地?cái)?shù)據(jù)交互服務(wù)作為地面通信軟件的載體不斷接收大量機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備運(yùn)行數(shù)據(jù)和向車載無線傳輸裝置轉(zhuǎn)發(fā)系統(tǒng)指令,涉及海量數(shù)據(jù)計(jì)算、數(shù)據(jù)處理以及與數(shù)據(jù)持久層頻繁讀寫操作。機(jī)車運(yùn)行數(shù)據(jù)服務(wù)通過與機(jī)車定位糾偏服務(wù)交互完成機(jī)車定位,車載設(shè)備監(jiān)測服務(wù)對車載設(shè)備運(yùn)行狀態(tài)實(shí)時監(jiān)測,對車載設(shè)備故障與隱患進(jìn)行報警。

圖2 系統(tǒng)分布式部署結(jié)構(gòu)圖Fig.2 Distributed deployment structure diagram of LMD system
隨著LMD 系統(tǒng)在全路全面推廣運(yùn)用,同時車載TSC2 設(shè)備運(yùn)用數(shù)量急劇增加,LMD 系統(tǒng)的車地?cái)?shù)據(jù)交互、機(jī)車運(yùn)行數(shù)據(jù)計(jì)算、車載設(shè)備監(jiān)測等功能的性能急劇下降。為解決系統(tǒng)性能瓶頸,本文旨在設(shè)計(jì)基于RMI 分布式的LMD 系統(tǒng)性能優(yōu)化與實(shí)現(xiàn),采用RMI 技術(shù)分布式車地?cái)?shù)據(jù)交互服務(wù)、機(jī)車運(yùn)行數(shù)據(jù)服務(wù)、機(jī)車定位糾偏服務(wù)和車載設(shè)備監(jiān)測服務(wù)到不同的服務(wù)器,并分別在各服務(wù)器采用緩存技術(shù)實(shí)現(xiàn)車地通信交互數(shù)據(jù)、機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備監(jiān)測數(shù)據(jù)的緩存,從而解決LMD 系統(tǒng)原有架構(gòu)設(shè)計(jì)弊端,避免數(shù)據(jù)持久層不斷大量讀寫和單服務(wù)器性能受限的問題,提高LMD 系統(tǒng)的整體性能。
如圖3 所示,系統(tǒng)采用3 層結(jié)構(gòu)模式實(shí)現(xiàn)RMI。在整個體系結(jié)構(gòu)中,客戶端通過本地Java虛擬機(jī)環(huán)境下的樁對象遠(yuǎn)程調(diào)用服務(wù)端的對象方法。

圖3 RMI模型Fig.3 RMI model
1)遠(yuǎn)程調(diào)用過程
a.客戶端查詢服務(wù)端的注冊表并獲取遠(yuǎn)程對象引用。客戶端通過調(diào)用本地JAVA虛擬機(jī)環(huán)境的樁對象,傳遞遠(yuǎn)程對象方法的序列化參數(shù)到本地遠(yuǎn)程引用層。
b.樁對象與遠(yuǎn)程對象保持完全一致的接口,客戶端通過調(diào)用相應(yīng)的樁對象完成遠(yuǎn)程對象方法調(diào)用。遠(yuǎn)程引用層在將樁對象的本地引用轉(zhuǎn)換為服務(wù)端的遠(yuǎn)程對象的遠(yuǎn)程引用之后,將調(diào)用過程傳遞給傳輸層,由傳輸層通過TCP 協(xié)議發(fā)送調(diào)用。

圖4 車地?cái)?shù)據(jù)交互流程圖Fig.4 Vehicle-ground data interaction flowchart
c.服務(wù)端傳輸層監(jiān)聽入站連接,接收客戶端遠(yuǎn)程調(diào)用,轉(zhuǎn)發(fā)調(diào)用至服務(wù)端遠(yuǎn)程引用層。
d.遠(yuǎn)程引用層轉(zhuǎn)換客戶端遠(yuǎn)程引用為本地Java 虛擬機(jī)的引用,并轉(zhuǎn)發(fā)到服務(wù)端骨架。
e.骨架讀取并傳遞引用的參數(shù),服務(wù)端接收參數(shù),調(diào)用實(shí)際對象方法。
2)結(jié)果返回過程
a.如果遠(yuǎn)程方法調(diào)用后有返回值,則服務(wù)端將方法執(zhí)行結(jié)果沿“骨架”“傳輸層”向下傳遞。
b.客戶端的傳輸層接收到返回值后,沿“傳輸層”“樁”向上傳遞,樁對象反序列化返回值,傳遞至客戶端程序。
LMD 系統(tǒng)分布式服務(wù)主要由車地?cái)?shù)據(jù)交互服務(wù)、機(jī)車運(yùn)行數(shù)據(jù)服務(wù)、機(jī)車定位糾偏服務(wù)和車載設(shè)備監(jiān)測服務(wù),如圖2 所示,取締系統(tǒng)功能模塊集中式部署,不同服務(wù)之間通過RMI 遠(yuǎn)程調(diào)用訪問資源。與此同時,各服務(wù)采用緩存技術(shù),經(jīng)過計(jì)算和處理的數(shù)據(jù)均緩存在內(nèi)存中,不同業(yè)務(wù)的服務(wù)數(shù)據(jù)計(jì)算和數(shù)據(jù)交互效率高。
2.2.1 車地?cái)?shù)據(jù)交互
車地交互數(shù)據(jù)主要包括機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備運(yùn)行數(shù)據(jù)、LKJ 運(yùn)行文件。車載無線傳輸裝置TSC 不斷向車地?cái)?shù)據(jù)交互服務(wù)的地面ICS 通信程序發(fā)送機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備運(yùn)行數(shù)據(jù),數(shù)據(jù)處理程序DPS 接收、實(shí)時計(jì)算和處理ICS 通信轉(zhuǎn)發(fā)的數(shù)據(jù),并緩存運(yùn)算結(jié)果與數(shù)據(jù)。與此同時,TSC 與ICS 通過3 次握手協(xié)議傳輸車載LKJ 運(yùn)行文件。
如圖4 所示,車地?cái)?shù)據(jù)交互流程設(shè)計(jì)如下:
Step1:TSC 向地面ICS 發(fā)送機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備運(yùn)行數(shù)據(jù),轉(zhuǎn)Step2。否則轉(zhuǎn)Step4;
Step2:地面ICS 轉(zhuǎn)發(fā)機(jī)車運(yùn)行數(shù)據(jù)、車載設(shè)備運(yùn)行數(shù)據(jù)給DPS,轉(zhuǎn)Step3;
Step3:DPS 計(jì)算處理車載數(shù)據(jù)并緩存;
Step4:TSC 通知地面ICS 產(chǎn)生新LKJ 運(yùn)行文件,轉(zhuǎn)Step5;
Step5:ICS 轉(zhuǎn)發(fā)新文件標(biāo)志給DPS,轉(zhuǎn)Step6;
Step6:DPS 通過ICS 發(fā)送下載目錄文件命令,轉(zhuǎn)Step7;
Step7:TSC 收到下載命令,下載目錄文件,轉(zhuǎn)Step8;
Step8:DPS 更新目錄文件對應(yīng)記錄的下載狀態(tài),并傳輸目錄文件到地面,轉(zhuǎn)Step9;
Step9:解析目錄文件后,DPS 通過ICS 向TSC 請求未下載的新LKJ 文件,轉(zhuǎn)Step10;
Step10:TSC 向 地 面 傳 輸LKJ 文 件, 轉(zhuǎn)Step11;
Step11:DPS 更新下載文件狀態(tài),轉(zhuǎn)Step12;Step12:DPS 緩存文件與下載結(jié)果。
2.2.2 機(jī)車運(yùn)行數(shù)據(jù)處理

圖5 機(jī)車運(yùn)行數(shù)據(jù)處理流程圖Fig.5 Locomotive operation data processing flowchart
機(jī)車運(yùn)行數(shù)據(jù)服務(wù)從車地?cái)?shù)據(jù)交互服務(wù)接收機(jī)車數(shù)據(jù)進(jìn)行處理。如圖5 所示,系統(tǒng)通過將接收數(shù)據(jù)與緩存數(shù)據(jù)遍歷,對比判斷機(jī)車信息是否已緩存。未緩存的機(jī)車運(yùn)行數(shù)據(jù)通過計(jì)算處理與定位糾偏后緩存到內(nèi)存,已緩存的機(jī)車運(yùn)行數(shù)據(jù)經(jīng)過比對與處理后緩存到內(nèi)存。
如圖5 所示,機(jī)車運(yùn)行數(shù)據(jù)處理流程設(shè)計(jì)如下:
Step1:接收車地交互數(shù)據(jù),轉(zhuǎn)Step2;
Step2:緩存中存在機(jī)車數(shù)據(jù),轉(zhuǎn)Step3。否則轉(zhuǎn)Step9;
Step3:從緩存讀取機(jī)車信息,轉(zhuǎn)Step4;
Step4:交互機(jī)車經(jīng)緯度大于0 且緩存中存在該機(jī)車,轉(zhuǎn)Step5。否則轉(zhuǎn)Step7;
Step5:取出緩存機(jī)車信息,若緩存機(jī)車時間等于交互機(jī)車時間轉(zhuǎn)Step6。否則轉(zhuǎn)Step8;
Step6:加入機(jī)車運(yùn)行數(shù)據(jù)緩存隊(duì)列;
Step7:若經(jīng)緯度大于0 或機(jī)車非出入庫狀態(tài)時,線路號和公里標(biāo)均大于0,轉(zhuǎn)Step8。否則轉(zhuǎn)Step6;
Step8:調(diào)用機(jī)車定位糾偏服務(wù)對機(jī)車定位進(jìn)行糾偏,轉(zhuǎn)Step6;
Step9:訪問數(shù)據(jù)庫獲取機(jī)車信息, 轉(zhuǎn)Step10;
Step10:若經(jīng)緯度大于0 或機(jī)車非出入庫狀態(tài)時,線路號和公里標(biāo)均大于0,轉(zhuǎn)Step11。否則轉(zhuǎn)Step12;
Step11:調(diào)用機(jī)車定位糾偏服務(wù)對機(jī)車定位進(jìn)行糾偏,轉(zhuǎn)Step12;
Step12:加入機(jī)車運(yùn)行數(shù)據(jù)緩存隊(duì)列。
2.2.3 機(jī)車定位糾偏
在機(jī)車運(yùn)行數(shù)據(jù)處理的過程中,需要對機(jī)車GPS 定位進(jìn)行糾偏,機(jī)車運(yùn)行數(shù)據(jù)服務(wù)通過RMI遠(yuǎn)程調(diào)用機(jī)車定位糾偏服務(wù)的對象方法,查找sqlite 數(shù)據(jù)庫的鐵路數(shù)據(jù)(線路號、信號機(jī)、前方距離、上下行和里程),計(jì)算糾正經(jīng)緯度。
如圖6 所示,機(jī)車定位糾偏流程設(shè)計(jì)如下:

圖6 機(jī)車地理位置糾偏流程圖Fig.6 Locomotive location correction flowchart
Step1:機(jī)車經(jīng)緯度為0 轉(zhuǎn)Step2。否則轉(zhuǎn)Step3;
Step2:查找sqlite 數(shù)據(jù)庫鐵路數(shù)據(jù)中距離機(jī)車經(jīng)緯度最近的點(diǎn)集合,轉(zhuǎn)Step4;
Step3:根據(jù)機(jī)車線路號、上下行和里程查找線路數(shù)據(jù)最近的點(diǎn)集合,轉(zhuǎn)Step4:
Step4:根據(jù)數(shù)學(xué)模型計(jì)算距離最近的最佳點(diǎn)。
2.2.4 車載設(shè)備監(jiān)測
如圖7 所示,車載設(shè)備監(jiān)測服務(wù)通過不斷接收和實(shí)時分析車地交互的車載設(shè)備運(yùn)行數(shù)據(jù)(工況、信號機(jī)、前方距離、公里標(biāo)等),將存在運(yùn)行故障和隱患的設(shè)備數(shù)據(jù)形成報警緩存在內(nèi)存中,并向Web服務(wù)及系統(tǒng)使用者推送報警數(shù)據(jù),提升車載設(shè)備運(yùn)用質(zhì)量、減少機(jī)車行車安全問題。

圖7 車載設(shè)備監(jiān)測流程圖Fig.7 Onboard equipment monitoring flowchart
基于RMI 分布式的LMD 系統(tǒng)性能優(yōu)化與實(shí)現(xiàn),在現(xiàn)有LMD 系統(tǒng)架構(gòu)下,通過采用RMI 分布式技術(shù),實(shí)現(xiàn)LMD 系統(tǒng)整體性能的提高。通過按照設(shè)計(jì)的RMI 分布式系統(tǒng)結(jié)構(gòu)重新部署LMD 系統(tǒng),系統(tǒng)的車地?cái)?shù)據(jù)交互、機(jī)車運(yùn)行數(shù)據(jù)計(jì)算處理、車載設(shè)備監(jiān)測性能瓶頸得到解決,實(shí)現(xiàn)車地?cái)?shù)據(jù)高效交互、機(jī)車運(yùn)行數(shù)據(jù)和車載設(shè)備運(yùn)行數(shù)據(jù)快速實(shí)時處理。目前,經(jīng)過優(yōu)化的LMD 系統(tǒng)已在南昌、沈陽、蘭州、濟(jì)南等鐵路局部署運(yùn)行,運(yùn)用效果良好。基于RMI 分布式的系統(tǒng)設(shè)計(jì)為其他應(yīng)用系統(tǒng)擴(kuò)展業(yè)務(wù)功能提供了接口,且基于RMI 分布式設(shè)計(jì)方法為今后鐵路信息化開發(fā)領(lǐng)域提供了新的設(shè)計(jì)思路。