王雪峰,閻志遠,翁湦元
(中國鐵道科學研究院集團有限公司,北京 100081)
高鐵Wi-Fi運營服務系統主要目標是為旅客提供一個便捷高效、安全穩定的Wi-Fi上網環境,同時提供本地化的休閑娛樂服務,進一步提升旅客的出行體驗。該系統由地面Wi-Fi服務子系統、列車Wi-Fi服務子系統兩部分組成。在地面集中式機房,使用虛擬化技術搭建了云服務平臺,采用集群方式進行部署。每列車安裝一個車載中心服務器,每節車廂搭載一個車載單車服務器和兩個雙頻AP。旅客終端連接到車載AP發射的無線熱點后,即可通過網頁或手機APP瀏覽本地內容和視頻資源,當用戶完成注冊和登錄認證后,可以享受便捷的上網服務。
旅客在列車上可以通過手機、PAD、筆記本電腦等設備接入高鐵Wi-Fi運營服務系統,在行程中可以查看列車時刻表、正晚點信息、檢票口信息等,同時可以管理自己的當前和歷史行程。在行李較多或身體不便時,預訂目的地車站的小紅帽、行李搬運服務,方便旅客進出站。在車上預訂餐飲服務、VIP定制服務、約車、拼車服務,并可以對其服務進行評價,促進商品與服務質量的提升。
通過高鐵Wi-Fi運營服務系統提供的休閑服務可以滿足旅客在乘車過程中的文化娛樂消費,如:旅途朋友圈、旅途見聞分享、新聞資訊、高鐵影院、應用下載、游戲娛樂、電子書籍閱讀、旅游產品和景點推介等,豐富旅客的旅途生活。
旅客通過購買上述產品和服務、以及在線時長獲得相應的積分,當積分累積到一定數量后,可以兌換相應的產品和服務。
(1)可擴展性
高鐵Wi-Fi運營服務系統支持各種接口協議,使系統具有高度靈活性和良好的可擴展性。支持多種硬件設備和網絡系統的接入或輸出。具有與其他相關信息系統進行數據交換和數據共享的能力。
系統方便添加擴展新功能,擴展后新舊系統之間具有良好的集成性,仍能滿足業務要求的性能和可靠性。采用微服務架構設計,系統某個服務負載飽和時,能支持快速進行水平和垂直擴展。
(2)易用性
高鐵Wi-Fi運營服務系統用戶界面應采用簡潔易用的風格、用戶交互體驗良好,操作時給用戶合適的提示信息,盡量為用戶使用提供方便。
當車地間的網絡中斷后,系統能自動檢測網絡狀況,并為用戶進行友好提示。
高鐵Wi-Fi運營服務系統的地面集中平臺包含十幾個業務子系統,采用單體式架構模式,即將程序的所有模塊打包成單一應用,每個應用是最小的交付部署單元,應用部署后運行在同一進程中。單體應用的另一個好處是易于部署,只需把應用復制到服務器端,通過負載均衡器將請求轉發到后臺的多個應用即可實現擴展。
但隨著業務和運營需求的不斷迭代,這種方法有很大的局限性,代碼量越來越大,結構也變得越來越復雜。致使代碼難于維護,其中,運營管理子系統先后由不同開發人員對代碼進行修改,以至于單個開發者添加或修改新功能時變得異常困難。單體應用降低了開發速度,需要花費很長時間重啟應用,效率受到很大影響。此外,單體應用可靠性較低。運營管理子系統所有模塊均運行在一個進程中,當任何一個模塊出現異常時,都會影響到整個應用運行。所以對高鐵Wi-Fi運營服務系統各地面平臺子系統的微服務化改造變得勢在必行。
微服務是一個大型應用,由一個或多個微服務構成。各微服務可單獨部署,服務之間松耦合[1]。各服務可伸縮和擴展,服務定義了明確的邊界,不同服務間甚至可使用不同編程語言來實現。
與傳統的單體架構相比,微服務架構有以下優點:(1)通過分解單體應用為多個服務解決了復雜性問題。每個服務都有一個消息驅動程序來定義。微服務模式給采用單體應用編碼方式很難實現的功能提供了模塊化解決方案,使得單個服務變得易于開發、維護和理解[2]。(2)微服務架構中每個微服務都可以獨立部署。開發者無需協調其它服務部署對該服務的影響。這種方式的好處是可實現應用的快速部署。同時也使微服務架構持續部署成為可能。(3)微服務架構可使每個服務獨立擴展。可根據各服務需求訪問量動態調整部署規模,合理地分配硬件資源。但單體應用的擴展就只能將整個應用統一部署,此種方式缺點是對于處理業務需求規模不大的模塊也會被部署成多個實例,進而造成硬件資源的浪費[3]。
高鐵Wi-Fi運營服務系統的邏輯架構采用分層架構設計模式,系統邏輯結構分為軟件即服務(SAAS)平臺層、平臺即服務(PAAS)平臺層、基礎設施即服務(IAAS)平臺層,其中,SAAS平臺層又分為業務服務層、應用展示層、接入層3部分。本文微服務架構設計主要是針對業務服務層,重新對已有的服務進行拆分,為應用展示層提供接口支持。系統邏輯架構如圖1所示。
(1)接入層
接入層指直接面向用戶連接或訪問的部分。包括Web接入服務、接口服務、靜態資源服務。Web接入服務為終端提供了HTML 5頁面請求接入和分發功能。接口服務又分為終端APP應用接口和第三方應用接口服務。靜態資源服務提供了圖片、CSS等資源文件的訪問功能。
(2)應用展示層
應用展示層主要包括所有和用戶直接交互的界面和接口,以及針對不同的用戶終端,提供了不同的展現形式。
(3)業務服務層

