“崩潰的”12306

春運,對12306來說是一場苛刻的考試。

每天上億人次的流量,滿負荷運行,各種吐槽不斷。

“崩潰的”12306

自帶流量還沒上限

別家的互聯網產品永遠都在擔心訪問量和使用率不夠,而12306自打出生那天起就自帶流量,運營者根本不用擔心流量KPI不達標。

2014年1月9日,因為用戶過多導致12306網站徹底癱瘓,報錯的藍色窗口讓線上購票旅客破口大罵。根據當年新浪的調查,87.9%的網友表示12306崩潰影響到了正常購票。於是,12306的帶寬從最初的400M帶寬,加到了1.5G。

很多人感覺,淘寶等電商平臺的流量也很大,尤其每年雙十一購物節的流量也十分恐怖,那為何12306的體驗永遠就這麼不上檔次呢?甚至公眾認為,只要把馬雲召喚來,問題就迎刃而解了。

事實上馬雲2015年就來了。那一年馬雲的技術團隊利用阿里雲分流了75%的12306火車票查詢業務,請注意,僅僅是查詢上的分流,這幫助購票系統平穩度過了流量高峰。而這已經是馬雲能夠做到最好的了。

“崩潰的”12306

▲ 崩潰的12306網站

奇葩驗證

好不容易大家不怎麼吐槽打開慢了,動態驗證碼又成了2014年春運時的新問題。

最開始的驗證碼形式是靜態的,但那些年為了搶票,各種瀏覽器和插件紛紛出爐,導致12306的靜態驗證碼被輕易識別,很多人事實上都在插隊購票了。

“崩潰的”12306

▲ 網友惡搞的12306的奇葩驗證碼

於是,12306的技術人員便把靜態碼換成了動態。雖然網絡插隊現象被杜絕了,可公眾識別驗證碼的難度也增加了。

公眾的吐槽仍在繼續,不得已12306又做了優化調整,將動態驗證碼更換為增加了底紋或干擾線的新版靜態驗證碼,這樣既大大降低了旅客的識別難度,同時也保持了對自動識別軟件的有效防控。

“崩潰的”12306

▲ 排長隊、窗口式的購票方式已經逐漸被網絡購票替代

之後,12306的驗證碼又進行了一輪升級變成了圖片。這進一步預防和杜絕了搶票軟件對公平購票環境的破壞。

吐槽簡單,可公眾不知道,12306的系統維護起來究竟有多難。

“崩潰的”12306

海量數據只是入門

12306在春運期間的運行維護難度,與需要面臨的數據壓力遠非雙11各大電商平臺能比,實際上十個雙11的流量與算法壓力恐怕都抵不過一個春運。根據統計,

12306官網全天提供餘票查詢服務為720億次,而12306網站日頁面瀏覽量高達813.4億。

單單這些人次的數據,估計就讓大部分程序員絕望了。可這,還不是12306系統面臨的最高難度操作。

12306維護起來的難度,估計比登天還難。

“崩潰的”12306

很多人總是拿電商平臺或者我們社交平臺的數據和12306做比對,這實際上是耍流氓。

淘寶等電商平臺的數據雖然也很大,但全部的數據都是線上的。網民從下單到店鋪發貨再到快遞的精準投放,都是在一個閉環的池子裡分發運行。商品從倉庫分發到消費者手裡,是一個預先設定好了時間段甚至時間點的固定過程。

而12306分發車票的過程就完全不一樣了。網絡購票和線下購票共享著同一個票池,而從這個池子裡拿票的過程,是線上線下隨時和不定時的過程。有人在網上買一張票,得實時更新數據,同樣去窗口買了一張票,變化之後的數據也得及時反饋到總池裡。而且,人們在各地購票的時間以及目的地都不一樣,但總池裡的數據得隨時精準不差的輸送到每一個購票的終端(或是手機上或是購票窗口)。單憑這一點,其分發難度就不知比電商貨物的分發難了多少數量級了。

電商的雙十一充其量就玩個加減乘除,而12306玩的是大學裡的高數啊。

“崩潰的”12306

你以為這樣的難度就接近天花板了?錯!這才剛剛入門。

未知性讓你不知道問題在哪兒

就以每年的剁手節來說,流量一年比一年多,但靜下心來細想,這不就是一個拿錢排隊買東西的簡單過程嗎,而且買東西的時間段還是設定好的,不管人有多少,只要線上加大帶寬維持好秩序,一切都能有條不紊的進行。

電商購物的整個參與過程,是有預見性並且可控的。這樣一來即便會出現各種問題,也能大概預測到問題會出現在什麼地方。

而12306的運行系統呢,它就是一個不知道多少人參與、不知道從哪兒購票、不知道何時購票、不知道購票人是終點下車還是中途下車、不知道中途下車後空出來的票有沒有人再賣走的無數種的不知道過程。

“崩潰的”12306

整個過程都是不可知的,那麼出現什麼問題、在哪裡出現問題、問題出現的頻率,這些統統也不可知。

舉例來說,廣州到鄭州,一個人可以坐高鐵,也可以坐普快,也可以坐普快裡的直達。而這幾種車,沿途所經過的站點都是8到15個左右。真正的考驗要來了。他買到終點站了,還是在沿途下了?如果是買到終點站了,那這張票今天也就不用被折騰了。假如是中途下車,人會在哪個站點下,下車後空出來的這張票是被剩下了?還是會被沿途上車的人撿漏了?如果是再次被售出,沿途還剩幾個站,就會有幾種可能。

“崩潰的”12306

▲ 廣州到鄭州的車次

而且,這還沒有算上時間。假如買的是中途的票,那這張票在起點站售出的同時,從下車的那個站點算起,這張票又可以被售出。而且,這張票既得能預售,也得保證在開車前一個小時,在沒被人買到的情況下,能夠把這個精準的信息展示給所有人,以便在它符合售出的站點以及時間段內,隨時賣給需要的人。

看看吧,從廣州到鄭州這一段,多種買票的可能再加上不能確定的時間,兩者結合起來就會讓一張火車票的售出過程產生上百種的可能性。

而且,這僅僅是一個人一條線路的出行計劃。想想廣州有多少外地人,想想從廣州發到全國各地的車次又有多少。即便是這麼多人,這麼多車次,也僅僅是廣州一個站點的售出規模。而全國只要是二級站以上的火車站點,其車票被售出的不可知性,都是如此。

所以,接續換乘對12306最具考驗。再以北京到哈爾濱為例,可以從瀋陽、長春、四平等多地換乘,換乘的車次也很多,看起來簡單,但是搭配的組合可能上百種。看似一次查詢,但實際上內部要進行上千次的計算。

“崩潰的”12306

N次方的可能性攪合在一起,你是不是已經懵逼了?醒醒,整個購票的過程需要一次性算完,不能有任何中斷。

集中式呈現擠爆你

網購的流量雖然大而集中,但除了是簡單的單線條之外,其整個過程還是分節點的。網友下單,店鋪可以分時段處理,如果忙不過來,停一兩天發貨無非也就是收到個差評罷了。

“崩潰的”12306

即使是比較快的同城網購,貨物從下單到送達,也得24小時左右。這種分時段和分節點的業務形式,無形中把線上的海量數據分成了一截又一截的可操作時間段,整個過程不過是加和減的重複。一旦時間拉長,容錯率也就大了。

可我們買票呢,無論是打開12306網站還是APP,都想著一快再快,最好能一氣呵成。上億人次出行的可能性,12306系統要隨時完成數據信息的準確呈現,下單之後還要隨時完成票的揀選,把票發售出去,退票後要回收再整合呈現,然後再不斷重複這個過程。

沒有半秒的緩衝時間,不能說我早上下了單,明天早上再給我出票信息。

“崩潰的”12306

你品,你細品。

如果說網購的擁堵只是人數的增加,那12306系統的擁堵就是,上億人次加上N次方可能性的不斷重複計算,這還沒算上搶票軟件一秒鐘刷幾百次的數據壓力。當這麼多人和這麼多的可能性疊加在一起,以隨時算隨時出結果的形式不斷重複時,整個過程產生的數據緩存,估計能讓大多數國家的網絡服務器直接癱瘓吧。

再者,火車票的出售是實名加限購的形式,為了防止一個身份信息在一個時間段內集中購票,內部服務器理論上就得緩存每個用戶的身份信息,以便在限購的攔截中提高精準度。而這又增加了數據運算量。

現時的系統,每天后半夜都要維護。試想,12306系統真要是白天黑夜連軸轉,估計直接就爆了。

海量數據擠爆,回家心切。

多少按鍵敲擊,一夜白頭。

“崩潰的”12306

▲ 網絡搞笑圖片

還在2012年12306系統剛運行之初,就曾面向全球公開招標,錢給夠,只要能讓系統穩定運行就行。競標的公司不少,可最終沒外人敢接這個大活兒。

十幾億的人口基數在這裡擺著,即便一些國外的公司有先進的技術,面對這種體量的系統,他們也是束手無策。

最終還是我們自己的技術,不斷維護和更新著它。

這個系統和背後維護它的人,真的是拿命在奮鬥了。

12306系統的春運重心

可能有人會有疑問,既然涉及到國計民生,何不就不計成本的實施技術攻關,徹底提升系統的穩定性和用戶體驗呢。

事實上,12306系統的更新是有針對性的。

首先,春節期間購票坐火車是剛需,這就導致公眾對12306的期許不會有任何打折扣的餘地。建議、吐槽甚至謾罵,倒逼著技術人員不斷進行調整優化和升級。

12306系統每年都在更新,比如帶寬提速,選座和候補票功能的先後增加。這些技術和功能上的升級,都能切實提升用戶的使用體驗。

其次,春運的供需矛盾,是乘客和車的矛盾,12306系統只是一箇中介,它不可能像搶票軟件那樣幫人插隊。再者,我國每年新增的線路和車次,都在逐步的緩解供需矛盾。

“崩潰的”12306

▲ 候補票新功能

如今,12306已能夠承受每日最高400億次的點擊,最高峰時日售票接近千萬張。售票壓力的緩解不僅因為系統擴容,背後更有我國高鐵網的快速延伸。

最後我們應該看到,春運的客流量是集中時段的短期爆發增長,並非常態。12306的系統如果不計成本的投入運營,那在其他時間段的客流平緩期,就是一種資源上的浪費。何況如今的12306系統,在非春運時段的購票體驗都已經完全滿足了公眾的出行。所以,針對系統的技術投入也是緊跟春運,與大客流對接的。

春運為重心,平常時期盡心維護和運營,用不多的錢滿足了大部分人的購票出行,這已經是神級操作了。

“崩潰的”12306

每年的春運都是一場“戰役“,已經越來越常態化。為了提升公眾的購票體驗,技術人員的每一次付出,都能提高公眾的單次購票率。而網絡購票也從2011年最初的11.1%,提升到現在的接近百分之百,從根本上改變了購票的形態,方便了民眾的購票需求。

所以,在你我吐槽12306使用體驗不好的時候,也應該對他們的辛苦付出予以理解和支持。

是12306和背後的運營人員,讓每一個身處異鄉的人,儘可能的都買到了回家的車票。


分享到:


相關文章: