01.16 只有懂行的才知道12306有多強大

只有懂行的才知道12306有多強大

探秘12306監控中心 | 最高日訪問量1500 億次,12306到底有多牛

每年的高考、國考、春運,被稱為中國的“三大全民參與活動”。其中,尤以春運涉及的範圍最廣,關注最多。

時至年關,春運出行必備的12306,再次成為人們使用頻率最高的APP之一。從春運車票開售的那一刻開始,在外打拼的人們夜以繼日地點擊著刷新,期待訂票成功那一刻的到來。

但是,熱門方向、熱門時段、熱門車次的需求量巨大,難以滿足所有人的購票需求,延伸出了不少人對於12306的疑問——為什麼我就搶不到票?在前些年12306多次出現系統不穩定的情況時,中國鐵路總公司(現為國鐵集團)備受關注。

其實,12306系統的複雜性遠超外界想象——在SKU(商品存貨)數量計算難度遠大於淘寶等電商的情況下,還要每天完成超過1500萬個訂單,並承受近1500億次的點擊。

“天天‘雙11’。”是12306內部人士自嘲的“口頭禪”,但也是現實的寫照。

春運首日(1月10日),《中國經濟週刊》記者走進了鐵科院12306全路客票系統監控中心,對12306的“秘密”一探究竟。

只有懂行的才知道12306有多強大

12306全路客票系統監控中心監控大屏。《中國經濟週刊》記者 周琦 攝

庫存複雜性遠超淘寶、京東

12306系統到底難在哪兒?

在提出疑問的網友中,不乏軟件工程師,甚至還有人表示,只要40臺服務器、2個架構師、4個程序員,就足以開發出和12306類似的網上購票系統。

但實際上,12306的庫存複雜性比淘寶、京東等電商高很多倍,運算量也大得多,傳統的分佈式數據庫、緩存、負載均衡技術,並不能滿足12306的需求。

一位淘寶前資深工程師曾對此有過非常詳細的分析。

在電商平臺上,每個商品對應一個SKU,有人購買1件,庫存就減1。而12306的特殊性在於,火車票是一種動態的SKU,計算起來的數據量可能是普通電商產品的數百倍。

以北京西到深圳福田的G71次高鐵為例,共有17個站、3種座位。表面看起來是3個SKU,即G71商務座、一等座、二等座,但實際上,G71次高鐵有408個SKU。

原因很簡單:從北京西站始發的車票,後面有16個車站,即16種不同的車票;涿州東站是第二站,有15種不同的車票,以此類推,單以上下車的站來計算,G71次高鐵就會有16+15……+2+1=136個SKU,而每種票對應3種座位,一共是408個商品。

只有懂行的才知道12306有多強大

12306全路客票系統監控中心內的車票發售時間表。《中國經濟週刊》記者 周琦 攝

也就是說,如果旅客購買了一張北京西站到涿州東站的車票,G71次高鐵的SKU要減去16;而如果購買的是北京西站到深圳福田站的車票,則要減去136個SKU。

以上只是SKU的減值。若旅客購買的是短途票,如北京西站到涿州東站,則在SKU減去16的同時,還要增加涿州東站到之後各站、之後各站相互間的SKU,即增加120個SKU。

若再疊加當前的選座功能(A、B、C、D、F),計算數量可能還要再翻倍。而這些計算數據,需要在大量購票者搶票的數秒,甚至數毫秒內完成。

對於上述計算方法,鐵科院12306技術部技術總監楊立鵬在接受《中國經濟週刊》記者採訪時說,車票在出售時會引發非常複雜的連鎖的變化,是鐵路業內獨有的情況。因此,12306在設計時,首先是要考慮到鐵路部門的業務需求,“鐵路要支持沿途不同的旅客出行。尤其是一些停站特別多的車次,有的車要運行70多個小時,一列車可能正常是拉1000多個旅客,但實際上不同階段、不同區間的可發售的車票,要遠超過這個數值。”

楊立鵬介紹,車票售出後數據的變化,對12306系統的壓力考驗非常大,鐵路部門通過採取數據的分析預測,根據不同的運力需求和運營安排,提前安排相應車票的發售等方式,緩解壓力。“鐵路部門從1996年到現在,通過20多年的技術積累,採取了一些獨有的技術方案,解決了這個問題。”

例如,將車票分時段銷售,就大大降低了同一時段的數據壓力。12306的放票時間,已從最初的一天4個放票時間點,增加到10個,再到現在每天21個放票時間點。

只有懂行的才知道12306有多強大

12306全路客票系統監控中心監控大屏,風險請求佔比超過一半。《中國經濟週刊》記者 周琦 攝

