吳興華
(中國鐵道科學研究院 電子計算技術研究所,北京 100081)
隨著我國高鐵客運網絡的快速發展,鐵路旅客服務系統集成平臺(簡稱:旅服平臺)已經在全路各高鐵車站上線應用,已成為車站最為重要的生產系統之一。旅服平臺以向工作人員和旅客提供綜合的生產服務和旅客服務為目標,自動接入調度、客票等外部信息,按照統一的接口標準把分離的廣播、導向、視頻、檢票、查詢、寄存和時鐘等子系統深度集成,提供綜合業務操作,實現信息共享和功能聯動,提高旅客服務的信息化和自動化水平。
目前,旅服平臺現有業務處理方式主要采用業務與服務一對一的消息驅動模式進行控制,即到發管理服務在業務發生時,向廣播、引導、檢票、接口等子系統數據表發送消息,各子系統按照預編譯既定的業務規則進行業務處理,并對底層系統控制器進行控制。系統流程,如圖1所示。
此種控制模式下,各子系統數據訪問、業務處理相對獨立,并無統一的中間環節監控,因此,系統在整體擴展性、響應及時性、可重用性、穩定性方面存在一定的不足。
隨著我國互聯網、人工智能等新技術的不斷成熟和在客運車站應用的不斷深入,旅服系統的更新擴展也在不斷加快。而目前,旅服平臺業務規則均由各子系統應用服務進行預處理,無論旅服系統進行橫向擴展(如:新增業務)還是縱向擴展(如:子系統業務增加或變更),都需要重新進行代碼編譯,擴展較為復雜。

圖1 旅服平臺業務流程
目前,旅服平臺控制廣播、引導、檢票等子系統響應時間一般要求<2 s,精確度一般要求1 s以內[1]。而系統采用消息驅動方式進行業務處理,各子系統業務規則處理情況各不相同,在一些極端特殊情況下,很難保證系統響應的及時性。
旅服平臺系統業務規則處理由各子系統服務完成,而各子系統規則各不相同,對于其他業務可重用性較差。
為保證車站旅服業務的順利進行,旅服平臺一般要求7×24 h運行[1],目前,旅服平臺業務規則處理由各子系統服務完成,一旦子系統業務程序報錯停止,整個業務會受到影響,穩定性無法保障。
綜上所述,旅服平臺急需對架構進行優化,設計一套高可擴展、高精度、高穩定性的平臺架構。OA架構具有業務流程編排高靈活性、易擴展性、高可重用性等特點,本文從旅服平臺核心業務驅動著手,設計實現一套針對旅服集成平臺應用服務的中間件,以滿足車站日常旅客服務和客運組織的需求。
面向服務架構(SOA,Service-Oriented Architecture)是指為解決在互聯網環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種軟件架構。它不是一種語言,也不是一種具體的技術,而是一種架構模式,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。這使得構建在各種這樣的系統中的服務可以一種統一和通用的方式進行交互[2]。SOA連接結構如圖2所示[3-4]。該結構,描述了面向服務的體系結構的角色、操作和基本構件。

圖2 SOA連接結構圖
SOA體系結構中的角色包括[5]:
(1)服務請求者; (2)服務提供者;(3)服務代理。
SOA體系結構中的操作包括[6]:
(1)發布;(2)查找和綁定。
SOA體系結構中的構件包括[6]:
服務和服務描述。
SOA層次模型描述了SOA運行時的概念視圖,它用一個分層的體系結構展現了SOA計算體系中所需的主要概念元素及其相互關系,用于指導SOA解決方案架構的設計[7-8]。包括:展現層、流程編排層、服務層、組件層和應用層,如圖3所示。

圖3 SOA層次模型
SOA層次模型具有以下特點[7-8]:
(1)靈活性強、組件化程度高;
(2)易于演化擴展;
(3)易于跟蹤和測試;
(4)可重用性好。
旅服平臺作為一個高度集成的信息系統,其內部子系統均通過到發業務驅動,且業務各有特點,非常適合采用SOA架構整合優化。
通過分析旅服平臺現有的業務情況,文章結合SOA建模思想,設計新的旅服中間件及業務模型,如圖4所示。

