正经科普:12306能扛得住明星并发出轨级的流量吗?
技術只能起到緩解和改善的作用。
編者按:本文來自“InfoQ”(微信號:Infoqchina),作者:小智;36氪經授權轉載。
又是一年春運到來時,每年的這個時候,大家見面的問候語就從“吃了嗎您?”變成了“買著票了嗎您?”,于是相視苦笑,“¥%#& 的 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 就是一個全站所有商品都秒殺,所有 SKU 都是動態庫存的存在。
從那以后,鐵路系統的研發團隊就一直在對系統架構、應用功能以及業務規則進行持續優化和改進。與此同時的,則是逐年刷新客流量峰值的春運、黃金周的高并發考驗。
12306 的業務場景到底復雜在哪兒?
火車票跟很多票(包括各大電商的商品、機票、演唱會門票等)有不一樣的屬性。比如,從北京到廣州,沿途有多個站點,理論上乘客可以選擇任意 一段區間購票,所以每買一張區間票,可能同時裂變出多張區間票。這個邏輯比大多數電子商務系統要復雜的多。
購票差異還不僅限與此。比如再添加一些更人性化的功能:根據訂票者身份證里的年齡優選上下鋪、優選號等,那么查詢和出票邏輯就更復雜了。
根據官方公布的數字,有人統計了一下:需要數千個 pv,才能出一張票。這個說法并不能得出“出票效率低”的結論,但是恰恰很形象地說明了查詢量的巨大。
12306 的查詢量不同于電商網站的商品查詢,秒殺甚至饑餓營銷搶購不到也就算了,火車票是搶不到也時刻惦記著甚至不惜寫腳本 24 小時不間斷刷新、查詢的東西。
?
上圖是爬蟲流量的目標行業分布圖,可以看到排第一名的是出行行業,而出行行業中近 90% 的爬蟲流量都瞄準了 12306。
“12306 日均頁面瀏覽量達到 556.7 億次,最高峰時頁面瀏覽量達 813.4 億次,1 小時最高點擊量 59.3 億次,平均每秒 164.8 萬次。”
這是加上驗證碼防護以后的數據,被攔在門外的爬蟲流量有多少?不計其數。
?
上圖是經過多次優化后的 12306 體系架構,可以看出比起前一張圖,無論是系統的復雜程度還是結構的完善程度都有了巨大的提升。即便是這樣,買不到票的人仍然很多。
事實上,像春運這樣大規模的人類遷徙事件,從客觀情況而言,技術只能起到緩解、改善、照顧到大部分人的作用。至于“根治”,需要的不僅是購票系統的技術水平持續提升,更加需要交通運輸行業的持續進化。
回到最初的問題:12306 能扛得住明星并發出軌級的流量嗎?
加機器擴容就能解決的事兒,跟12306沒啥關系。
?
普通人罵 12306,是因為他們不懂技術,也沒有耐心去了解這背后的技術難點、業務場景復雜度。他們罵 12306,只是因為他們想回家。
總結
以上是生活随笔為你收集整理的正经科普:12306能扛得住明星并发出轨级的流量吗?的全部內容,希望文章能夠幫你解決所遇到的問題。