12306的實時票務系統有多厲害?

天馬行空的夜晚


今年,春運全國鐵路預計發送旅客3.56億人次,

這麼多人,什麼概念?

相當於半個歐洲地區的人都離家出走了,

這些人手拉手能夠繞地球15圈 。

然而,

鐵路部門12306總共安排4000多次旅客列車。

如果把壓力全推給12306,那就太錯怪它了。

因為12306遇到的難題是世界級的。

全歐洲一年的火車票購買量,也抵不過春運這一個月!

而國外沒有春運這樣的場景,自然沒有可以解決的辦法。

只有依靠國人自己的技術了。

這個時候,12306找來了馬雲和他下面的雲計算來做幫手。

說是找,也不完全準確,最開始,是馬雲希望解決農民工回家的問題,所以要求阿里巴巴下面年輕的工程師,跟12306的工程師一起解決IT技術架構的問題。

在針對系統架構做了優化之後,12306還要解決一到春運就暴增成千上萬倍的網站流量。

其實,12306是世界上規模最大的實時交易系統之一,在春運的時候,12306日均有297億次的訪問量,高流量和高併發一直是需要解決的關鍵問題。

其實,解決這一問題很大部分原因取決於服務器。

不就是個服務器麼?想買多少買多少!

NO!

服務器不是你想買,想買就能買。

如果按照國慶、春節這種高峰期的時候來配置服務器,

到了平時時間段,這些資源就會被浪費,使用率甚至不到10%。

但如果按照平時的需求來配置服務器,

那到了春節的時候,那就遠遠不夠用了……

這個時候,使用雲計算則成為最有效的解決辦法!

12306的系統還是那一套,

只是使用雲計算幫忙動態分配計算資源,

就像開水龍頭一樣,

需要的時候呢多租點,

不需要的時候呢就少租點,由12306已有的服務器支撐。

現在,12306就已經把大部分的車票查詢業務放到了阿里雲計算平臺上。

你可能會問,車票查詢又不涉及到結算系統,哪有那麼大的壓力?

其實,在整個12306系統架構中,請求次數最集中的一定是餘票查詢系統,流量佔到整個網站的90%。

我們在買票過程中,都會多次提交查詢請求,更不要說大量刷票軟件問世後,增加的工作負載,這一切都讓餘票查詢系統成為整個系統的‘短板’。

12306選擇引入阿里雲:一方面,可以讓12306在高流量時期提供充足的空間,避免了因為高併發的流量衝擊導致的宕機;另一方面,在請求次數減少時,可以縮減雲服務器資源,這樣就節省了成本開支。

而解決了這個瓶頸,阿里雲就協助12306朝著更快、更強、更流暢的小目標又前進了一小步!

在國外,他們沒有雙11,沒有春運這種好幾億人同時秒殺、購票的場景,就不可能有這樣的技術,解決這類問題。

所以,12306跟阿里雲聯手解決問題,雖說只是前進了一小步,卻是中國難題逼出了世界級的技術,是中國科技創新的一大步!

作為一個政府的線上平臺,12306則可能是中國民用政府系統裡面技術最成熟的平臺了!

希望我的解答能夠對你有所幫助,謝謝。



優雅的小小葉子


怎麼不復雜?比如北京到上海某列車有一千個座位,中途會路過十個站,比如石家莊,鄭州,徐州,蚌埠,南京等等。如果有個人買了一張北京到上海的票,那麼就還剩999個座位也就是999張票對不對,同理,石家莊到上海就只剩999張了。但要考慮中途上車並且中途下車的,比如另一個人從石家莊上車然後從徐州下車,這時候北京到上海還剩998張但是南京到上海卻依然還有999張,

比如北京到石家莊1000張,北京到鄭州1000,北京到徐州1000張。接下來,石家莊到鄭州1000,石家莊到徐州1000,石家莊到南京1000,等等幾十種組合。每種組合1000張,只要其中一個組合的票少一張,會影響或者不影響其他組合的票數。

