前淘寶工程師談12306:做它比做淘寶難
如果把12306外包給IBM或者阿里巴巴來做,能否比現在做得好?
如果是以前,我肯定會回答:是。因為我們始終認為,一個年投入超3億元的賣火車票網站,沒有什麼理由做不好吧?其實不光是小編這樣認為,包括眾多媒體,甚至專業人士都曾噴過12306,但近日一名前淘寶工程師通過科普的方式給了我們一記響亮的耳光:做12306網站難度遠高於淘寶。
我曾在淘寶寫過一段時間程式碼,2012年在一家百強民企做電商副總,當時在極為艱苦的條件下帶隊開發了一個B2C網站,走支付寶和銀聯支付通道,年營業額千萬級。
在平時,12306也就是個正常的電商網站。但一到黃金週,12306就是一個全站所有商品都秒殺,所有SKU(庫存量單位,物流管理術語,編者注)都是動態庫存的變態。
媒體人噴12306,是他們不懂技術,沒有能力和耐心來分析背後的難度。技術人員噴,則是因為大部分的技術人員在短時間思考時,容易陷入過於樂觀的誤區。
至於12306一期工程3個億(含硬體)貴不貴我不評價,我只提供一個數字供參考,百度一年的研發費用(不含硬體)是10億,這個數字來自百度財報。網上能查到。3億看起來好大一個數字,真用到超大型的電商系統、搜尋引擎系統裡面,其實也不算什麼天文數字了。
再解釋一下,為什麼秒殺壓力大,以及為什麼12306的動態庫存很複雜。
先說秒殺:
2013年12月25日前後,天貓搞了一個聖誕季積分兌換活動,持續幾天。25號上午10點12分,放出了15000個天貓魔盒,從成交記錄上看,是19秒內全部搶完。
實際上,我也參加秒殺了,我應該是5秒內答題完成並提交訂單,結果告訴我排隊的人太多,14秒以後重試。
我想,14秒以後哪還有我的事情呀,於是重新答題秒殺,結果出現了伺服器錯誤的頁面。反覆重新整理幾次,就告訴秒殺結束了。
淘寶是什麼技術水平呢,淘寶有至少4000技術人員,至少4萬臺伺服器。以淘寶這樣的技術水平,也不能做到秒殺時讓每個使用者都沒有擁擠感,為什麼呢?
一是要尊重物理原理。一臺伺服器一秒鐘能承受的計算量是有極限的,任你怎麼優化,採用多高效的演算法和程式語言,都突破不了某個極限。
二是要考慮經濟效益。十一黃金週的時候,北京主城區到八達嶺長城的路堵得嚴嚴實實,但不能因為黃金週的高峰,就把這段路修成長安街那樣10車道的高速公路。
再說動態庫存:
淘寶秒殺天貓魔盒的時候,只有一個商品(行話叫做SKU),它的庫存是15000個。有一個人秒殺到了,庫存就減1,19秒賣完的,一秒要成功產生789個訂單。想象一下,你在廣場上賣火車票,一秒鐘有8萬人舉著錢對你喊:賣給我!
好了,講了這半天淘寶,可以說12306了吧?
我以北京西到深圳北的G71次高鐵為例,它有17個站,3種座位。表面看起來,這不就是3個商品嗎?G71商務座、G71一等座、G71二等座。大部分輕易噴12306的技術人員就是在這裡栽第一個跟頭的。
實際上,G71有136*3 =408種商品(408個SKU),怎麼算來的?請看:
如果賣北京西始發的,有16種賣法(因為後面有16個站),北京西到:保定、石家莊、鄭州、武漢、長沙、廣州、虎門、深圳……都是一個個獨立的商品,
同理,石家莊上車的,有15種下車的可能,以此類推,單以上下車的站來計算,有136種票:16+15+14…+2+1=136。每種票都有3種座位,一共是408個商品。
旅客A買了一張北京西(01號站)到保定東(02號站)的,那【北京西到保定東】這個商品的庫存就要減一,同時,北京西到石家莊、鄭州、武漢、長沙、廣州、虎門、深圳等15個站臺的商品庫存也要減一,也就是說,出一張北京到保定東的票,實際上要減16個商品的庫存!
這還不是最複雜的,如果旅客B買了一張北京西(01號站)到深圳北(17號站)的票,除了【北京西到深圳北】這個商品的庫存要減一,北京西到保定東、石家莊、鄭州、武漢、長沙、廣州、虎門等15個站臺的商品庫存也要減1,保定東到石家莊、鄭州、武漢、長沙、廣州、虎門、深圳北等15個站臺的商品庫存要減1……總計要減庫存的商品數是16+15+14+…+1=120個。
想象一下,8萬人舉著錢對你高喊:賣給我。你好不容易在錢堆裡找到一隻手,拿了他的錢,轉身找120個同事,告訴他們減庫存,而這120個同事也和你一樣被8萬人圍著;也和你一樣,每賣出一個商品要找幾十個人減庫存……這就是12306動態庫存的變態之處。比你平時買東西的任何網站的庫存機制都複雜幾十上百倍。
再說一下搶票外掛,防機器人搶票,也不是加個圖片驗證碼那麼簡單。驗證碼設定得複雜一點吧,人們要噴:這只是便宜大學生和辦公室白領,農民工連26個字母都認不齊,怎麼搞?搞動畫驗證碼吧,也有人噴:視力不好的人怎麼辦?最後驗證碼搞得太簡單了,皆大歡喜了,其實最高興的是開發搶票外掛的公司。
以上討論只是把12306當成和淘寶一樣沒有歷史包袱從零起步的交易系統,實際上,它不是,它後面的票池,還有電話售票、火車站售票、代售點售票等多個傳統渠道要服務。除了客運服務,12306還有全國最大(很可能也是全球最大)的大宗物資貨運系統。
架空政策(包括定價政策、警方打擊黃牛政策、身份驗證政策)談技術,是不可能解決春運搶票困局的,要想讓春運的時候每個人在12306搶票都毫無擁擠感(但不一定能搶到票,鐵路運力擺在那),那就是逼著12306買一大堆伺服器對付春運,春運過去後,成為跟amazon一樣牛逼的雲端計算服務商。和逼北京修一條10車道的高速公路去八達嶺長城一個道理。
目前的12306技術上是還有問題,比如,搶票高峰,輸入個身份證號和圖片驗證碼都卡得要死(本人親測),伺服器端繁忙,你瀏覽器端卡什麼呀?
但人家在進步。相信2015年春運的時候,技術已經不再是一票難求的主要問題。在鐵路運力不可能神速增加的情況下,要做到春運更公平地買票,需要靠政策調整。
相關文章
- 淘寶、一淘、淘寶商城 - 馬雲內部郵件談分拆
- 淘寶API:淘寶/天貓獲得淘寶商品快遞費用API
- 號稱史上最難618,淘寶資料盤點你做對了嗎?
- 淘寶特效特效
- 淘寶API分享:獲取淘寶商品SKU資訊API
- 淘寶API分享:獲取淘寶商品評論API
- 淘寶資料:2010年度淘寶各品類銷售資料及成交銷量前10品牌
- 淘寶商品銷量資料介面,淘寶商品月銷量,淘寶商品總銷量資料介面
- 淘寶API,按關鍵字搜尋淘寶商品API
- jQuery打造淘寶展示效果和淘寶輪播圖jQuery
- 淘寶面試回來,想對程式設計師們談談面試程式設計師
- 2021年根據淘寶新店類目提取旺旺,淘寶新店旺旺採集軟體怎麼做
- 使用淘寶映象
- 淘寶API分享:淘寶/天貓批次獲取商品重量資訊API
- 淘寶API,按圖搜尋淘寶商品(拍立淘)API
- 如何獲得淘寶/天貓淘寶商品詳情 API介面API
- 淘寶/天貓淘寶評論問答列表(item_question_answer-淘寶評論問答列表介面)
- 仿淘寶物流介面
- 淘寶API系列:如何採集淘寶商品詳情頁資料?API
- 淘寶API系列:淘寶/天貓獲取商品歷史價格資訊API
- Java開發第一面————淘寶:難以割捨的痛Java
- 淘寶關鍵詞搜尋介面,淘寶商品列表介面,淘寶商品銷量排序介面資料採集程式碼展示排序
- 淘寶/天貓獲得淘寶商品詳情 API 返回值說明API
- 淘寶資料:成熟買家成淘寶電器城消費主力
- 淘寶訂單資訊獲取介面API,淘寶打單發貨介面API
- 談一談越來越難做的前端前端
- 淘寶詳情api介面API
- 淘寶放大鏡實現
- 淘寶IP地址查詢
- 淘寶的ip地址庫
- 淘寶技術發展
- 淘寶開源專案
- 淘寶記錄筆記筆記
- 淘寶新開店鋪女裝類目旺旺採集軟體 一鍵匯出淘寶旺旺聯絡資訊怎麼做
- Java“牽手”淘寶商品列表頁資料採集+淘寶商品價格資料排序,淘寶API介面申請指南Java排序API
- 網路上做網賺淘寶銷量必須用換ip軟體!
- 淘寶招聘java開發工程師/技術專家/架構師Java工程師架構
- 微信開啟淘寶連結,公眾號選單欄放淘寶連結