嚴肅科普:12306能扛得住明星併發出軌級的流量嗎?

12306: 這是我被黑得最慘的一次。

買着票了嗎您?

又是一年春運到來時,每年的這個時候,大家見面的問候語就從“吃了嗎您?”變成了“買着票了嗎您?”,於是相視苦笑,“¥%#& 的 12306”。春運是這個星球上最大規模的人類遷移活動,每年有長達 40 天的時間裏,空運、鐵路、公路齊上陣,運送着數十億人次的旅客。

鐵路系統,更是其中重要一環,歷年鐵路春運數據一覽:

  • 2016 年,鐵路春運 40 天累計發送旅客 3.03 億人次;
  • 2017 年,鐵路春運 40 天累計發送旅客 3.57 億人次;
  • 2018 年,鐵路春運 40 天累計發送旅客 3.8 億人次;
  • 2019 年,鐵路春運預計發送旅客 4 億人次。

12306 春運放票可謂是互聯網史上最無辜的“飢餓營銷”:放票一秒鐘基本就沒票了,掛個攜程、同程、飛豬、智行刷上一星期也未必搶得着一張票,找黃牛、自己寫搶票腳本,八仙過海各顯神通,“洛陽親友如相問,就說我在搶車票”。

於是乎,吃瓜羣衆們認爲 12306 的系統簡直太爛了,都提前一個月了還買不着票。就像全國有好幾億人想教張小龍做微信一樣,大概也有無數人想教 12306 怎麼出票。

於是乎有人問了,12306 的系統能扛住明星併發出軌級別的流量嗎?

12306: 你不懂我,我不怪你

12306 的發展歷程

  • 2010 年 1 月 30 日(2010 年春運首日)12306 網站開通並試運行。用戶可查詢列車時刻、票價、餘票、代售點、正晚點等信息。
  • 2011 年 1 月 19 日(2011 年春運首日),中華人民共和國 18 個鐵路局(公司)所在地也分別成立了鐵路客戶服務中心,並公佈了服務熱線。
  • 2011 年 06 月 12 日,京津城際鐵路率先試水網絡售票。
  • 2011 年 9 月 30 日,所有動車組線路實施網上訂票。
  • 2011 年 11 月 20 日,Z 字頭全部直達特快列車車票實施網上訂票。
  • 2011 年 12 月 23 日,鐵道部最終兌現在年底前網絡售票覆蓋所有車次的承諾。
  • 2013 年 12 月 8 日,12306 手機客戶端正式開放下載。
  • 2015 年 1 月 16 日,阿里雲方面證實,12306 網站 75% 的餘票查詢系統已經遷移至阿里雲計算平臺上。
  • 2018 年 11 月 3 日,改版升級的中國鐵路 12306 網站正式上線運營。

至此,12306 的佈局、功能基本完善,在支撐春運的流量考驗下持續着迭代之旅和來自沒買到票羣衆的無情鞭撻。

12306 的設計模式

需求分析

服務旅客需求:

  • 在線售票服務需求;
  • 線下配套服務需求。

業務管理需求:

互聯網售票涉及的票額、預售期、售票時 間、席別、票種、車次、車站、實名證件類型、網 站開放時間、業務辦理時限、允許購票張數、售票收入統計、旅客投訴受理,異常用戶處理等業務。

系統監控需求:

包括對互聯網售票過程中涉及的軟硬件設備進行資源利用、負載等運行狀態的監控,以及對互 聯網售票處理速度、購票旅客行爲、訂單狀態等進 行監控,確保系統安全,穩定、高效運行。

系統結構、功能設計

鐵路互聯網售票相關的系統包括客票系統、12306 網站、互聯網售票業務處理平臺、鐵路電子 支付平臺以及站車無線交互平臺 5 部分。如下圖:

鐵路互聯網售票系統功能如下:

業務流程設計如下:

業務場景複雜在哪兒?

2012 年春運,由於訪問量超出設計預期, 12306 網站在高峯期出現了頁面打開緩慢、查詢和下 單報錯、後臺系統過載等一系列問題。持續的高併發訪問使系統在多個方面出現性能瓶頸,如下圖:

在平時,12306 也就是個普通的購票網站。一旦到了春運、黃金週,12306 就是一個 1 全站所有商品都秒殺,所有 SKU 都是動態庫存的存在。

從那以後,鐵路系統的研發團隊就一直在對系統架構、應用功能以及業務規則進行持續優化和改進。與此同時的,則是逐年刷新客流量峯值的春運、黃金週的高併發考驗。

12306 的業務場景到底複雜在哪兒?

火車票跟很多票(包括各大電商的商品、機票、演唱會門票等)有不一樣的屬性。比如,從北京到廣州,沿途有多個站點,理論上乘客可以選擇任意 一段區間購票,所以每買一張區間票,可能同時裂變出多張區間票。這個邏輯比大多數電子商務系統要複雜的多。

購票差異還不僅限與此。比如再添加一些更人性化的功能:根據訂票者身份證裏的年齡優選上下鋪、優選號等,那麼查詢和出票邏輯就更復雜了。

根據官方公佈的數字,有人統計了一下:需要數千個 pv,才能出一張票。這個說法並不能得出“出票效率低”的結論,但是恰恰很形象地說明了查詢量的巨大。

12306 的查詢量不同於電商網站的商品查詢,秒殺甚至飢餓營銷搶購不到也就算了,火車票是搶不到也時刻惦記着甚至不惜寫腳本 24 小時不間斷刷新、查詢的東西。

上圖是爬蟲流量的目標行業分佈圖,可以看到排第一名的是出行行業,而出行行業中近 90% 的爬蟲流量都瞄準了 12306。

“12306 日均頁面瀏覽量達到 556.7 億次,最高峯時頁面瀏覽量達 813.4 億次,1 小時最高點擊量 59.3 億次,平均每秒 164.8 萬次。”

這是加上驗證碼防護以後的數據,被攔在門外的爬蟲流量有多少?不計其數。

上圖是經過多次優化後的 12306 體系架構,可以看出比起前一張圖,無論是系統的複雜程度還是結構的完善程度都有了巨大的提升。即便是這樣,買不到票的人仍然很多。

事實上,像春運這樣大規模的人類遷徙事件,從客觀情況而言,技術只能起到緩解、改善、照顧到大部分人的作用。至於“根治”,需要的不僅是購票系統的技術水平持續提升,更加需要交通運輸行業的持續進化。

回到最初的問題:12306 能扛得住明星併發出軌級的流量嗎?

鐵總:加機器擴容就能解決的事兒,不用來問我。

寫在最後

普通人罵 12306,是因爲他們不懂技術,也沒有耐心去了解這背後的技術難點、業務場景複雜度。他們罵 12306,只是因爲他們想回家。

要不我們再黑 12306 一把:如果讓你來設計,你會給 12306 什麼樣的解決方案應對春運級別的流量?歡迎評論區留言告訴我們你的天才設想。

參考資料:
http://www.tljsjyy.com/CN/abstract/abstract3756.shtml
http://www.tljsjyy.com/CN/abstract/abstract2613.shtml
http://daily.zhihu.com/story/4453176

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章