只是用支付寶和12306比較,其實是不恰當?shù)摹?2306的邏輯復(fù)雜程度遠遠高于支付寶,所以我們先換一個思維吧,用雙11的天貓和12306做比較吧。
2017年的雙11,天貓交易量達到了1682億元,并且也沒有出現(xiàn)問題。但是,12306沒到春運,就連接不通暢,是什么原因呢?
這就需要從兩個系統(tǒng)賣的東西開始說起了。
我們都知道,天貓賣的是實體的商品,這些商品(SKU)都是有庫存量的,也就是下圖所示的這個內(nèi)容。
用戶每買一個商品,這個庫存就相應(yīng)的減少1,到減少到0的時候,庫存就沒了,后面的人也就買不到了。
這個是一個非常簡單的邏輯,其中的核心,就是SKU(最小庫存單元),對于天貓來說,SKU也就是一件商品。
天貓2016年的時候,統(tǒng)計自己擁有940萬商家,超10億件商品,數(shù)量是非常龐大的。但是每一件這樣的商品的庫存都是可以統(tǒng)計出來的,而且任何一個商品銷售的時候,并不會影響到其他的商品。
商品量大庫存系統(tǒng),我就多增加硬件來存儲這些商品就行了,所以技術(shù)上的難度并不是特別大。
但是12306不一樣,我去查了一下中國的鐵路運行情況。
根據(jù)2017年初的數(shù)據(jù),中國列車車次一共有3500余對,鐵路站點2000多個。
也就是說,每天,會有7000余次的列車在中國的鐵路上行為,途經(jīng)這2000多個點。
對于任何電商網(wǎng)站來說,SKU都是核心,那12306也算是電商網(wǎng)站,他的商品是什么呢?就是火車票,火車票對應(yīng)的是什么呢?火車上的座位或者站位。
那SKU就是座位了。
對于天貓來說,商品賣一個少一個。
對12306來說,一列火車上的座位,賣一個他不一定少一個。因為我一列火車可能途經(jīng)20個站點,一個人可能始發(fā)站上車,第三站下車,那這個SKU在1-3站之間被賣掉了,但是第4站的時候,它又回來了。我還可以繼續(xù)賣。
但是也可能一個人直接買了始發(fā)站到終點站,我這個SKU就完全賣掉了,回不來了。
用戶買的行為,決定著我SKU的剩余情況,而用戶買的行為是一個不可控的行為。
如果在沒有控制策略的情況下,就意味著,SKU是隨時發(fā)生著變化的。
我們來簡單算一筆賬。
一列火車途經(jīng)20個點,車上有5000個座位,那他理論最小庫存就是5000(一個座位1張票,始發(fā)—終點),最大庫存是95000(所有人都只坐1站)
但是對于用戶來說,他只是關(guān)心他那一站作為起點的時候,剩余的票的數(shù)量,這樣的話,我們就必須計算,火車行進到他所在站的時候,車票的剩余情況(包括未購買的和要下車的),這樣,每有一張火車票銷售出去,計算機就需要執(zhí)行復(fù)雜的運算,來重新的定義SKU和庫存量。
中國有超過10億人在春運的時候會去12306搶票,7000余次的列車,這個運算的復(fù)雜程度是非比尋常的。
可以說,現(xiàn)在中國的互聯(lián)網(wǎng)中,暫時還沒有能夠比12306還復(fù)雜的運算場景了。
我們假設(shè),買一張票需要運算1秒鐘,有100臺服務(wù)器同時工作,也就是1秒可以買100張票。一天可以處理多少張票呢?8,640,000(864萬張票),我相信,春運開始的第一天,中國至少有1億人回去12306搶票吧,如果我們真的使用這種算法,那就意味著有9000多萬人,可能連搶票頁面張什么都看不到。
但實際上是這樣么?
并不是的,12306是設(shè)置了放票的節(jié)點,每個節(jié)點進行放票,也就是說,12306會按照以往的數(shù)據(jù)經(jīng)驗,對車票進行預(yù)演算,在不同的線路之間按照一定比例,先將票的庫存計算出來。然后進行販賣。
在下一個節(jié)點的時候,會再次按照這個規(guī)則,對車票的余量進行統(tǒng)計和計算,保證在每個節(jié)點時,各個站點的票都是有的,而且票與票之間的銷售不會相互干擾,這樣就可以減少在銷售期間的運算次數(shù)的減少,提高效率。
如此說來,在節(jié)點的間隔時間內(nèi),12306的下單復(fù)雜度和天貓是一樣的了,為什么春運時候,它還是要會打不開頁面庫存系統(tǒng),沒有響應(yīng)呢?
我們就可以看到12306和天貓另一個不同的地方了。
12306是實名制的,一人一票,但是天貓可以隨便買,所以,12306在下單前后有比較多的身份驗證,但是天貓并不需要,所以,12306的單個訂單的處理復(fù)雜度還是高于天貓的。
而且,全世界沒有任何一個系統(tǒng),在一個時間節(jié)點的時候,會涌進來好幾億人。12306能安安全全的票賣出去,我覺得已經(jīng)很強大了。
上一篇:電銷卡導入數(shù)據(jù)