圖4 基于SOA的旅服中間件及業務模型架構圖
整個服務層包括:SOA發布中間件、應用服務以及傳輸協議。其中,SOA發布中間件具有UDDI注冊、業務流程編排等功能,中間件獲取旅服業務服務注冊按業務規則需要進行業務流程編排,并進行服務發布,保證前端展示層設備和應用服務能夠查找到需求的業務服務。同時,應用服務采用虛擬化集群方式建設,保障在業務流程編排和業務分配過程中有足夠的服務滿足應用需求。另外,服務層與展示層通過WebService、TCP、OKHTTP/WEX5等協議進行數據交互,滿足前端操作與展示需求。
展示層主要包括:旅服平臺、廣播、引導等旅服系統前端操作展示設備,它通過服務層查找獲取相應的服務滿足日常業務需求。
基礎數據層主要包括:數據庫、數據處理中間件、操作系統等,主要為旅服業務提供支撐服務。
通過基于SOA的旅服中間件設計,新的旅服業務流程,如圖5所示。

圖5 SOA架構下旅服業務流程
(1)包括虛擬應用服務集群的業務服務1至業務服務N均在SOA發布中間件進行注冊。
(2)前端業務情況通過數據庫中間件進行數據庫訪問,進行數據狀態增刪改查。
(3)所有業務變化通過數據庫觸發方式發送給SOA中間件,中間件根據業務規則對已注冊的應用服務進行編排并進行業務分配。
(4)實現前端設備或系統控制器的控制。
基于SOA的旅服平臺中間件采用.NET框架進行設計,數據交互采用SOAP格式,利用Web-Service、TCP、OKHTTP/WEX5等協議進行數據交互。核心代碼如下:
public abstract class RunTimeTrigger : RunTimeTcp-Client, IRunTime
{
public abstract bool RunTimeP(DateTime dt);
public virtual void Ini() { }
public virtual bool NonPractice() { return true; }
public virtual bool cmdProc() { return true; }
public delegate bool tcpReceiveHandler(trigtpara bytes);
public event tcpReceiveHandler tcpReceive;
public RunTimeTrigger()
{
timer.Interval = 5000;
timer.Elapsed += new System.Timers.ElapsedEventHa ndler(Connection);
timer.AutoReset = true;
ct.tcpReceive += new ClientThread.tcpReceiveHandler(tcpClientReceive);
}
public bool isMainFine = false;
void timerTcp_Elapsed(object sender, System.Timers.
ElapsedEventArgs e)
{
isMainFine = DA.isMianFine();
}
}
整體實現效果如圖6、圖7所示,其中,圖6主要展示中間件服務注冊內容,圖7主要展示中間件流程編排和服務處理內容。

圖6 中間件注冊服務內容

圖7 中間件流程編排和服務處理內容
優化后的旅服平臺在整體擴展性、響應及時性、可重用性、穩定性方面均有很大的提高。和優化前的系統對比,特點如表1所示。

表1 優化前后旅服平臺性能對比
目前,該中間件已經在中國鐵路昆明局集團有限公司滬昆線和云桂線、中國鐵路呼和浩特局集團有限公司呼張線旅服平臺上應用,應用效果良好。
基于SOA中間件優化的旅服平臺從各方面性能均得到了極大的提升,同時,業務未來旅服系統橫向和縱向發展提供了技術基礎。
(1)極大程度提高了新的信息系統接入效率,在互聯網條件下,可快速兼容如微信公眾號、手機app、物聯網監測設備等業務管理。
(2)未來可利用大數據智能分析算法進一步優化業務流程編制過程,進一步提高旅服系統的性能。
參考文獻:
[1]國家鐵路局.鐵路客運服務信息系統設計規范: TB 10074-2016[S]. 北京:國家鐵路局,2016.
[2]孫華林,趙正文.基于WebService的面向服務架構(SOA)的探索與研究[J]. 信息技術,2007(1):50-53.
[3]鄭秋寧,嚴云松. 基于SOA的開放式車務綜合信息平臺架構研究[J]. 鐵路計算機應用,2010,19(12):25-29.
[4]楊國元,史天運. 鐵路客運管理信息系統總體架構及關鍵技術研究[J]. 鐵路計算機應用,2016,25(3):22-25.
[5]王煥民,陳治理. 基于SOA及Web服務的鐵路信息集成系統開發[J]. 鐵路計算機應用,2009,18(6):17-20.
[6]黎 英. 基于SOA的鐵路信息共享系統研究[J]. 鐵路計算機應用,2009,18(8):5-8.
[7]李 軍. 一種基于SOA架構的中間件平臺的研究與實現[D].哈爾濱:哈爾濱理工大學,2008.
[8]張 春. SOA建模方法研究[D]. 重慶:重慶郵電大學,2011.