12306的購票系統與淘寶雙十一的秒殺系統相比誰更強大?
12306可以說是真正意義上的國民應用,然而因為長期以來相對糟糕的界面設計,以及比較差的用戶體驗,一直備受吐槽,根本原因還是購票難的問題。但是作為一家優秀的互聯網企業,阿里巴巴卻搞定了雙十一,在用戶眼里形成了極佳的用戶口碑,一度阿里云更是成為12306的官方技術支持,那么淘寶的技術就真的比12306更強大?當然,答案是否定的,就算是現在來看,也沒有任何一家科技公司能夠解決12306的難題,阿里巴巴當然也不能,12306的技術難度可能是世界上級別最高的技術高峰之一。
1. 首先來看看12306存在的諸多運營問題舉個簡單的例子,為什么電子商務公司最具備云計算基因?難道僅僅是因為amazon作為云計算的開創者是一家電子商務公司的原因?主要原因就是因為類似于平常的并發體量與雙十一具備極大的差距,那么雙十一需要即大規模的硬件資源,平時就會有極大的閑置。而鐵路資源跟這點有非常的類似,平時的客流量較少,但是到了節假日就會客流量暴增,但是鐵路資源不可能因為節假日的存在進行大規模的增加鐵路資源,最多只能進行一些微調,否則資源充足的條件下,平時就會造成極大的資源浪費。所以相對合理的資源搭配最終結果便是造成了節假日,尤其是年底春運的時候購票難的根本原因。
除此之外,雖然互聯網購票因為減少了人為干預,極大的減少了黃牛黨的存在,但是另一方面說,也是極大的方便了黃牛黨的存在。并且各種搶票插件,尤其是早期的一些搶票軟件,可以實現整車廂的車票購買,這其實是進一步加大了不公平性,尤其是對于那些互聯網門檻相對較高的一些用戶來說,其實買票變得更難。
2. 再來看看淘寶和12306的技術難點
從一個簡單的例子開始
首先要明白的是,舉個簡單的例子,好比說12306是100人擠著上一輛從北京到上海荷載80人的大客車,但是每個人要到的地點都不一樣,中途很多人要下車,并且有的人要坐臥鋪、有的人要站著、有的人要坐著,但是大家都想在一分鐘甚至幾秒鐘內完成從買票到付款到取票到上車坐下始發的全過程。而天貓雙十一是1000人搶著上可能1500輛車,這些人可能會比較哪輛車最便宜,哪輛車會到哪個地方,并且大家會觀望很久,有的買票早就早上車早出發,有的要后買票后出發,有的會坐去鄭州的車,有的要坐去濟南的車,但是每輛車中間都沒有直接關系。
所以淘寶的數量看似非常龐大,商品種類非常豐富,但本質上每個人都是自己買自己的,除非購買同一款物品會有庫存上的影響,其實數據量相對分散,訪問的是很多張表,表與表之間甚至沒有直接關系,查詢不同的表, 訪問不同的數據,理論上做一定的數據緩存也是可以的。但是12306不一樣,12306地球人訪問的都是那么幾張表,大家都擠著上同一輛車,數據量非常集中,問題的關鍵是這玩意兒你還不能用緩存,這就是數據上的區別,淘寶跟12306雖然表面上數據量更大,其實處理難度更低。
其次再來說一說12306技術的難點
還是那句話,淘寶的數據雖然量大,但是其實本質上相對分散,也能夠做數據緩存,然后每一個商品其實就對應一種結果,完成購買以后只會對當前數據量進行改變。但是12306不一樣,首先是數據量同樣非常大,難度最大的在于,同一個座位可能存在不同的結果,比如從A到B總共N站。但是其實假設是淘寶,永遠只關心兩種最終狀態,但是12306不一樣,同一個座位可能對應著很多種不同的情況,中間可能被多個人乘坐,那么理論上其實有N!種可能性,一旦每一個座位狀態發生改變,都必須實時更新數據,不能出現數據緩存,刷新或者重新查詢,數據都將發生改變,因此天貓雙十一的復雜度遠比不了12306購票的復雜度。下圖給出的僅僅是2016-2017春節的PV值,如果把12306看作是一個單品電商網站,那么這款產品已經爆款。
再來看看天貓的以后可能存在的技術難點
再來看看阿里雙十一的技術難點,至于在前面討論到的,這里不再贅述,在2017年雙十一,支付寶的峰值是25.6萬筆/秒,這個跟12306的峰值水平相當甚至更高,而數據庫的處理峰值是4200萬/秒,可以說目前的高并發能達到這個水平的科技公司不多,真正電子商務里面也就只有阿里巴巴,但如前面所說,這依然不是難點,那么對于阿里來說,未來可能遇到更大的挑戰在哪里,那就是在于數據的多維度的問題。
比如優惠券、比如折扣,如果再給折扣做個限制、給優惠券設置一個漫看,比如我只給100件衣服的80件衣服做折扣,那么這個問題就會稍微復雜點,但是淘寶天貓有個好處,買折扣商品跟買回家過年的火車票自然不是一個道理,一個是可以隨時準備購買,一個是隨時準備搶買。異步處理是最有效的方法,畢竟本質上用戶需要先下單、添加購物車,然后再才是支付,這一套流程完全能更好的異步處理。但即使是這樣,在雙十一當天,雙十一來臨的當天晚上,也就是0點時刻到大概半小時之內,系統還是出現了較大規模的數據延遲,很多人沒辦法付款,甚至沒辦法下單。
3. 結論:阿里雙十一技術難度跟12306春運技術難度還是有比較大的差距
交易系統本質上有幾種類型,分別是定品、定量、以及定件系統,難度層級逐級上升,淘寶就是定品系統,而12306屬于最難的定件系統??赡苄愿?,成交時間更短,排隊幾率更大,還不能做數據緩存,一旦有相應請求發生,必須更新全線路的數據,因此阿里和12306本質上還不是一個級別的技術當量。
當年12306曾公開招標,解決12306的技術難題,最終以IBM在內的科技公司全都主動選擇放棄,沒有企業敢接下這個活,最終阿里巴巴幫助12306托管了一部分查詢業務,給阿里云提出了異步處理的建議,并且對12306進行了排隊機制的支援,可以說現在的12306還能有如此穩定的表現,阿里巴巴也有一部分功勞。
所以,12306依然是全世界最大的技術難題之一,阿里巴巴雖然對12306做出了一定的貢獻,但是核心技術依然還是依托于12306強大的技術實力,阿里巴巴搞不定12306,至少目前還遠遠不能!12306在發展過程中,一方面除了要解決極其有限時間內的技術上的高并發、高負載,還要保證資源分配的公平性,要盡可能限制更多的惡意搶票插件、車票黃牛等等,這對于12306都是極大的挑戰,至少就目前的技術來說,12306做得雖然不算完美,但是已經是目前技術壁壘下最佳解決辦法了。