高峰日平均1秒承受170多萬次點擊

作為全球交易量最大的實時票務系統,中國鐵路客票系統平均一年售出30億張火車票,這些火車票首尾相接可以繞地球7圈。

鐵科院12306技術部副主任閻志遠介紹,目前鐵路售票中,互聯網銷售佔全渠道的80%以上,其中手機客戶端佔互聯網售票的78%,網頁端佔互聯網售票的22%。

在2020年春運以來的發售量最高日1月3日,鐵路部門全渠道售出1637萬張,其中網絡售票佔比88%。

在車票絕大多數通過互聯網渠道售出的過程中,12306系統的穩定運行,是絕對的工作核心。

據鐵科院首席研究員、12306技術部主任單杏花介紹,2020年春運期間,12306在高峰日網絡點擊量高達1495億次。

也就是說,12306在高峰日平均1秒就要承受170多萬次點擊,大概相當於每個中國人每天在12306上點擊了100次。

12306面臨的流量壓力,可想而知。一名IT工程師在聽到《中國經濟週刊》記者轉述的這組數據時,表示自己很難想象,“即便是百度,也很難有這樣的點擊量,可以說是一組天文數字。”

作為對比,2019年淘寶的訂單創建峰值,是54.4萬筆/秒。Trustdata的數據顯示,淘寶APP 2019年“雙11”當天的日活躍用戶為4.76億。

若以此計算,12306的最高訪問量,相當於淘寶“雙11”當天活躍用戶每人點擊超過300次。

對此,楊立鵬自嘲道,12306系統面臨的,基本上是“天天被秒殺、天天被搶購、天天‘雙11’”。

只有懂行的才知道12306有多強大

鐵科院首席研究員、12306技術部主任單杏花介紹12306相關情況。《中國經濟週刊》記者 周琦 攝

“組合拳”打擊惡意刷票

值得注意的是,如此高的點擊量中,風險請求的佔比非常高。

1月10日上午,12306全路客票系統首次面向媒體開放。監控屏幕顯示,截至當日上午9點,12306收到的風險請求訪問佔比已達52%,每秒的風險請求高達82.12萬次。不斷滾動的風險攔截報警,則詳細記錄了風險請求的IP地址和來自的省份。

閻志遠說,12306從2018年開始構建風控系統,通過識別包括瀏覽器、IP在內的一些異常行為予以攔截。“例如,正常旅客購票可能每次操作需要一秒鐘,而風險請求則可能達到毫秒級,對這種異常請求就會被風控系統攔截。當然,具體的攔截中,我們還有更多的考慮方面和識別手段。”

在這些風險請求中,來自第三方搶票軟件的請求,佔據不小的比例。

單杏花表示,其他網站提供的搶票服務,對12306系統造成了一定影響,鐵路部門因此在風控方面進行了研發,通過風控系統對一些異常行為進行攔截,來保證12306能夠運行穩定。“我們保障運行穩定的目的是什麼?是為了讓正常的旅客正常查詢、正常下單、正常支付,更好保障售票的公平公正。避免出現一些加價、價高者得,避免出現一些退票、退手續費情況,讓旅客受到損失。”

除了通過風控系統防範,鐵路部門還打出了“組合拳”,通過“候補購票”,讓刷票軟件存在的意義大打折扣。

“自2019年12月12日開售春運車票以來,鐵路12306售票系統候補購票訂單兌現累計582.6萬筆,車票723.7萬張,兌現率達76.8%,減少了旅客反覆查詢次數。”單杏花說。

近年來,12306上需要進行“圖片識別”的請求已大大降低,也是得益於這套“組合拳”。

此外,雲技術的運用,也大大保證了12306系統運行的穩定性。

從2014年開始,12306把網站訪問量最大的查詢業務分擔到“雲端”。2016年,12306進一步擴大了雲端容量,幾乎所有查詢訪問都在雲端進行。

楊立鵬接受《中國經濟週刊》記者採訪時介紹,12306通過採用公有云和私有云相結合的模式,提高12306的數據處理能力。“在日常情況下,國鐵集團和鐵科院兩地各有一個數據中心,採用自有資源來提供售票服務。在節假日等高峰期,出於經濟性等各方面的更考慮,採用公有、私有結合的混合雲技術來提高服務能力。”

單杏花補充說,12306是一個彈性和擴展的架構,核心數據只在核心部位,擴展的功能則可以用一些外延的服務器,或者和公有云開展合作,“這些跟整個核心部位是不交織的,相互之間可以不影響。”


分享到:


相關文章: