鐵路客票系統遇見開源資料庫技術,會怎樣?

隨著鐵路客票系統業務越來越廣泛,以及12306網站和手機售票量的極速增長,業務增量和數據存儲量也越來越大,採用傳統商業數據庫受到很多制約。為了提高鐵路客票系統數據處理能力,解決超大規模併發、海量數據存儲、數據動態調度與管理等難題,提高系統應對災難風險和安全風險的能力,客票系統團隊開始對各種形態的開源數據庫包括關係型,非關係型,NewSQL數據庫進行研究,形成不同應用場景採用不同數據庫、多種數據庫混合部署的開源數據庫應用思路。研究和應用開源數據庫,能夠降低客票系統軟件授權成本,實現技術支持本土化,減少國外商業數據庫對客票系統的經濟制約和技術支持上的制約,也是提高信息安全保障能力,實現客票系統數據庫國產化和自主可控的有效手段,對鐵路信息系統實現國產化具有十分重要的意義。


1 開源數據庫現狀及可行性分析

隨著開源數據庫的發展,開源數據庫在世界範圍內得到越來越廣泛的應用,當前的數據庫行業業態已經從商業關係型數據庫一家獨大,真正發展到百家爭鳴、百花齊放的局面[4]。圖1為DB-Engines發佈的數據庫流行度排名。

根據DB-Engines統計,開源數據庫數量達到154款,其多樣性功能和優勢基本涵蓋了整個數據處理層面,隨著開源數據庫越來越成熟和穩定、得到市場認可,對商業數據庫形成了很大的威脅[5],逐漸成為企業應用的標準基礎設施選項,研究客票系統應用開源數據庫也具備了可行性。


(1)在功能和性能上,開源數據庫對SQL標準的支持、存儲管理和網絡管理,以及開發、管理和監控工具等方面都能媲美主流商業數據庫[6],開源數據庫性能在通用場景下完全不遜色商業數據庫,並且開源數據庫可通過分佈式技術、集群技術超越商業數據庫,在大數據處理行業更是佔據主導地位。


鐵路客票系統遇見開源數據庫技術,會怎樣?

圖1 DB-Engines數據庫流行度排名


(2)行業應用和生態建設上,開源數據庫在互聯網企業已經成為主流應用,在很多大型國企有非常廣泛的應用,這為客票系統應用開源數據庫提供了很多切實可行的經驗和參考案例,同時開源數據庫具有開源社區、用戶會、郵件列表形成了一個完善的技術生態圈。為開源數據研究提供了可靠的支持。


(3)在政策支持和團隊上,中國鐵路總公司非常提倡和鼓勵在鐵路信息行業開展全面的開源軟件技術運用和研究,尤其是數據庫基礎軟件方面,客票系統開源數據庫研究得到了充分重視和支持,並在多個業務系統中踐行開源數據庫的推廣應用。為開源數據庫研究積累了大量的經驗,為客票系統深入使用開源數據庫提供了可行性保障。


2 研究方法

2.1 原則


(1)堅持自主研發,堅持自主創新。通過技術交流、技術培訓、參與社區建設等方式切實提高客票系統團隊在開源數據庫上的應用開發能力,自主創新真正實現客票系統數據庫技術的自主可控,提高鐵路客票系統信息化、國產化水平。


(2)理論結合實踐,研究結合生產。客票系統應用開源數據庫的研究,應分階段進行理論研究和技術攻關,同時形成客票系統應用開源數據庫理論指導與技術突破創新,在開源數據庫理論研究的同時,以鐵路客票系統典型業務作為實驗基礎形成落地應用,逐步推廣開源數據庫應用整個客票系統中。


(3)先邊緣再核心,先試點再推廣。客票系統應用開源數據庫的研究,應對多種類型的開源數據庫研究,根據客票系統的業務場景選擇相應的數據庫,例如在交易型業務中採用關係型數據庫,大併發查詢業務採用內存數據庫,統計分析業務採用列存儲數據庫等;同時形成推進策略,如從簡單業務系統到複雜業務系統,從非關鍵業務系統到關鍵業務系統。

2.2 路線

秉承上述研究原則,客票系統應用開源數據庫通過如下3個方面進行研究,如圖2所示。


鐵路客票系統遇見開源數據庫技術,會怎樣?

圖2 開源數據庫研究線路圖


(1)理論研究。檢索調研國內外開源數據庫現狀,分析鐵路客票系統數據庫現狀,借鑑行業和互聯網企業的成熟方案,完成客票系統開源數據需求分析和目標制定,通過專家研討、方案制定,形成鐵路客票系統應用開源數據庫總體規劃和應用策略。


(2)技術研究。通過技術交流、培訓,參與開源社區建設,掌握開源數據庫技術,突破客票系統應用開源數據庫關鍵技術。


(3)推廣應用。通過客票系統業務原型遷移,在非關鍵業務系統進行試點應用;及時總結,根據效果設定生產上線系統的目標,進行研發投入,迭代、完善系統應用;在客票生產系統實施開源數據庫應用,形成系統切換方案並驗證測試,包括與既有數據庫並行運行、業務數據的同步與複製等。

2.3 內容


客票系統基礎架構是一個以數據庫為中心的多層結構。數據庫層,實現數據存儲、管理,並通過存儲過程實現客票系統的核心業務邏輯;核心層,主要包括交易中間件,數據傳輸中間件,數據庫訪問控制等,這些和數據庫共同組成了客票系統的核心;接口層,主要包括各售票終端接口;客票系統售票終端,包括自動售票機,人工窗口,12306網站和手機等。如圖3所示。

鐵路客票系統遇見開源數據庫技術,會怎樣?

圖3 客票系統總體架構簡圖


客票系統應用開源數據庫是一個龐大而複雜的工程,不只是將商用數據庫替換成開源數據庫、遷移表和數據的簡單工作。除數據庫內的數據表、觸發器、存儲過程和視圖等應用邏輯遷移,包括數據庫複製、數據庫相關中間件DBCS,CTMS,WORKLOAD的兼容性改造,還包括一些客票系統前端的改造工作。

3 關鍵技術

3.1 通用數據庫訪問控制器


通用數據庫訪問控制器是一套通用的數據庫訪問層封裝器,可用於訪問各種類型的數據庫,實現多種開源數據庫的支持; 實現方便、透明的數據庫訪問,調用過程、函數,並將數據庫結果方便的返回給調用接口;可同時支持多種數據庫的多個連接,方便實現根據不同客戶端請求來切換相應的數據庫連接;提供API函數供外部訪問,數據庫的訪問連接或事務可以自動控制也可以由上層控制;通過數據庫訪問控制器可以屏蔽異構數據庫的差異,提供安全的數據通信一致性協議訪問接口,實現數據交互的安全訪問。架構如圖4所示。

該控制器採用基於事件驅動(Event-driven)響應客戶請求的多線程服務器(Multi-threaded Server)模式—對每個客戶請求建立一個線程主要包括事件調度模塊,每當客戶端發生一個請求,如連接建立、發送數據等,都進入相應的事件處理過程[7]。語法轉換器是將請求命令轉換成相應的數據庫操作語句;連接池通過數據庫適配器和遠程服務模塊維護多個數據庫或者遠程服務的連接;系統管理模塊主要處理狀態監控,日誌處理等系統相關工作。


鐵路客票系統遇見開源數據庫技術,會怎樣?

圖4 通用數據庫訪問控制器基本架構圖

3.2 數據庫複製系統


目前,鐵路客票系統使用的數據複製系統管轄範圍大、效率高[8],用於維護多個數據庫中的複製數據,並保證完整性和一致性。它向客戶端提供在本地訪問數據的能力,從而減少了網絡和中央計算機系統的負擔。複製命令語言(RCL)能自定義各種複製功能,監控和維護複製系統。例如,可以要求在數據表、數據行或數據列的級別上覆制數據子集,通過在複製節點上只複製所需數據,可節省系統資源的開銷。

3.3 消息中間件技術


消息中間件是一種由消息傳送機制或消息隊列模式組成的典型的中間件技術,用於分佈式應用系統間進行信息交換。通過消息中間件,應用程序或組件之間可以進行可靠的異步通信,降低系統之間的耦合度,從而提高整個系統的可擴展性和可用性。分佈式消息系統是消息中間件的一種實現,具有數據冗餘、可恢復性,可擴展性、送達保證、排序保證、緩衝、異步通信等技術特點。通過分佈式消息隊列系統,應用系統可實現解耦,具備靈活性和峰值處理能力,實現異步處理和高速數據同步。

3.4 異構數據庫同步


異構數據庫同步技術可實現數據源和目標數據庫的數據同步,解決數據共享和集成問題,而不需要考慮數據庫的類型和部署位置。具體技術實現方式包括:數據文件、數據庫複製、應用系統實現多點寫入等。


結合數據庫複製、消息中間件等技術,通過讀取並轉發關係型數據庫複製服務主點到複製從點數據庫的消息,作為數據橋模擬複製從點數據庫的響應消息序列到複製主點以確保實時數據的完整和一致,可完成數據複製主、從點之間的數據同步,同時通過數據適配器、解析器將消息和數據實時同步至其它數據節點,可實現到包括文件、內存數據庫集群以及其它類型數據庫在內的數據節點的異構數據同步功能。架構如圖5所示。


通過異構數據庫複製技術,可在既有的數據庫和應用程序基礎上建立複製系統,而不必進行數據庫的轉換、遷移以及應用程序的改變,同時,可以向複製系統添加不同種類數據庫服務器滿足業務發展和變化的需求。

4 研究成果

客票系統研發團隊通過調研分析、詳細設計、關鍵技術研究實現了一個客票系統典型業務—鐵路局餘票查詢系統在開源數據庫MySQL,PostgresSQL和國產數據庫Gbase8t上的應用。承擔4個鐵路局線下餘票查詢,包括車站大屏,人工窗口售票,自動售票機(TVM),站車系統。基於開源數據庫的餘票查詢系統試運行6個月,運行穩定,日均處理餘票查詢請求13萬次,並通過了2016年國慶節和2017年春運客運高峰期的考驗,高峰日處理餘票查詢請求達30萬次。

鐵路客票系統遇見開源數據庫技術,會怎樣?

圖5 異構數據庫複製流程圖


鐵路客票系統遇見開源數據庫技術,會怎樣?

圖6 基於開源數據庫的鐵路局餘票查詢系統架構圖


如圖6所示,線下餘票查詢系統分兩種架構:(1)車站在鐵路局本地查詢餘票(圖6中左側部分);(2)車站通過鐵路局中間件在鐵路總公司中心查詢餘票(圖6中右側部分)。開源數據庫在第2種架構試運行,兩種架構裡,餘票數據通過複製保持同步。


此外,非關係型開源數據庫也在客票系統中應用,如:開源數據倉庫Greenplum在客票營銷系統中得到應用,開源內存數據庫Gemfire在12306網上售票餘票查詢系統中也已經上線。

5 結束語

客票系統中應用開源數據庫是必要的,是提高客票系統技術水平,實現數據庫系統國產化,提高技術支持能力的重要途徑。通過分析開源數據庫現狀和優勢及政策環境,證明了客票系統中採用開源數據庫是可行的,客票系統團隊秉承堅持自主創新,理論與實踐相結合,先簡單後複雜,先外圍後核心的研究原則,通過理論研究、技術研究和應用推廣3條路線,形成開源數據庫研究應用的指導策略和理論依據,並在客票系統典型業務中進行試點應用。通過及時總結、完善應用研究經驗,指導客票系統後續在開源技術深入應用研究。

在客票系統中應用開源數據庫成熟、穩定後,可將開源數據庫自主化、產品化,形成客票數據庫產品並在鐵路行業內進行市場推廣,引領鐵路信息系統實現國產化。


分享到:


相關文章: