相關(guān)鏈接: 中國(guó)安全網(wǎng) 中國(guó)質(zhì)量網(wǎng) 中國(guó)論文網(wǎng) 中國(guó)資訊網(wǎng)
林 克 ,羅 喧 ,李 凌 ,李 豫
(1.中國(guó)電信股份有限公司廣州研究院廣州510630;2.中國(guó)電信股份有限公司廣東分公司廣州510180)
摘要:基于移動(dòng)互聯(lián)網(wǎng)的票務(wù)應(yīng)用服務(wù),是近年來(lái)興起的一個(gè)電子商務(wù)前沿分支,向用戶提供便捷的查詢、選座、訂票、支付及取票服務(wù)。針對(duì)此類服務(wù)在業(yè)務(wù)和用戶高并發(fā)過(guò)程中暴露的系統(tǒng)性能瓶頸問(wèn)題,提出一種高效、可行的解決方案,實(shí)現(xiàn)高并發(fā)訂票壓力下代理系統(tǒng)對(duì)外部原生票務(wù)系統(tǒng)的過(guò)載壓力保護(hù);從而設(shè)計(jì)出一種新型的票務(wù)應(yīng)用系統(tǒng),以減少高并發(fā)壓力下對(duì)原生票務(wù)系統(tǒng)的訪問(wèn)流量沖擊,降低原生票務(wù)系統(tǒng)的訪問(wèn)壓力。
1 引言
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,登錄網(wǎng)絡(luò)線上買票線下消費(fèi)的020(online to offline,線上到線下)型電子商務(wù)已逐漸成為新的移動(dòng)互聯(lián)網(wǎng)應(yīng)用熱點(diǎn)。此類移動(dòng)電子票務(wù)應(yīng)用向用戶提供票務(wù)相關(guān)信息查詢、提前選座訂票、遠(yuǎn)程在線支付和便捷取票驗(yàn)票等功能,同時(shí)實(shí)現(xiàn)運(yùn)營(yíng)管理的信息化、確保用戶信息及票據(jù)的安全性。其覆蓋面廣,從旅游景點(diǎn)門票、影戲門票、音樂(lè)演出票、體育賽票、展覽會(huì)票、博物館票等各種入場(chǎng)券票,到汽車票、火車票、飛機(jī)票、船票等各類電子客票,均可衍生出相應(yīng)的定制化應(yīng)用服務(wù)和商務(wù)模式。比如,對(duì)于汽車票的票務(wù)應(yīng)用服務(wù),用戶可通過(guò)應(yīng)用的網(wǎng)站或手機(jī)客戶端瀏覽查詢某個(gè)車站到某地的車次信息、票價(jià)信息,根據(jù)系統(tǒng)提示挑選車廂中的座位形成訂單,再使用銀聯(lián)等支付方式完成網(wǎng)絡(luò)在線或移動(dòng)支付:系統(tǒng)確認(rèn)支付成功后,將以短信、彩信或電子訂單的形式將各種形態(tài)的電子票發(fā)送給用戶;用戶可持電子票,以相應(yīng)的驗(yàn)證形式在自助取票終端打印紙質(zhì)車票,或直接驗(yàn)票乘車。
基于移動(dòng)互聯(lián)網(wǎng)的票務(wù)應(yīng)用服務(wù)主要具有以下特征。
·服務(wù)渠道多樣化,支持手機(jī)客戶端、Web/WAP網(wǎng)站、語(yǔ)音服務(wù)和自助訂票終端等服務(wù)渠道。
·提供透明的票務(wù)信息和豐富的資訊,用戶可隨時(shí)隨需查詢信息,提前選定時(shí)間排期及座位。
·可擴(kuò)展地接入銀聯(lián)、支付寶等第三方支付能力,使用戶便捷靈活地完成在線訂單支付。
·支持新型電子票(短信、彩信或系統(tǒng)訂單)的自助取票與現(xiàn)場(chǎng)驗(yàn)票,偽識(shí)別安全性高。
·提供強(qiáng)大可靠的運(yùn)營(yíng)管理后臺(tái),實(shí)現(xiàn)高效運(yùn)營(yíng)管理,具有管理一體化、核算嚴(yán)密等特點(diǎn)。
2 票務(wù)應(yīng)用系統(tǒng)架構(gòu)
票務(wù)應(yīng)用系統(tǒng),或稱為票務(wù)代理系統(tǒng),是基于移動(dòng)互聯(lián)網(wǎng)的票務(wù)應(yīng)用服務(wù)中的核心平臺(tái),通過(guò)與票務(wù)公司的原生專業(yè)票務(wù)系統(tǒng)相連來(lái)完成相關(guān)的票務(wù)功能。該代理系統(tǒng)側(cè)重售票代理應(yīng)用,而不包括原生專業(yè)票務(wù)系統(tǒng)面向機(jī)構(gòu)內(nèi)部的內(nèi)容管理、計(jì)劃管理等功能。整個(gè)票務(wù)應(yīng)用系統(tǒng)包括業(yè)務(wù)邏輯模塊、核心數(shù)據(jù)庫(kù)、運(yùn)營(yíng)管理后臺(tái)、前向應(yīng)用管理模塊、票務(wù)票源接入服務(wù)、憑證生成與驗(yàn)證模塊、終端管理系統(tǒng)、能力接入網(wǎng)關(guān)等部分。對(duì)外主要與專業(yè)票務(wù)系統(tǒng)對(duì)接,實(shí)現(xiàn)與票務(wù)公司的數(shù)據(jù)交換、票務(wù)訂購(gòu)等服務(wù):對(duì)內(nèi)則實(shí)現(xiàn)了豐富的應(yīng)用服務(wù)渠道接入、健全的第三方能力接人以及核心的邏輯、運(yùn)營(yíng)及管理功能,如圖1所示。
在整個(gè)票務(wù)應(yīng)用服務(wù)體系中,首先必須由原始的業(yè)務(wù)公司將門票電子化,然后通常會(huì)以某種程序API將門票售賣功能開放給下游的代理商。對(duì)一個(gè)大型的在線票務(wù)代理商的票務(wù)應(yīng)用系統(tǒng)而言,系統(tǒng)將連接多個(gè)原生票務(wù)系統(tǒng)的票源,將其中的票務(wù)信息同步到本地代理系統(tǒng)中,代理的票務(wù)應(yīng)用系統(tǒng)與原生的票務(wù)系統(tǒng)之間存在復(fù)雜的交互。
3 系統(tǒng)性能瓶頸分析
關(guān)于原生專業(yè)票務(wù)系統(tǒng)與代理票務(wù)應(yīng)用系統(tǒng)之間的運(yùn)作流程,本文將以電影票訂購(gòu)業(yè)務(wù)為例來(lái)分析。
首先,在線電影票的購(gòu)票代理系統(tǒng)必須將原生票務(wù)系統(tǒng)的電影院的名稱、地址以及各個(gè)影廳信息同步到代理票務(wù)系統(tǒng),然后增加必要的影院簡(jiǎn)介、影院推薦信息。其次,原生票務(wù)系統(tǒng)當(dāng)前的播放電影的排期、檔期等播放信息需要以較高的頻率更新,例如,每個(gè)小時(shí)同步到代理票務(wù)系統(tǒng),然后增加對(duì)電影的海報(bào)、影評(píng)等附加信息。在用戶登錄系統(tǒng)的時(shí)候,瀏覽正在熱映的相關(guān)電影海報(bào)、影評(píng)等,然后點(diǎn)擊進(jìn)入購(gòu)票,此時(shí)電影票的代理系統(tǒng)需要去原生系統(tǒng)獲取最新的可售的座位信息,然后在本系統(tǒng)展示一個(gè)座位圖的操作界面供用戶進(jìn)行選座并購(gòu)買電影票。一旦用戶選擇訂購(gòu)電影票,代理系統(tǒng)將去原生系統(tǒng)將座位鎖定,鎖定座位后,用戶在代理業(yè)務(wù)系統(tǒng)中完成電影票票款支付的過(guò)程。完成支付后和原生系統(tǒng)進(jìn)行對(duì)單操作,完成對(duì)單后雙方均確認(rèn)了此次用戶的購(gòu)買行為,進(jìn)行正式的出票過(guò)程。
通常,在代理方主動(dòng)進(jìn)行的營(yíng)銷活動(dòng)中,用戶的訂票行為會(huì)被異常地集中在極短的時(shí)間內(nèi)。例如,某些熱門場(chǎng)次的首映式門票搶訂、營(yíng)銷活動(dòng)中的“1元訂票”等。當(dāng)用戶的訂票行為被異常地集中時(shí),代理系統(tǒng)和原生系統(tǒng)最關(guān)鍵和脆弱的一步在于獲取原生系統(tǒng)的可售座位信息。其原因在于,影院信息、影廳信息以及正在上映的影片排期及場(chǎng)次信息均提前同步到代理售票系統(tǒng)中,然而,電影排期場(chǎng)次的可售的座位信息隨時(shí)可能被其他代理商的代理系統(tǒng)或者原生系統(tǒng)的地面訂票行為所改變,需要實(shí)時(shí)地從原生系統(tǒng)獲取。
因此,在通常的實(shí)現(xiàn)中,代理系統(tǒng)搶票的時(shí)候集中地獲取可售座位圖的訪問(wèn)量將直接傳遞給原生系統(tǒng),由于原生系統(tǒng)與代理系統(tǒng)由不同的公司所開發(fā),兩個(gè)系統(tǒng)建設(shè)目標(biāo)和性能指標(biāo)不一定能夠匹配,例如,代理系統(tǒng)所能承受的最大并發(fā)連接數(shù)可能會(huì)遠(yuǎn)大于原生系統(tǒng),代理系統(tǒng)每秒能處理的請(qǐng)求數(shù)很可能將受限于原生系統(tǒng)。一旦代理售票應(yīng)用系統(tǒng)進(jìn)行大規(guī)模的營(yíng)銷活動(dòng),會(huì)承受越來(lái)越大的壓力,每個(gè)請(qǐng)求都將對(duì)原生系統(tǒng)帶來(lái)一個(gè)新的并發(fā)訪問(wèn)連接,將直接導(dǎo)致原生系統(tǒng)的CPU資源、網(wǎng)絡(luò)資源、磁盤I/O資源、數(shù)據(jù)庫(kù)連接資源等快速耗盡,極短時(shí)間內(nèi)實(shí)時(shí)可售座位圖請(qǐng)求造成的高并發(fā)訪問(wèn)的壓力可能直接把原生票源系統(tǒng)壓垮,導(dǎo)致原生票源系統(tǒng)崩潰,如圖2所示。
對(duì)此,本文提出一種高效可行的解決方案,實(shí)現(xiàn)高并發(fā)訂票壓力下代理票務(wù)應(yīng)用系統(tǒng)對(duì)外部原生票務(wù)系統(tǒng)的過(guò)載壓力保護(hù);設(shè)計(jì)出一種新型的票務(wù)應(yīng)用系統(tǒng),以減少高并發(fā)壓力下對(duì)外部票務(wù)系統(tǒng)的訪問(wèn)流量沖擊,降低外部票務(wù)系統(tǒng)的訪問(wèn)壓力。
4 系統(tǒng)高并發(fā)處理技術(shù)方案
4.1 整體方案概述
本文提出的系統(tǒng)高并發(fā)處理技術(shù)方案,實(shí)現(xiàn)了在高并發(fā)訂票壓力下對(duì)原生票務(wù)系統(tǒng)的過(guò)載壓力保護(hù)。通過(guò)監(jiān)控并發(fā)訪問(wèn)壓力,當(dāng)超過(guò)閾值時(shí),自動(dòng)啟動(dòng)可售座位數(shù)據(jù)的緩存機(jī)制。在電影排期的可售座位緩存數(shù)據(jù)超時(shí)失效的時(shí)候,集群里的多臺(tái)服務(wù)器、多個(gè)線程競(jìng)爭(zhēng)獲取訪問(wèn)令牌,獲取令牌成功的唯一線程作為代表去外部票務(wù)系統(tǒng)獲取該排期最新的可售座位。本方案減少了高并發(fā)壓力下對(duì)外部票務(wù)系統(tǒng)的訪問(wèn)流量沖擊,降低了外部票務(wù)系統(tǒng)的訪問(wèn)壓
力。高并發(fā)票務(wù)應(yīng)用系統(tǒng)實(shí)現(xiàn)技術(shù)方案中包含幾個(gè)模塊:票務(wù)應(yīng)用系統(tǒng)、過(guò)載保護(hù)模塊、在線座位圖緩存、訪問(wèn)令牌池。其連接情況如圖3所示。
票務(wù)應(yīng)用系統(tǒng)為傳統(tǒng)的售票代理邏輯;過(guò)載保護(hù)模塊為代理系統(tǒng)與原生票務(wù)系統(tǒng)中間的代理模塊,監(jiān)控售票代理系統(tǒng)與原生票務(wù)系統(tǒng)在過(guò)去60 s內(nèi)的連接數(shù),當(dāng)超過(guò)預(yù)先設(shè)置閾值時(shí),啟動(dòng)過(guò)載保護(hù)的模式;在線座位圖緩存模塊維護(hù)一份可供顯示的座位圖數(shù)據(jù),該座位圖信息是允許時(shí)間范圍內(nèi)的相對(duì)較新的座位圖數(shù)據(jù)。座位圖訪問(wèn)令牌池提供去原生票務(wù)系統(tǒng)獲取座位圖信息所需的訪問(wèn)令牌,每個(gè)座位圖有一個(gè)訪問(wèn)令牌,在過(guò)載保護(hù)模式下,只有獲得令牌的工作線程才能去訪問(wèn)原生票務(wù)系統(tǒng)獲取座位圖。
4.2高并發(fā)處理機(jī)制
針對(duì)上述技術(shù)方案,本文制定了一種在線選座過(guò)程中的高并發(fā)處理機(jī)制,對(duì)代理的票務(wù)應(yīng)用系統(tǒng)進(jìn)行策略化改造,具體如圖4所示。
圖4中,該實(shí)施機(jī)制可以包括以下步驟。
(S402)監(jiān)控各代理票務(wù)系統(tǒng)發(fā)往原生票務(wù)系統(tǒng)的連接請(qǐng)求。
(S404)判斷設(shè)定時(shí)間內(nèi)發(fā)往同一原生票務(wù)系統(tǒng)的連接請(qǐng)求次數(shù)是否超過(guò)設(shè)定閾值,如果超過(guò)設(shè)定閾值,則轉(zhuǎn)步驟(S406),否則,轉(zhuǎn)步驟(S408);具體地,以同一原生票務(wù)系統(tǒng)接收到的連接請(qǐng)求為準(zhǔn),計(jì)算該請(qǐng)求倒推設(shè)定時(shí)間內(nèi)的發(fā)往同一原生票務(wù)系統(tǒng)的連接次數(shù)是否超過(guò)設(shè)定閾值。
(S406)攔截發(fā)往原生票務(wù)系統(tǒng)的連接請(qǐng)求,并啟動(dòng)過(guò)載保護(hù)模式;具體地,如果超過(guò)設(shè)定閾值,則認(rèn)為現(xiàn)在對(duì)同一原生票務(wù)系統(tǒng)的訪問(wèn)過(guò)于密集,可能會(huì)造成原生票務(wù)系統(tǒng)的癱瘓,因此需要啟動(dòng)過(guò)載保護(hù)模式,即不能直接將連接請(qǐng)求透?jìng)髦猎眲?wù)系統(tǒng),而是根據(jù)下述情形分別進(jìn)行處理。
(S408)將連接請(qǐng)求透?jìng)髦猎眲?wù)系統(tǒng)。
(S410)響應(yīng)于對(duì)連接請(qǐng)求的攔截,查詢?cè)诰座位圖緩存內(nèi)是否存在所請(qǐng)求的座位圖,如果存在,則轉(zhuǎn)步驟(S412),否則,轉(zhuǎn)步驟(S416)。
(S412)根據(jù)所請(qǐng)求的座位圖的存活時(shí)間判斷所請(qǐng)求的座位圖是否可用,如果可用,則轉(zhuǎn)步驟(S414),否則,轉(zhuǎn)步驟(S416)。具體地,該存活時(shí)間是個(gè)大于零的數(shù),具體數(shù)值可以由用戶設(shè)置。如果查詢到的存活時(shí)間大于零,則表明緩存內(nèi)所請(qǐng)求的座位圖可用,否則表明緩存內(nèi)所請(qǐng)求的座位圖不可用。
(S414)將在線座位圖緩存內(nèi)存儲(chǔ)的所請(qǐng)求的座位圖反饋給發(fā)起該連接請(qǐng)求的用戶。
(S416)申請(qǐng)獲取訪問(wèn)原生票務(wù)系統(tǒng)的令牌。
(S418)響應(yīng)于對(duì)令牌的獲取,從原生票務(wù)系統(tǒng)獲取所請(qǐng)求的座位圖,以基于所獲取的座位圖進(jìn)行座位的選。壕唧w地,當(dāng)多個(gè)連接請(qǐng)求均申請(qǐng)?jiān)L問(wèn)同一個(gè)原生票務(wù)系統(tǒng)內(nèi)針對(duì)同一座位圖的令牌時(shí),只有一個(gè)連接能夠獲取到訪問(wèn)令牌,例如,可以根據(jù)各個(gè)連接請(qǐng)求訪問(wèn)時(shí)間的先后順序確定能夠獲取訪問(wèn)令牌的連接請(qǐng)求。
在該實(shí)施案例中,在設(shè)定時(shí)間內(nèi)如果訪問(wèn)同一個(gè)原生票務(wù)系統(tǒng)的連接請(qǐng)求數(shù)過(guò)高(如超過(guò)設(shè)定閾值),則由過(guò)載保護(hù)裝置對(duì)這些連接請(qǐng)求進(jìn)行攔截,根據(jù)在線座位圖緩存內(nèi)存儲(chǔ)的所請(qǐng)求的座位圖的存活時(shí)間或者直接獲取該緩存的座位圖,或者獲取/等待令牌以自原生票務(wù)系統(tǒng)獲取相應(yīng)的座位圖。這樣既保證了用戶能夠及時(shí)獲取最新的座位圖,同時(shí)也降低了對(duì)原生票務(wù)系統(tǒng)的訪問(wèn)壓力。
在步驟(S418)之后,響應(yīng)于對(duì)令牌的獲取,在從原生票務(wù)系統(tǒng)獲取所請(qǐng)求的座位圖后,將獲取的座位圖更新到在線座位圖緩存中,設(shè)置存活時(shí)間,并啟動(dòng)倒計(jì)時(shí)。這樣,如果在過(guò)載保護(hù)模式下且相應(yīng)座位圖的存活時(shí)間大于0.則其他請(qǐng)求同一座位圖的連接請(qǐng)求可以直接從在線座位圖緩存中獲取相應(yīng)的座位圖。
進(jìn)一步地,在步驟(S416)之后,如果連接請(qǐng)求未獲取到訪問(wèn)原生票務(wù)系統(tǒng)的令牌,則未獲取到令牌的連接請(qǐng)求進(jìn)入休眠狀態(tài),等待在線座位圖緩存內(nèi)所請(qǐng)求的座位圖的更新或等待獲取令牌。此時(shí),未獲取到訪問(wèn)原生票務(wù)系統(tǒng)令牌的連接可以同時(shí)檢測(cè)是否獲取令牌以及在線座位圖緩存內(nèi)所請(qǐng)求的座位圖是否更新,如果先獲取令牌則直接到原生票務(wù)系統(tǒng)獲取實(shí)時(shí)的座位圖,如果先檢測(cè)到緩存的更新,則直接到在線座位圖緩存中讀取所請(qǐng)求的座位圖,這樣可以顯著提高在線預(yù)訂座位的實(shí)時(shí)性。
在步驟(S408)中,連接請(qǐng)求被透?jìng)髦猎眲?wù)系統(tǒng),在選定座位后,將所請(qǐng)求的座位圖更新至在線座位圖緩存中。這樣,如果后續(xù)連接請(qǐng)求被過(guò)載保護(hù),在存活時(shí)間有效的前提下,這些連接請(qǐng)求可以直接到在線座位圖緩存內(nèi)讀取所請(qǐng)求的座位圖,既提高了預(yù)訂座位的實(shí)時(shí)性,又避免了對(duì)原生票務(wù)系統(tǒng)造成較大的沖擊。
在步驟( S406)中,過(guò)載保護(hù)模式啟動(dòng),設(shè)置在線座位圖緩存內(nèi)被過(guò)載保護(hù)的原生票務(wù)系統(tǒng)的各座位圖的存活時(shí)間,并啟動(dòng)倒計(jì)時(shí)。由于在連接請(qǐng)求不被攔截時(shí),每次訪問(wèn)完原生票務(wù)系統(tǒng)都將所請(qǐng)求的座位圖更新到在線座位圖緩存內(nèi),因此,在線座位圖緩存內(nèi)存儲(chǔ)被過(guò)載保護(hù)的原生票務(wù)系統(tǒng)的各個(gè)座位圖均為最新狀態(tài)的座位圖,可以直接啟動(dòng)對(duì)相應(yīng)座位圖的存活時(shí)間的倒計(jì)時(shí)。
在步驟(S416)之后,對(duì)令牌進(jìn)行獲取,同時(shí)生成該令牌的超時(shí)時(shí)間,以便在該令牌超時(shí)時(shí)釋放該令牌。
4.3過(guò)載保護(hù)模塊工作流程
該機(jī)制實(shí)施的核心點(diǎn),在于過(guò)載保護(hù)模塊的正常運(yùn)行以及與周邊相關(guān)模塊或系統(tǒng)的協(xié)作。接下來(lái),仍以電影票訂購(gòu)業(yè)務(wù)為例,通過(guò)具體實(shí)例對(duì)系統(tǒng)高并發(fā)處理的技術(shù)方案進(jìn)行進(jìn)一步說(shuō)明。
正常壓力狀態(tài)下售票代理票務(wù)系統(tǒng)連往原生票務(wù)系統(tǒng)的連接在閾值的范圍內(nèi),過(guò)載保護(hù)模塊處在請(qǐng)求透?jìng)鞯臓顟B(tài),將從業(yè)務(wù)代理票務(wù)系統(tǒng)的請(qǐng)求直接發(fā)往目標(biāo)的外部原生票源系統(tǒng),此時(shí)相當(dāng)于座位圖緩存數(shù)據(jù)的存活時(shí)間為0。
當(dāng)并發(fā)用戶集中發(fā)起訂票致使售票代理票務(wù)系統(tǒng)連往原生票務(wù)系統(tǒng)的連接超出了閾值范圍,過(guò)載保護(hù)模塊啟動(dòng)工作,以電影票售票代理系統(tǒng)為例,其流程如圖5所示。
步驟1 用戶發(fā)起的查看座位圖的請(qǐng)求發(fā)送給售票代理票務(wù)系統(tǒng),在并發(fā)訪問(wèn)過(guò)程中,每個(gè)用戶對(duì)應(yīng)一個(gè)工作線程,每個(gè)工作線程均企圖發(fā)起對(duì)原生票務(wù)系統(tǒng)的獲取座位圖的連接請(qǐng)求,這些連接請(qǐng)求被過(guò)載保護(hù)模塊攔截。
步驟2過(guò)載保護(hù)模塊啟動(dòng)查詢座位圖緩存,座位圖緩存池中如果存在該電影某影廳某個(gè)播放場(chǎng)次(排期)座位圖,并在緩存數(shù)據(jù)的存活時(shí)間T內(nèi),直接返回緩存中的座位圖。否則,轉(zhuǎn)到步驟3。在此,在存活時(shí)間內(nèi)的座位圖可能不是最新的排期座位圖,因此存在一種可能,用戶看到的可選座位實(shí)際上已經(jīng)賣出。然而,這是一種更優(yōu)的做法。假設(shè)排期緩存存活時(shí)間為T,緩存生效減少了原生票務(wù)系統(tǒng)的訪問(wèn)壓力,使之保持正常工作狀態(tài)。原生票務(wù)系統(tǒng)繁忙擁塞,即便是每次調(diào)用均去原生票務(wù)系統(tǒng),并不可能得到馬上的反饋,在原生票務(wù)系統(tǒng)擁塞訪問(wèn)的時(shí)間T’很可能會(huì)大于T;代理系統(tǒng)仍然只能得到T’時(shí)間之前的座位圖。更差的一種情況是,由于訪問(wèn)請(qǐng)求太多,原生的票務(wù)系統(tǒng)直接崩潰。
步驟3去排期座位圖訪問(wèn)令牌池申請(qǐng)?jiān)L問(wèn)令牌,由于該座位圖可能多個(gè)用戶同時(shí)申請(qǐng)?jiān)L問(wèn),每個(gè)用戶將產(chǎn)生一個(gè)工作線程,同一個(gè)座位圖的令牌為多臺(tái)機(jī)器多個(gè)工作線程(每個(gè)連接一個(gè)線程)同時(shí)競(jìng)爭(zhēng),同一時(shí)間僅僅有一個(gè)工作線程能夠獲得座位圖的訪問(wèn)令牌。成功生成該座位圖的令牌的同時(shí),還生成排期座位圖訪問(wèn)令牌的超時(shí)時(shí)間,當(dāng)獲取令牌的工作線程不能在超時(shí)時(shí)間內(nèi)完成更新排期座位圖的更新操作時(shí),該令牌將被釋放。
步驟4獲取令牌的唯一線程去原生票務(wù)系統(tǒng)獲取該排期的最新可售的座位信息,每個(gè)排期僅在座位圖失效時(shí)有一個(gè)線程能夠獲得令牌作為代表訪問(wèn)原生票務(wù)系統(tǒng)。此時(shí)外部票務(wù)系統(tǒng)查詢座位圖的最大的請(qǐng)求連接數(shù)將是票務(wù)系統(tǒng)提供的所有排期總數(shù):例如,原生票務(wù)系統(tǒng)當(dāng)前一共提供100個(gè)電影影廳播放場(chǎng)次(排期),在排期座位圖緩存生效的時(shí)候,最多一個(gè)排期有一個(gè)連接去原生票務(wù)系統(tǒng)更新座位圖數(shù)據(jù),于是原生票務(wù)系統(tǒng)最多可能有100個(gè)請(qǐng)求連接過(guò)來(lái)更新排期座位圖數(shù)據(jù)。
步驟5獲取令牌的唯一線程將座位圖信息更新到代理票務(wù)系統(tǒng)緩存之后釋放(刪除)令牌。
步驟6競(jìng)爭(zhēng)不到令牌的線程進(jìn)入休眠狀態(tài)等待,直到數(shù)據(jù)被更新或者令牌被釋放。
5 系統(tǒng)性能優(yōu)化結(jié)果分析
針對(duì)電影票訂購(gòu)類業(yè)務(wù),本文提出的新型系統(tǒng)經(jīng)過(guò)上述優(yōu)化處理,在可售座位查詢請(qǐng)求中與外部原生票務(wù)系統(tǒng)間訪問(wèn)壓力的關(guān)系如圖6、圖7所示。
并發(fā)壓力在閾值以內(nèi),座位圖超時(shí)時(shí)間為0.此時(shí)排期座位圖的查詢請(qǐng)求直接轉(zhuǎn)發(fā)給外部票務(wù)系統(tǒng)。當(dāng)并發(fā)用戶壓力達(dá)到某個(gè)閾值時(shí),可售座位信息的超時(shí)時(shí)間自動(dòng)置位為T,過(guò)載保護(hù)的機(jī)制開始生效。
每個(gè)排期僅在座位圖失效時(shí)有一個(gè)線程作為代表訪問(wèn)外部票務(wù)系統(tǒng)。此時(shí)外部票務(wù)系統(tǒng)查詢座位圖的最大的請(qǐng)求連接數(shù)將是票務(wù)系統(tǒng)提供的排期總數(shù)。
在加載過(guò)載保護(hù)模塊后,原生票務(wù)系統(tǒng)并發(fā)用戶壓力與售票代理系統(tǒng)的并發(fā)用戶壓力關(guān)系如圖7所示,隨著用戶并發(fā)壓力的增大,原生票務(wù)系統(tǒng)的訪問(wèn)壓力也隨之增大,到了過(guò)載保護(hù)生效的時(shí)候,訪問(wèn)壓力漸漸趨近于原生票務(wù)系統(tǒng)提供的排期總數(shù)。
在實(shí)際的項(xiàng)目實(shí)施中,本文對(duì)新型系統(tǒng)的性能進(jìn)行了全面的壓力測(cè)試。從圖8可以看出,經(jīng)過(guò)高并發(fā)處理優(yōu)化后的新型票務(wù)應(yīng)用系統(tǒng),在0.1 s、1s和2.5 s這幾檔不同的響應(yīng)時(shí)間約束中,瓶頸接口的并發(fā)性能上均得到了巨大的提升。
6結(jié)束語(yǔ)
本文從票務(wù)應(yīng)用服務(wù)的系統(tǒng)架構(gòu)切入,以電影票訂購(gòu)業(yè)務(wù)為實(shí)例,全面剖析了票務(wù)應(yīng)用系統(tǒng)及服務(wù)在業(yè)務(wù)實(shí)施過(guò)程中的性能瓶頸:并有針對(duì)性地提出了高效可行的解決方案,設(shè)計(jì)出一種支持高并發(fā)處理的新型票務(wù)應(yīng)用系統(tǒng),實(shí)現(xiàn)在高并發(fā)訂票壓力下對(duì)外部的原生票務(wù)系統(tǒng)的過(guò)載壓力保護(hù),提高了系統(tǒng)本身的穩(wěn)定性、頑健性。目前該系統(tǒng)的核心技術(shù)已申請(qǐng)專利保護(hù),并在電影票訂購(gòu)等移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)中成功實(shí)施,有效支撐了業(yè)務(wù)多次大規(guī)模的全國(guó)性
營(yíng)銷活動(dòng),為客戶帶來(lái)便捷體驗(yàn),為企業(yè)節(jié)約了服務(wù)器等成本投入,實(shí)現(xiàn)經(jīng)濟(jì)效益與社會(huì)效益的雙贏。
上一篇:一種基于Kepler架構(gòu)GPU的通信仿真加速方法
下一篇:返回列表