這種還只能算簡單的設想,要是全國人民一下子這麼進來買,那就更復雜了,12306其實相當於每時每刻都在承受著比淘寶雙11更大量的衝擊,服務器適中處於負荷狀態。

2018年時12306曾經公開過相關的數據:日均PV達到556.7億次,峰值時段PV達到813.4億次,每小時最高點擊量59.3億次,平均每秒164.8萬次。2019年春運時這個數據就更高了,高峰時段點擊量1400億次,高峰日點擊量達2000億次。

這種海量的數據吞吐,全國範圍內應該是沒有網站或者APP能達到,況且在這些請求次數的背後還得計算出來,那麼這種情況下,票池怎麼維護?等等各種問題。

從列車運行的時刻開始,一輛列車晚點,調度系統就開始出現調度和預測,凡是經過該列車軌道的相應列車全部晚點等候,或者先行不等候,同時列車與列車之間的距離,時間,必須達到一定標準,否則就會出現相撞事故,全國的動車組和線路圖多到驚人,首先就要將這些數據進行統一歸納進行整理,路線與路線交錯,列車與列車之間交叉運行,列車每到一個站必須將數據回傳,就算晚點了,還得針對每一輛晚點的列車計算出晚點時間和預計到達時間,這些全部是動態計算出來的數據。拋開這些不說,春運期間的車票預售能達到未來三個月,期間可能有各種各樣的突發性情況,我想問,你怎麼保證在春運的預定時間裡保證列車準確到達目的地的時間精度?數以萬計的鐵路如何維護,列車運行時相應的軌道如何精確的自動變道?如果列車又晚點了,那麼後續列車的軌道又如何動態變道?光是處理列車與軌道之間的協調性就是一個很大的問題,設計的算法要能應對各種突發事件,你能設計出這樣的調度算法嗎?12306的系統比你想象的複雜的多,線路與線路之間的關係,列車與列車之間的關係,線路與列車之間的關係,你理得清嗎?別以為12306就是一個售票系統,整個系統契合在一起就是一個天大的工程。天真的以為就是幾句增刪改查,多線程,分佈式事務,分佈式鎖這麼簡單。

車輛調度後才能進行售票,如果車輛晚點,未來預售的票全部往後延遲,否則就會出現你買了票去坐車,大廳卻告訴你,由於車輛晚點,導致你的列車重排到了明天,12306鐵路網的幾大系統無縫集成,內部系統及其複雜,單單一個預售未來三個月的功能就要處理N多個問題,如果各個系統不能協調工作,你上哪買票?買到票了車都重排了你上哪坐?全國各地的站點數以百萬,鐵路網數以萬計,12306本就不是一個單單的售票系統,它是一個龐大的系統暴露給外部的接口,集群負載均衡,高併發,鎖只不過是保證售票系統正常運行的一種手段。而且這種手段的解決方案成熟,成本低廉。別以為12306是個售票系統,內部的算法和處理邏輯比想象的不知道要多高。

另外,引用一些回覆過我的網友的話:"哈哈 做為曾經的同程搶票數據供應商 可以很負責任的告訴你 我們五千多臺服務器同時對12306發下單,在我瞭解中 我們這樣的供應商差不多一千多家 還有各種多線程搶票軟件 [淚奔] 12306:我太難了"。


曉締


不管系統多厲害,我只想買張票回家去過年,不是打開就沒票


一生如煙


以前沒有多麼厲害,也是經過不斷迭代開發才走到了今天。那麼,它是怎麼成為今天這樣一個超級系統的呢?

從本質上講,12306網站是一個票務電子商務網站。

2010年春節,12306官網正式上線運行,平臺上線後,因為訪問數據量過大,造成大量的用戶無法購買,從普通的網民到程序員都狂噴12306的系統垃圾。

12306票務系統一期的開發費用合計3個億(含硬件),這套系統需要結合鐵道部信息數據庫,結合電話售票、窗口售票等相關的數據,所以,12306不是一個簡單的在線交易系統,而是一個全國最大的大宗物資貨運系統。

12306的技術確實非常難解決,利用現有的分佈式數據庫、緩存、負載均衡技術,已經不能滿足需求。

12306在春運的時候,日均有297億次訪問量。天量的火車票查詢是影響12306性能的重要原因之一,大概佔了90%以上的訪問流量。更棘手的是:峰谷的查詢有天壤之別,幾乎沒有辦法在成本和併發能力之間做一個好的平衡。

2015年阿里雲與12306進行合作,免費給12306提供技術支持,把12306網站的查詢訪問放在了阿里雲上。

一般而言,查詢是多數售票系統訪問量最大的部分,它的請求次數一般佔到整個網站的85%以上。交易相關的過程中,都會多次提交查詢請求,這讓餘票查詢系統成為整個系統的壓力集中地。

所以,需要把餘票查詢模塊和12306現有系統做分離,讓其具備獨立部署的能力;在雲上獨立部署一套餘票查詢系統,這樣子12306和雲上都有了一套餘票查詢系統,調度更為靈活。

經過技術改造的12306系統,年售票量已超過35億張,是世界上規模最大的實時票務交易系統。平均每日發售車票達937萬張,最高日售車票1135.7萬張,高峰時每秒售票量達700張,已佔到了總銷售票量的80%。 高峰日的網絡頁面瀏覽量超過1500億次,相當於全中國人每人每天訪問了票務頁面100多次。

如今的12306已成為中國最牛的電商網站,能讓上億人每天盯著網站使勁刷,就為了買到票,很多不惜花錢買軟件刷,除了12306,基本也沒誰了。淘寶、京東、亞馬遜直接秒殺!




石家莊陀螺科技


我是一名鐵路客運人員,幹過多年售票工作,你們根本不瞭解鐵路系統的複雜性,鐵路系統作為國家大動脈,無論從經濟還是政治上都要互相協調發展,當年鐵路招標,包括阿里在內多少公司都不敢也無法接這個活,是我們鐵路工程師們一點一點在全國人民的罵聲中日以繼日建立起來的,每天我們都及時上報工作情況,梳理總結問題,才不停的更新系統,年復一年,日復一日的完善和流暢,豈是你們這般臆測亂評的,沒有他們的付出,換不來現今的發達,如果都如你們所說阿里如此厲害,世界上比阿里有實力的大公司多了去,全世界建立如12306這樣的網站會多如牛毛。再補充一下,12306網站售出的車票即是一件如淘寶一樣的商品,同時也是一個生產機器,搜出一件商品後會有n次方的不同車票產生,計算量很大,鐵路也有些外包工作實踐證明不是專業對口出來的產品都很失敗。你們不懂得。


wuli焯焯


對於12306網絡,購票人身份證的確認,不能超越公安部,另搞一套法規的!

公民身份證是由公安部門統一製作頒發的。具有不可替代權威性的!但是在12306購票時,還要再次“認證”一次。

有的身份證輸入後,竟然不允許通過12306購票!還要到售票窗口去”認證“後才能買到車票。

自家的一個親戚,開始運用12306購票沒通過,只好跑到車站售票窗口買票。乘坐動車外出旅遊一圈回來後,再次應用12306網絡購票時,身份證號碼還是不被認可!

問題到底出在哪?


江千里2014


如果給淘寶做。,會更好的!


魯賓孫印象


你以為是動態的,其實不然

比如北京到三亞的火車,開始放票只放全程票,然後再放大站票,小站都是固定的張數,不是實時調整各個路段的。雖然很厲害,但是沒有大家想象的那麼厲害。


差生加油站


當然厲害了,阿里雲宕機,12306直接掛了,厲害得很


成都海棠十萬株


能同時能那滿足13億的出行需求,你說有多牛皮


分享到:


相關文章: