羅 彤
(北京全路通信信號(hào)研究設(shè)計(jì)院集團(tuán)有限公司,北京 100070)
在線訂票是用戶根據(jù)出行需要自行在網(wǎng)站或手機(jī)App查詢余票、到發(fā)時(shí)間、費(fèi)用等信息,選擇需要的車票,并通過安全、高效的電子支付完成車票購(gòu)買。在線購(gòu)買成功后,乘客憑借通知的訂單號(hào)或有效證件可在就近車站辦理取票。在線售票克服了時(shí)間和空間的因素,使每一臺(tái)可上網(wǎng)的電腦成為售票終端,從而實(shí)現(xiàn)售票節(jié)點(diǎn)布向每一個(gè)人,真正意義上實(shí)現(xiàn)電子售票。
經(jīng)分析,在線訂票具有以下技術(shù)特點(diǎn)。
1)大規(guī)模并發(fā)交易
在運(yùn)量高峰期間,對(duì)于廣大乘客而言,火車票的超高性價(jià)比和相應(yīng)的方便性,使得每張票成為稀缺資源。而在線售票那一瞬間,必然有成千上萬(wàn)的人同時(shí)訪問客票系統(tǒng),整個(gè)系統(tǒng)將承受巨大的并發(fā)壓力。
如何應(yīng)對(duì)巨大的并發(fā)壓力,保持客票系統(tǒng)的穩(wěn)定性和可靠性,同時(shí)提高系統(tǒng)的性能和響應(yīng)速度,將是在線訂票接口重點(diǎn)考慮和解決的問題。
2)公網(wǎng)接入的安全風(fēng)險(xiǎn)
由于在線售票的需要,客票系統(tǒng)需要外網(wǎng)接入,由此帶來諸多安全風(fēng)險(xiǎn):網(wǎng)絡(luò)非法監(jiān)聽、非法訪問篡改數(shù)據(jù)、獲取密碼文件、網(wǎng)絡(luò)欺詐、主機(jī)癱瘓或網(wǎng)絡(luò)癱瘓等,更有甚者利用網(wǎng)絡(luò)攻擊進(jìn)行勒索,嚴(yán)重影響運(yùn)營(yíng)秩序。
為應(yīng)對(duì)大規(guī)模并發(fā)交易,采用模塊化、獨(dú)立、降低耦合度等設(shè)計(jì)原則,具體如下。
1)服務(wù)程序支持橫向擴(kuò)展
接口服務(wù)和交易服務(wù)程序支持橫向擴(kuò)展,實(shí)現(xiàn)服務(wù)分區(qū),提高系統(tǒng)的并行處理能力,如圖1所示。
圖1 在線訂票服務(wù)Fig.1 Online ticketing service
2)窗口售票、在線訂票業(yè)務(wù)相互獨(dú)立,互不干擾
為窗口交易、在線交易分配獨(dú)立的硬件資源和軟件資源,將席位按窗口可售席位和在線可售席位分庫(kù),交易存根按窗口交易存根和在線交易存根分庫(kù)。在線交易新增接口服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、磁盤陣列、應(yīng)急數(shù)據(jù)庫(kù)服務(wù)器,分配獨(dú)立的接口服務(wù)、交易服務(wù),通過橫向擴(kuò)展,保證大規(guī)模并發(fā)交易的順暢處理。
窗口售票、在線售票業(yè)務(wù)相互獨(dú)立,但實(shí)現(xiàn)席位、收入等統(tǒng)一、集中管理。
3)交易排隊(duì),實(shí)現(xiàn)訂票交易的異步處理模式
如圖2所示,采用交易排隊(duì),實(shí)現(xiàn)訂單交易的異步處理。當(dāng)應(yīng)用服務(wù)資源無(wú)法同步處理訂票請(qǐng)求時(shí),自動(dòng)將請(qǐng)求推入隊(duì)列,并提示用戶已經(jīng)進(jìn)入排隊(duì)狀態(tài),用戶可查詢請(qǐng)求的處理狀態(tài),同時(shí)可主動(dòng)取消排隊(duì);系統(tǒng)將根據(jù)應(yīng)用資源忙閑程度,自動(dòng)將隊(duì)列中的請(qǐng)求進(jìn)行提交,提交結(jié)果及時(shí)反饋用戶。當(dāng)應(yīng)用服務(wù)資源空閑時(shí),訂票請(qǐng)求同步提交處理。
排隊(duì)機(jī)制改善了用戶體驗(yàn),只需提交一次訂票請(qǐng)求,可以動(dòng)態(tài)了解訂單排隊(duì)情況;提高了服務(wù)器資源利用率,異步交易模式下,服務(wù)器資源占用時(shí)間大大縮短,處理效率極大提高。
4)在線售票、線下取票分離
圖2 交易排隊(duì)Fig.2 Transaction queuing
電子票取票高峰和售票高峰疊加,會(huì)進(jìn)一步加大中心電子票庫(kù)的負(fù)載,造成業(yè)務(wù)交叉影響,出現(xiàn)售票繁忙時(shí)段車站換票緩慢的現(xiàn)象。
因此,如圖3所示,可將電子票庫(kù)同步至車站,從而將取票壓力分散到各車站,避免對(duì)在線售票的影響。當(dāng)車站出現(xiàn)異常時(shí)可連接中心應(yīng)急換票。
圖3 售票分離Fig.3 Ticketing and getting tickets separately
接口方式和接口協(xié)議應(yīng)以既有的客票技術(shù)方案和業(yè)務(wù)流程為基礎(chǔ),接口方式為tcp連接,客票系統(tǒng)作為sever端,在線售票系統(tǒng)為client端,采用雙網(wǎng)連接。
設(shè)備接口示意如圖4所示。
根據(jù)窗口售票和在線售票相互獨(dú)立的設(shè)計(jì)原則,新增接口服務(wù)器、應(yīng)用服務(wù)器、隊(duì)列服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器、磁盤陣列、應(yīng)急數(shù)據(jù)庫(kù)服務(wù)器、防火墻等,獨(dú)立處理在線售票請(qǐng)求。
圖4 在線訂票接口Fig.4 Online ticketing interfaces
接口服務(wù)器負(fù)責(zé)客票系統(tǒng)與在線售票系統(tǒng)的業(yè)務(wù)連接,接收在線訂票請(qǐng)求;應(yīng)用服務(wù)器負(fù)責(zé)在線訂票請(qǐng)求;隊(duì)列服務(wù)器負(fù)責(zé)交易排隊(duì)機(jī)制,實(shí)現(xiàn)訂單交易的異步處理;數(shù)據(jù)庫(kù)服務(wù)器負(fù)責(zé)在線售票相關(guān)的席位庫(kù)、電子票庫(kù)的管理,與既有窗口售票席位庫(kù)、電子票庫(kù)分離,從而實(shí)現(xiàn)壓力的分散,提高處理能力。
接口服務(wù)器、應(yīng)用服務(wù)器、隊(duì)列服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器要求4核CPU,內(nèi)存8 G以上,硬盤空間300 G以上。磁盤陣列存儲(chǔ)16 T??推毕到y(tǒng)和在線售票系統(tǒng)連接通道速度大于10 M。
在線訂票接口協(xié)議如表1所示。
表1 在線訂票接口協(xié)議Tab.1 Online ticketing interface protocol
續(xù)表Continued
本文介紹了在線售票接口方案,包括設(shè)計(jì)原則,接口方式,接口協(xié)議等。技術(shù)方案遵循模塊化、資源獨(dú)立、分散壓力、異步處理等原則,來應(yīng)對(duì)在線售票的高并發(fā)訪問,同時(shí)降低業(yè)務(wù)間耦合度,避免了業(yè)務(wù)間相互影響。