火車(chē)票永遠(yuǎn)難買(mǎi)?12306的發(fā)展是一部“斗智斗勇”的進(jìn)化史
國(guó)慶假期,你在12306上搶到票了嗎?
雖然每到節(jié)假日“高鐵票好難買(mǎi)啊”“為什么開(kāi)票就搶了還是候補(bǔ)呀”等吐槽不絕于耳,但從2011年6月12日上線起,中國(guó)鐵路客戶(hù)服務(wù)中心12306平臺(tái)至今已不知不覺(jué)走過(guò)了13載春秋,也成為了大部分旅客乘坐高鐵出行的首選購(gòu)票平臺(tái)。
回顧12306的發(fā)展歷程可以說(shuō)是一部與搶票軟件斗智斗勇,“魔高一尺道高一丈”的“史詩(shī)”。
2024國(guó)慶,鐵路迎來(lái)客運(yùn)高峰 ICPhoto
一切還得從12306成立的時(shí)候說(shuō)起。隨著2011年6月12日第一張京津城際鐵路電子客票的售出,中國(guó)正式拉開(kāi)了鐵路網(wǎng)絡(luò)售票的序幕,此后短短幾個(gè)月,網(wǎng)絡(luò)售票的范圍就急速擴(kuò)展到了京滬、武廣、鄭西等高鐵線路。到9月30日,全國(guó)范圍的高鐵車(chē)票(G字頭、D字頭)都可以上12306購(gòu)買(mǎi)。到2011年底,全國(guó)范圍的火車(chē)車(chē)票(Z字頭、T字頭、K字頭)都可以上12306購(gòu)買(mǎi)。僅用了半年時(shí)間,中國(guó)鐵路網(wǎng)絡(luò)購(gòu)票就完成了“從無(wú)到有”到“全面普及”的飛躍!
但鐵路網(wǎng)絡(luò)購(gòu)票的新鮮感還沒(méi)消散,2012年的春運(yùn)便悄然而至,春運(yùn)——這一世界罕見(jiàn)的人口大遷徙盛況,每年都會(huì)給中國(guó)的交通行業(yè)帶來(lái)前所未有的壓力,可以說(shuō)是交通行業(yè)的“大考”。而12306的第一次系統(tǒng)崩潰也來(lái)得出乎所有人的預(yù)料。
從2012年1月5日起,12306網(wǎng)站連續(xù)5天點(diǎn)擊量超過(guò)10億次,訪問(wèn)量環(huán)比上月激增10余倍,其中1月9日點(diǎn)擊量超過(guò)14億次,成為全球最繁忙的網(wǎng)站之一——要知道2011年底中國(guó)網(wǎng)民也才5億人。
對(duì)于這樣的訪問(wèn)壓力平臺(tái)在建設(shè)之初并非沒(méi)有考慮到。12306系統(tǒng)建設(shè)之初,在借鑒和參考客票核心系統(tǒng)架構(gòu)的基礎(chǔ)上,根據(jù)互聯(lián)網(wǎng)應(yīng)用的特點(diǎn),研發(fā)者們?yōu)橄到y(tǒng)設(shè)計(jì)了緩存服務(wù)、用戶(hù)管理、車(chē)票查詢(xún)、訂單及電子客票處理等多個(gè)相對(duì)獨(dú)立的業(yè)務(wù)分區(qū),以及三級(jí)網(wǎng)絡(luò)安全域,分別是外網(wǎng)、內(nèi)網(wǎng)和客票網(wǎng)。上線前的壓力測(cè)試,一筆流程包含用戶(hù)登錄、車(chē)票查詢(xún)、下單及支付等業(yè)務(wù)操作,系統(tǒng)極限交易能力為34張/秒,按高峰期10小時(shí)計(jì)算,售票量可達(dá)到120萬(wàn)張/天的設(shè)計(jì)能力。
然而,壓力測(cè)試卻漏算了一個(gè)“不速之客”——搶票軟件。搶票軟件是一種基于瀏覽器的插件,利用機(jī)器的快速反應(yīng)來(lái)幫助用戶(hù)完成不斷查詢(xún)和刷新頁(yè)面的動(dòng)作,通過(guò)高頻查詢(xún)車(chē)次余票、自動(dòng)填寫(xiě)個(gè)人信息、多賬號(hào)同時(shí)操作等方式,從而比手動(dòng)購(gòu)票的用戶(hù)更快完成購(gòu)票流程。
苦于平臺(tái)“無(wú)票”的旅客為了確保萬(wàn)無(wú)一失只能花錢(qián)求助搶票軟件
由于缺乏對(duì)搶票軟件造成的超大流量訪問(wèn)的充分預(yù)估,導(dǎo)致12306在大量搶票軟件面前不堪一擊——12306網(wǎng)站出現(xiàn)癱瘓情況,大量用戶(hù)無(wú)法登錄,頁(yè)畫(huà)刷新時(shí)間長(zhǎng)達(dá)30分鐘,訂票付了款卻無(wú)法購(gòu)票。不少購(gòu)票者無(wú)奈地怒斥12306網(wǎng)站“形同虛設(shè)”。
但是開(kāi)弓沒(méi)有回頭箭,12306客票團(tuán)隊(duì)只能背水一戰(zhàn)了:針對(duì)帶寬不足的問(wèn)題,12306客票團(tuán)隊(duì)當(dāng)機(jī)立斷,迅速將帶寬由600兆上調(diào)至1000兆,不久又上調(diào)至1500兆;客票團(tuán)隊(duì)對(duì)網(wǎng)上購(gòu)票數(shù)據(jù)進(jìn)行監(jiān)控與分析后發(fā)現(xiàn),極個(gè)別用戶(hù)在網(wǎng)上大量購(gòu)票,單日購(gòu)票總量竟超過(guò)100張。為保證購(gòu)票公平,自1月5日起,12306客票團(tuán)隊(duì)對(duì)網(wǎng)上購(gòu)票流程進(jìn)行了調(diào)整,在用戶(hù)購(gòu)票成功后系統(tǒng)將強(qiáng)制用戶(hù)退出,再次購(gòu)票時(shí)需重新登錄。
原鐵道部還想到了邀請(qǐng)“外援”,當(dāng)時(shí)所有網(wǎng)站中有豐富的“短時(shí)間內(nèi)訪問(wèn)量劇增下不垮掉”經(jīng)驗(yàn)的莫過(guò)于“雙十一”搞得如火如荼的天貓和淘寶了。于是,阿里巴巴集團(tuán)派出17名技術(shù)精英組成項(xiàng)目組,協(xié)助12306網(wǎng)站進(jìn)行優(yōu)化和改進(jìn)。兩支團(tuán)隊(duì)并肩作戰(zhàn),使12306網(wǎng)站的用戶(hù)體驗(yàn)得到了極大地改善。系統(tǒng)的每日售票量由1月上旬的65萬(wàn)張?zhí)岣叩?00萬(wàn)張以上,并于1月20日創(chuàng)造了119.2萬(wàn)張的日售票最高紀(jì)錄。
天貓?zhí)詫毶坛堑?ldquo;雙11全球購(gòu)物狂歡節(jié)”宣傳廣告霸屏上海徐家匯地鐵站爭(zhēng)奪用戶(hù)人氣流量 IC Photo
這場(chǎng)上線不到一年的春運(yùn)“極限測(cè)試”過(guò)后,互聯(lián)網(wǎng)上也出現(xiàn)了關(guān)于12306架構(gòu)的討論和爭(zhēng)議,當(dāng)時(shí)的鐵道部通過(guò)認(rèn)真聽(tīng)取各方意見(jiàn),也在認(rèn)真梳理問(wèn)題的原因,總結(jié)出主要是由于車(chē)票查詢(xún)以及訂單/電子客票業(yè)務(wù)分區(qū)處理能力不足,造成高峰期高并發(fā)訪問(wèn)請(qǐng)求下響應(yīng)時(shí)間過(guò)長(zhǎng),加之各個(gè)業(yè)務(wù)分區(qū)未能很好進(jìn)行隔離,導(dǎo)致系統(tǒng)由內(nèi)至外產(chǎn)生“雪崩”效應(yīng),造成網(wǎng)站擁堵,影響用戶(hù)的購(gòu)票體驗(yàn)。
針對(duì)上述問(wèn)題及原因,研發(fā)者將架構(gòu)優(yōu)化及重構(gòu)思路重點(diǎn)放在提升車(chē)票查詢(xún)和交易處理的響應(yīng)速度,提升后臺(tái)系統(tǒng)的擴(kuò)展性,改變網(wǎng)上排隊(duì)方式,減輕高峰時(shí)段集中放票造成的帶寬壓力。同時(shí)盡可能分離核心業(yè)務(wù),減少業(yè)務(wù)環(huán)節(jié)間的強(qiáng)關(guān)聯(lián),具體內(nèi)容包括:
首先,必須大幅提升并發(fā)查詢(xún)能力,12306使用內(nèi)存計(jì)算數(shù)據(jù)庫(kù)取代傳統(tǒng)數(shù)據(jù)庫(kù),將車(chē)票查詢(xún)的響應(yīng)速度由不足1000次/秒提升至超過(guò)20000次/秒,響應(yīng)時(shí)間由原來(lái)的1s縮減至10ms,使用戶(hù)可以快速獲取到車(chē)次及余票情況。
其次,要讓用戶(hù)在高峰期“排隊(duì)下單不擁堵”,為此12306構(gòu)建了交易處理排隊(duì)系統(tǒng),隊(duì)列的下單請(qǐng)求接收能力超過(guò)10萬(wàn)筆/秒,用戶(hù)可以在售票高峰期迅速完成下單操作,等候系統(tǒng)依次處理,等候過(guò)程中可以查詢(xún)排隊(duì)狀態(tài)(等候處理的時(shí)間)。排隊(duì)系統(tǒng)中也采用了內(nèi)存計(jì)算數(shù)據(jù)庫(kù)。
第三,對(duì)訂單/電子客票進(jìn)行分節(jié)點(diǎn)分庫(kù)分表改造,將原有的1個(gè)節(jié)點(diǎn)、1個(gè)庫(kù)、1張表拆分為3個(gè)節(jié)點(diǎn)、30個(gè)庫(kù)、30張表,線上相關(guān)操作被分散到各個(gè)節(jié)點(diǎn)和庫(kù)表中,這樣,用戶(hù)在網(wǎng)站上的訂票請(qǐng)求可以得到更快的響應(yīng)和處理。
最后,對(duì)訂票、取票操作進(jìn)行了業(yè)務(wù)分離,由不同的業(yè)務(wù)節(jié)點(diǎn)(售票節(jié)點(diǎn)和取票節(jié)點(diǎn))承載網(wǎng)上售票和線下取票業(yè)務(wù);對(duì)訂單/電子客票生成和查詢(xún)進(jìn)行了讀寫(xiě)分離,使用內(nèi)存計(jì)算數(shù)據(jù)庫(kù)集中存儲(chǔ)訂單/電子客票,訂單查詢(xún)的響應(yīng)速度由200次/秒左右提升至5000次/秒以上,大幅提升了訂單/電子客票的查詢(xún)效率。
優(yōu)化架構(gòu)后的系統(tǒng)在上線前壓力的測(cè)試中,極限交易能力為300張/秒,可以滿(mǎn)足日售票量500萬(wàn)的業(yè)務(wù)需求。2013年春運(yùn),優(yōu)化架構(gòu)后的12306網(wǎng)站最高日售票量達(dá)到364萬(wàn),占全路售票量的40%,售票量為2012年春運(yùn)最高峰(119萬(wàn))的3倍多。
2013年2月14日,家長(zhǎng)帶著孩子在安徽省淮北火車(chē)站候車(chē)返程。IC Photo
然而,對(duì)于12306平臺(tái)的需求依然在急速增長(zhǎng),原有的改良很快到達(dá)極限。2013年十一黃金周,12306互聯(lián)網(wǎng)售票量達(dá)到了460萬(wàn),再次接近系統(tǒng)處理的上限,且由于3G網(wǎng)絡(luò)的限制(4G網(wǎng)元年但未普及)和網(wǎng)民數(shù)量的迅速增長(zhǎng)導(dǎo)致高峰期外網(wǎng)入口帶寬緊張,已不能滿(mǎn)足互聯(lián)網(wǎng)售票量進(jìn)一步提升的需要。此外,作為鐵路售票的主要渠道,互聯(lián)網(wǎng)售票系統(tǒng)單中心運(yùn)行模式已不能滿(mǎn)足業(yè)務(wù)安全性和可靠性的需求。
為此,自2013年底起啟動(dòng)了12306網(wǎng)站的第2輪架構(gòu)優(yōu)化:
將用戶(hù)登錄及常用聯(lián)系人查詢(xún)等業(yè)務(wù)遷移至內(nèi)存數(shù)據(jù)庫(kù)中,提高了相關(guān)業(yè)務(wù)的處理性能和可靠性。
構(gòu)建了鐵科院第2生產(chǎn)中心,與既有的中國(guó)國(guó)家鐵路集團(tuán)有限公司第1生產(chǎn)中心間實(shí)現(xiàn)“雙活”,提升網(wǎng)站的安全性和可靠性,并將訂單/電子客票集群的處理能力提高1倍。訂單/電子客票集群擴(kuò)充至10組節(jié)點(diǎn)、100個(gè)庫(kù)、100張表。
在公有云上部署車(chē)票查詢(xún)服務(wù),通過(guò)策略配置可隨時(shí)將車(chē)票查詢(xún)流量分流至公用云,以緩解在售票高峰期網(wǎng)站的處理資源和帶寬壓力。
上線前的壓力測(cè)試驗(yàn)證了系統(tǒng)可以滿(mǎn)足1000萬(wàn)張/天的設(shè)計(jì)售票能力,在2015年春運(yùn)高峰時(shí)段,實(shí)際售票速度超過(guò)了1000張/秒(約合360萬(wàn)張/時(shí))。公有云在2015年春運(yùn)期間最高分流了75%的查詢(xún)請(qǐng)求,網(wǎng)站對(duì)外車(chē)票查詢(xún)服務(wù)能力增加了3倍。12306網(wǎng)站在2015年春運(yùn)高峰日處理了超過(guò)180億次車(chē)票查詢(xún)服務(wù),平均響應(yīng)速度超過(guò)30萬(wàn)次/秒。
隨著12306對(duì)于春運(yùn)“極限壓力”的承載能力超級(jí)加倍,一度讓設(shè)計(jì)和運(yùn)營(yíng)團(tuán)隊(duì)頭疼不已的“搶票外掛”已然成為了最大的不穩(wěn)定因素。12306團(tuán)隊(duì)雖然一再抗議購(gòu)票使用搶票軟件,但是網(wǎng)絡(luò)上依靠自動(dòng)頻繁刷新車(chē)票信息、進(jìn)行自動(dòng)填報(bào)搶票的小軟件依舊層出不窮。這類(lèi)軟件通過(guò)快速刷新票務(wù)信息,提高搶票成功率,旨在幫助用戶(hù)在第一時(shí)間搶到車(chē)票。雖然滿(mǎn)足了市場(chǎng)需求,但同時(shí)嚴(yán)重干擾了手動(dòng)購(gòu)票的大眾,影響了購(gòu)票的公平性;且為了提高成功率,用戶(hù)往往需要提前在系統(tǒng)輸入乘車(chē)人的個(gè)人信息,在“搶票”的焦慮中,親手將個(gè)人信息泄露了出去。
在這樣的背景下12306團(tuán)隊(duì)也必須做出有針對(duì)性的改變——除了持續(xù)優(yōu)化系統(tǒng)的高峰處理能力外,還引入了實(shí)名制、復(fù)雜驗(yàn)證碼、手機(jī)驗(yàn)證碼等功能,但依舊無(wú)法遏制搶票軟件的猖獗,導(dǎo)致在春運(yùn)、十一黃金周期間依舊出現(xiàn)網(wǎng)絡(luò)不暢的購(gòu)票現(xiàn)象。
直到2019年春運(yùn)期間,12306試點(diǎn)候補(bǔ)購(gòu)票服務(wù)功能。這一功能是將手動(dòng)操作的用戶(hù)訂單與搶票軟件的用戶(hù)訂單放到同一個(gè)“獎(jiǎng)池”里,大家進(jìn)行公平競(jìng)爭(zhēng),系統(tǒng)隨機(jī)挑選“中獎(jiǎng)?wù)?rdquo;完成接下去的購(gòu)票流程,這樣一來(lái),即使刷屏再快的搶票軟件也再無(wú)優(yōu)勢(shì)可言,這才使得搶票軟件的風(fēng)頭被逐漸遏制。
正所謂“魔高一尺道高一丈”,候補(bǔ)票模式是12306針對(duì)搶票軟件的一記重拳,但在利益的驅(qū)動(dòng)下,搶票軟件必定會(huì)繼續(xù)針對(duì)這一模式再次進(jìn)行不公平的競(jìng)爭(zhēng),例如提高搶票軟件訂單在候補(bǔ)票獎(jiǎng)池中的“中獎(jiǎng)概率”等。相信我們12306團(tuán)隊(duì)能夠克服困難,維護(hù)好全球訪問(wèn)量最大、交易量最大的票務(wù)系統(tǒng),雙方的“斗智斗勇”依然伴隨著中國(guó)不斷發(fā)展的鐵路網(wǎng)絡(luò)和居民出行的需求不斷進(jìn)化著。
本文轉(zhuǎn)自于 新浪熱點(diǎn)