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