圖1 系統邏輯架構圖
業務服務層是整個系統的核心,與業務需求相關。微服務主要是針對業務服務層進行的改造,將不同業務類型進行拆分,使業務能夠快速實現,而服務的改變并不會影響到業務,這樣系統應用也會更加穩定。
(4)基礎服務層
基礎服務層提供了平臺級的公共服務,包括緩存服務、數據同步服務、分布式文件存儲服務等。
(5)基礎設施層
基礎設施層包括硬件服務器、操作系統、網絡、以及數據庫等底層資源。采用了虛擬化技術,將各種資源進行整合,為上層服務提供了最基本的資源保障[4]。
采用微服務架構,可根據不同業務類型,系統被拆分成多個相對獨立的模塊,所以合理劃分系統模塊很重要。由于高鐵Wi-Fi運營業務相對復雜,系統可劃分為用戶中心、消息中心、列車管理、內容展示、廣告服務、用戶積分、運營管理、資產管理、數據采集、數據下發、內容維護等微服務,微服務間通過API接口關聯,通信協議一般使用HTTP,數據格式為JSON。微服務架構如圖2所示。

圖2 系統微服務架構圖
當客戶端向應用系統發起請求時,由于微服務架構包含多個應用服務,完成一次業務操作需要發起多個HTTP請求,這會造成應用吞吐量下降,在高延遲的網絡環境下會影響用戶的操作體驗。因此,不同于單體應用,微服務架構通過添加API網關對請求統一管控[5]。
API網關負責為終端用戶提供服務接口,將客戶端的請求轉換為一組內部服務進行調用。此外,API網關還可減小客戶端與微服務的依賴性,服務器升級將不會影響客戶端。API網關可單獨開發,團隊負責開發、測試、部署、維護、擴展和升級。微服務通過API網關對外提供服務[6]。
微服務架構的服務注冊方式有兩種:服務端注冊和客戶端注冊[7]。這兩種方式都需要通過注冊中心提供注冊信息的分布式管理。當應用服務上線時,服務提供者將信息注冊到注冊中心。服務調用者通過注冊中心尋址,根據負載均衡算法找到相應的服務。當服務下線時, 注冊中心也會給客戶端發送通知。如圖3和圖4所示。

圖3 服務端注冊

圖4 客戶端注冊
微服務的注冊方式是雙向的,從微服務架構圖可以看出,當用戶中心、廣告服務、內容展示等應用服務啟動時,會主動到服務端注冊。這樣業務請求就會根據服務注冊信息找到相應的服務接口進行調用。當服務端發現長時間某個應用服務未注冊時,會主動給這個客戶端應用發送注冊請求,如果該服務是可用的,那么服務端也會自動完成該服務的注冊[8]。
截止2017年11月底,高鐵Wi-Fi運營服務系統已在“京滬線”、“京津線”、“京廣線”的40組高鐵列車上為廣大旅客提供了便捷的上網服務。目前,日均新注冊用戶數約6 000人,注冊用戶總量達到了50多萬人。系統運行平穩,得到了鐵路工作者和廣大旅客的一致好評。驗證了微服務架構在高鐵Wi-Fi運營服務系統應用中的可行性和先進性。隨著微服務架構的不斷演進,以及系統功能的不斷完善,高鐵Wi-Fi運營服務系統在提升鐵路客運服務質量方面發揮了重要作用。
[1] 王 磊.微服務架構與實踐[M].北京:電子工業出版社,2016.
[2] 崔 蔚,李春陽,劉 迪,等.面向微服務的統一應用開發平臺[J].電力信息與通信技術,2016(9):12-17.
[3] 李博文,劉鴻沈,裴延兵,等.微服務架構在企業信息化建設平臺中的應用[J].信息與電腦:理論版,2017(11):157-160.
[4] 朱建生,王明哲,楊立鵬,等.12306互聯網售票系統的架構優化及演進[J].鐵路計算機應用,2015,24(11):1-4.
[5] 李蘇璇.基于微服務架構的SaaS應用構建方法研究[D].廣州:華南理工大學,2016.
[6] 胡平芳.面向服務架構的系統研究[J].軟件導刊,2010(3):21-23.
[7] 郭 棟,王 偉,曾國蓀.一種基于微服務架構的新型云件PaaS平臺[J].信息網絡安全,2015(11):15-20.
[8] 張 晶,黃小鋒.一種基于微服務的應用框架[J].計算機系統應用,2016,25(9):265-270.