靳 超,賈 佳,張志強,汪健雄
(中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京 100081)
新一代客票系統承擔了12306互聯網售票、窗口售票、自動售取票、電話訂票等多種渠道售票業務,目前,高峰日發售全國鐵路客票超過1 200萬張。尤其是互聯網/手機APP渠道占售票總量的比例最高約75%,已經成為廣大人民群眾鐵路出行購票的主要渠道。
客票系統的席位由歸屬于18個鐵路局集團有限公司的多個席位云計算節點承載,采用分布式存放,12306互聯網售票系統已建成雙活架構的數據中心,新一代客票系統目前全渠道日處理能力超過2 000萬張,可很好地應對春運等重大節假日售票量劇增的情況。但是放票時段瞬時大交易量會對熱門鐵路局地區中心的席位服務器造成巨大的壓力,成為制約新一代客票系統售票性能的瓶頸。因此,必須通過有效分析各個席位服務器資源開銷,優化車次數據存儲策略,以達到席位服務器售票壓力均衡、提高客票系統運行效率、提升旅客購票體驗的目的[1]。
目前,對席位服務器進行壓力均衡的手段是對車次的存放位置進行調整,將熱門車次席位數據遷移至較為空閑的席位服務器,遷移過程主要是使用腳本結合人工批量操作,席位搬遷量大,搬遷速度較慢,只能在售票天窗時間操作,不利于快速恢復售票生產,搬遷過程也受操作人員的熟練程度影響,存在一定的安全風險。本文提出一種席位搬遷系統的設計與實現,可實現席位在非售票天窗時間、小事務、安全、快速搬遷的目標,以適應新一代客票系統席位集中管理的需要。
鐵路客票系統中的席位自動化搬遷系統架構如圖1所示。

圖1 席位自動化搬遷系統架構
席位自動化搬遷系統主要完成主中心和負載中心席位相關數據的自動化實時搬遷。業務人員指定需要搬遷的日期、車次、搬遷源中心和目標中心,系統自動核實錄入數據是否有效,通過核實后系統自動調用連接交易管理中間件(CTMS)連接席位源中心,將車次相關的席位、調令、計劃和站車等數據搬遷至目標中心,實現席位在不同服務器之間的快速遷移[2]。
系統用戶分為管理員用戶和普通用戶。管理員用戶有席位搬遷、賦權和查詢賦權日志、搬遷日志等主要功能;普通用戶有席位搬遷、查詢搬遷日志的功能。
管理員用戶只有一個。
普通用戶在管理員用戶賦權后才能登陸席位集中管理平臺進行席位搬遷等操作,退出平臺后權限自動被回收,下次登陸仍需賦權[3]。
席位搬遷是對客票系統席位服務器中既有車次的存放位置進行調整,搬遷的內容包括車次席位、席位發布日志、調令、站車、基本計劃和臨時計劃等數據[4-5]。
2.2.1 搬遷環境設置
(1)搬遷位置
席位搬遷位置分為源中心和目標中心。
源中心為搬遷前席位的存放位置,目標中心為搬遷后席位的存放位置。目前客票系統席位分別存放在鐵路局和鐵路總公司的席位服務器上。
(2)搬遷車次
搬遷車次支持具體車次,如K401;支持按字頭或字尾設置,如G%、K1%、%9;也支持按列車類型設置,如直通車或管內車。
(3)搬遷時段
搬遷時段支持指定始發日期,如20171001;支持指定始發日期時間段,如20170101~20171030;支持特定范圍,如預售期內、預售期外。
2.2.2 席位自動搬遷
(1)搬遷前自動檢測
業務操作人員指定搬遷車次、搬遷日期、源中心和目標中心,系統自動校驗源中心和目標中心是否存在,搬遷日期內該車次在源中心是否有效。
(2)自動搬遷
正式搬遷時,系統根據業務操作人員錄入信息調用存儲過程,從源中心匹配相關表的對應數據,導出中間表后再導入目標中心。
(3)順序執行
業務操作人員指定站車次,系統自動計算該站車次在搬遷日期內對應的全車次,如有多個全車次,系統將多個全車次順序搬遷,自動執行。
2.2.3 席位監控與核對
(1)過程監控
搬遷開始時,席位搬遷進度窗口實時監控搬遷進度,展示內容包括當前時間搬遷全車次、數據表及對應數據量。
(2)數據核對
搬遷數據導入目標中心后自動觸發數據核對機制,系統調用存儲過程統計中間表數據和目標中心數據后進行比對。
日志查詢分為賦權日志和搬遷日志。
賦權日志可根據被賦權工號查詢該工號的賦權時間、登陸時間和權限回收時間。通過該功能可以查詢搬遷工號的賦權時間及登陸退出時間。
搬遷日志可根據搬遷車次查詢搬遷該車次的操作員、搬遷開始和截止時間,以及搬遷車次相關所有數據的統計信息。通過該功能可以檢查搬遷車次的操作信息,車次搬遷前后數據是否一致,及搬遷過程是否符合搬遷時間要求。
搬遷工號被賦權后開始搬遷任務,指定搬遷信息后系統自動校驗,校驗通過系統將車次席位等數據從源中心遷移至目標中心,完成席位自動搬遷過程。系統總體業務流程如圖2所示。

圖2 系統總體業務流程
管理員工號登陸席位集中管理平臺,通過工號賦權功能給普通工號賦搬遷權限。
普通工號取得搬遷權限后,登陸席位集中管理平臺,輸入席位搬遷車次的相關信息,如源中心、目標中心、搬遷日期、搬遷車次,確認后開始搬遷工作;自動化搬遷系統參數數據初始化流程如圖3所示。
(1)席位搬遷開始時車次加鎖,暫停該車次的售票業務。
(2)修改鐵路總公司該車次的位置定義為目標中心,同步復制到鐵路局服務器及車站服務器。
(3)清空搬遷中間表數據,準備數據遷移前的環境搭建工作。
(4)系統根據搬遷日期以及車次,從源中心將相關席位、調令、計劃等數據備份至中間表,再從中間表將數據小事務導入目標中心,完成數據遷移工作[6]。
(5)系統自動核對搬遷前后數據是否一致,如不一致跳出正常流程,轉入異常處理流程。

圖3 系統搬遷初始化流程圖
(6)同步搬遷車次相關訂單的位置中心為目標中心。
(7)刪除源中心該車次相關數據、全路服務器的余票數據及緩存數據。
(8)同步全路服務器的余票數據后將車次解鎖,恢復該車次的售票業務,整個搬遷過程結束。
搬遷過程的具體流程如圖4所示。
席位自動化搬遷過程可以在搬遷進度窗口中監控,如遇異常情況可手工干預。
席位自動化搬遷過程結束后操作員可在搬遷日志中查詢某車次的搬遷記錄,輸出結果包括具體搬遷車次、具體搬遷日期、搬遷席位的相關數據統計等。
整個搬遷過程完畢后操作員退出席位集中管理平臺,該操作員的搬遷權限自動被回收。
席位目前存放在鐵路局和鐵路總公司的席位服務器上面,席位服務器的性能是影響售票業務速度的關鍵因素,通過對各個席位服務器CPU運行情況分析,測算席位存放比例達到服務器最優性能輸出是席位搬遷的關鍵。以北京鐵路局的4個服務器性能為例,如圖5所示。由于P1服務器承擔了傳輸、結賬、統計等業務,暫無發售車次的席位存放,運行一直平穩;而P2、P3、P4各負載中心性能各不相同,在不同時間段繁忙程度也不一樣[7]。

圖4 搬遷過程具體流程圖

圖5 數據庫監控圖
圖5是P2、P3、P4這3個席位負載中心一個售票日的CPU繁忙對比,各負載中心CPU負載都沒有超過50%,P4相對繁忙一些,以此為依據P4上新增加的車次和既有存放的席位就有部分需要搬遷到P2和P3上,以達到各服務器售票壓力均衡的策略。
對新增車次,根據每個席位中心的繁忙情況和每個負載席位存放量情況,為客運人員提供選取最閑和存放量最小的席位負載中心進行存放,規避了之前需要依賴客運人員按照經驗進行席位存放的風險。
對既有席位數據,可以根據各個席位中心的使用性能變化進行動態調整,隨時完成該趟列車從一個繁忙的席位中心自動搬遷到另外一個相對空閑的席位中心,通過動態合理化的調整,充分利用了全路席位中心的資源[8]。
搬遷過程中將搬遷數據導入目標位置中心,系統通過存儲過程自動核對中間表數據和目標中心數據是否一致。
(1)核對席位、調令和計劃等數據一致后,可進行源中心的數據刪除操作。
(2)核對席位、調令和計劃等數據不一致,可手工檢查解決問題后再次核對數據,如果一致仍可進行源中心的數據刪除操作;如無法解決可回退,系統自動修改車次為源中心,刪除目標中心數據后解鎖車次,保證自動搬遷前后數據的一致性[9]。
(1)業務影響自動化搬遷開始時對搬遷車次進行加鎖,停止該車次的售票業務,由于搬遷數據量小,通常搬遷一趟車次在5 min內,中斷售票業務時間較短,可在非天窗時段在線遷移。
自動搬遷不需要暫停workload工作流,不影響其他在線業務,避免夜間施工后補做營銷、席位發布等工作[10]。
(2)數據同步
搬遷過程中清除該車次相關的余票及緩存數據后立即同步,恢復售票業務時余票數據為實時數據。涉及搬遷車次的訂單在搬遷過程中自動同步為新的位置中心,不影響搬遷后該車次訂單的換票、改簽及退票業務。
自動化搬遷過程需要嚴格保障搬遷過程的安全性和數據一致性,只設置一個賦權工號,普通工號被賦權才可進行搬遷工作,搬遷結束后搬遷工號的權限自動被回收;搬遷工號登陸平臺時判斷在線唯一性,確保搬遷過程中不會造成數據表被多人使用;搬遷時判斷搬遷車次唯一性,確保搬遷的車次只能在一個搬遷任務中存在。
自動搬遷過程中導入和刪除數據時采用小事務不復制操作,根據搬遷日期按天小批量處理數據,不影響系統其它業務,有效地保障了搬遷過程的安全性。
席位自動化搬遷系統通過對席位服務器交易繁忙程度進行分析,制定嚴謹的負載均衡手段,實現席位數據在各席位服務器中發售壓力的均衡,達到了席位在非售票天窗時間、小事務、安全、快速搬遷的目標,并可適應新一代客票系統席位集中管理的需要。該系統已在多年的春運、國慶等售票高峰期發揮了重要作用,有效地提高了客票系統運行效率和旅客購票體驗。
[1] 徐東平,李 琪,劉相坤,等.鐵路局級客票系統雙活架構的研究[J]. 鐵路計算機應用, 2015,24(11): 9-13.
[2] 王元媛,張志強. 鐵路客票系統席位管理研究[J]. 鐵路計算機應用,2016,25(4):34-37.
[3] 王永峰,華小剛,李 政. 鐵路自動檢票系統的設計與實現[J]. 鐵路計算機應用,2015,24(11):46-51.
[4] 王 芳,李 剛,林 湛,等. 基于售票量預測的客票系統數據負載均衡方法研究[J]. 鐵路計算機應用,2013,22(4):29-32.
[5] 張華兵,劉昕林,張海濤,等. IT運維管理的自動化的研究[J].信息與電腦:理論版,2017(9):34-35.
[6] Jeffrey Garbus. Sybase ASE 12.5 Performance and Tuning: The Official Guide[M].Wordware Publishing Inc,2002: 112-115.
[7] 江 琳,王洪業,賈 佳,等. 席位自動負載均衡在客票系統的研究和應用[J]. 鐵路計算機應用,2015,24 (7): 21-24.
[8] (英)門伯里.實用負載均衡技術[M].武海峰,陳曉亮,譯.北京:人民郵電出版社, 2013:96-97.
[9] 章 偉 .淺議計算機數據庫備份和恢復技術的應用[J].數字技術與應用,2016(2):224.
[10] 朱建生,單杏花,周亮瑾,等. 中國鐵路客票發售和預訂系統5.0 版的研究與實現[J].中國鐵道科學,2006,27(6):95-103.