好書試閱

光棍又怎樣,有淘寶就夠了

9特價270
貨到通知
下次再買
第0 章 

引言:光棍節的狂歡

淘寶網不就是一個網站嗎?是的,但淘寶網不是一個簡單的網站,它的規模排在全球前十幾名,頂尖的網站需要頂尖的技術作為支撐。在用戶享受淘寶的樂趣背後,有哪些神秘的技術在支撐它呢?


「時間到,開搶!」坐在電腦前早已等待多時的小美一看時間已到2011 年11 月11 日零時,便迫不及待地投身於淘寶商城一年一度的大型網購促銷活動—「淘寶雙11 購物狂歡節」。小美打開早已收藏好的寶貝—某品牌的雪地靴,飛快的點擊購買、付款,一回頭發現3000 雙靴子已被搶購一空。

小美跳起來,大叫一聲「歐耶!」

小美不知道,就在11 日零點過後的這一分鐘裡,全國有342 萬人和她一起湧入淘寶商城。當然,她更不知道,此時此刻,在淘寶杭州的一間辦公室裡,燈火通明,這裡是「戰時指揮部」,淘寶技術部的一群工程師正緊盯著網站的流量和交易資料。白板上是他們剛剛下的賭注,賭誰能最準確地猜中流量峰值和全天的交易總額。他們的手邊放著充足的食物和各類提神的飲料。

一陣急促的電話鈴聲響起,是前線部門詢問資料的,工程師大聲報著:「第1 分鐘,進入淘寶商城的會員有342 萬人」。過了一會兒,工程師主動拿起電話:「交易額超過1 億元人民幣了, 現在是第8 分鐘。」接下來,「第21 分鐘, 剛突破2億元」,「第32 分鐘,3 億元了」,「第1 個小時,4.39 億元」。這些資料隨後出現在微博上,引起了一片驚呼。

「完蛋了!」突然有人大喝一聲,所有的眼睛都緊張地盯著他,只見他搔搔頭,嘿嘿地笑道:「我賭得少了,20 億元輕鬆就能過了,我再加5 億元。」他跑到白板邊上把自己的賭注擦去,寫上25,接下來有人寫上28,有人寫上30,同事們紛紛轉載下注。接下來的這24 個小時,戰時指揮部的工程師們都不能休息,他們盯著網站的各種監控指標,適時調整機器,增減功能。平安渡過第一波高峰之後,這些人開始忙裡偷閒地給自己買東西,大家互相交流著哪家買的外接硬碟牢靠,哪家衣服適合自己的女朋友,不時有人哀嚎寶貝被人搶了、信用卡額度不夠了。同時,旁邊白板上的賭注越下越大。11 月11 日,這個「棍子」最多的日子被網友自我調侃地變成了一個節日—「光棍節」,而淘寶網又用瘋狂的折扣促銷給它賦予了另外一個意義—「購物狂歡節」。2011 年11 月11 日這一天,淘寶商城與淘寶網交易額之和突破52 億元人民幣,這個數字是「購物天堂」香港一天零售總額8.5 億元的6 倍。

網友感受到的是搶購的喜悅,而網站的技術人員感受到的卻是「壓力如山」。就如同你家辦酒席,宴請左鄰右舍,這個辦起來容易,倘若宴請十里八鄉所有的人,吃飯的人固然開心,但卻不是一般人家能夠辦得起來的。能辦得起來如此盛宴者,需要強大的財力和物力、組織能力、技術實力(例如做這麼多菜,你的炒鍋一定要是「分散式的」、「可複製的」、「可擴展的」,洗菜和切菜要有「工作流引擎」,跑堂的要計算一下最優路徑,甚至連廚房的下水道都要重新設計)。

淘寶能夠舉辦如此盛宴,網站的技術實力可見一斑。至2011 年年底,淘寶網擁有全國最大的Hadoop 分散式運算集群之一(2000 多個節點,CPU:24000 core,Memory:48000GB,Disk:24000 塊), 日新增資料50TB, 有40PB 海量資料儲存,分佈在全國各地80 多個節點的CDN 網路,支撐的流量超過800Gbps。淘寶的搜尋引擎能夠對數十億的商品資料進行即時搜索,另外,還擁有自主研發的檔案儲存系統和暫存系統,以及Java 中介軟體(Middleware,下同)和消息中間件系統,這一切組成了一個龐大的電子商務作業系統。從商業資料上看,Amazon 的財報顯示2011 年完成了大約480 億美元的交易額,eBay 的2011 年財報顯示全年完成了大約600 億美元的交易額(不包括其獨立的汽車交易平臺)。無論從交易額、商品數量還是從同比增速等指標上看,淘寶網均遠超於此,是目前全球最大的電子商務平臺。(由於淘寶是非上市公司,未公佈2011 年的業績,以上內容來自淘寶網技術副總裁@_ 行癲的微博)。

以上這些技術資料可能已經讓一些人產生了不適的感覺,為了讓更多的人讀懂這本書,我們用下面這段文字描述一下小美訪問(Query,下同)淘寶網的時候,從技術的角度來看,網站上發生了什麼樣的事情。

參考資料來自《你剛才在淘寶上買了一件東西》(來自阿里員工卡特)你發現快要過年了,於是想給你的女朋友買一件毛衣,你打開了www.taobao.com,這時你的流覽器首先查詢DNS 伺服器,將www.taobao.com 轉換成IP 位址。不過你首先會發現,在不同的地區或者不同的網路(電信、聯通、移動)下,轉換後的IP 位址很可能是不一樣的,這首先涉及負載均衡(Load Balancing,下同)的第一步,透過DNS 解析功能變數名稱時,將你的訪問分配到不同的入口,同時盡可能保證你所訪問的入口是所有入口中可能較快的一個(這和後文的CDN 不一樣)。

你透過這個入口成功地訪問www.taobao.com 實際的入口IP位址,這時產生了一個PV(Page View,下同)。每日每個網站的總PV 量是形容一個網站規模的重要指標。淘寶網全網在平日(非促銷期間)的PV 大概是16 ∼ 25 個億之間)。同時作為一個獨立的用戶,你這次訪問淘寶網的所有頁面均算作一個UV(Unique Visitor)。

因為同一時刻訪問www.taobao.com 的人數過於巨大,所以,即便是生成淘寶首頁頁面的伺服器,也不可能僅有一台,僅用於生成www.taobao.com 首頁的伺服器就可能有成百上千台,那麼你的一次訪問時生成頁面給你看的任務便會被分配給其中一台伺服器完成。這個過程要保證公正、公平、平均(即這成百上千台伺服器每台負擔的用戶數要差不多),這一很複雜的過程由幾個系統配合完成,其中最關鍵的便是LVS(Linux Virtual Server,世界上最流行的負載均衡系統之一,是由目前在淘寶網供職的章文嵩博士開發的)。

經過一系列複雜的邏輯運算和資料處理,這次用於給你看的淘寶網首頁的HTML 內容便成功生成了。對Web 前端稍微有點常識的人都應該知道,流覽器下一步會載入頁面中用到的CSS、JS(JavaScript)、圖片、腳本(Scripting Language,下同)和資源檔。但是可能相對較少的人才會知道,你的流覽器在同一個功能變數名稱下併發(Paralell,下同)載入的資源數量是有限的,例如IE 6 和IE 7 是兩個,IE 8 是6 個,Chrome 各版本不大一樣,一般是4 ∼ 6 個。我剛剛看了一下,我訪問淘寶網首頁需要載入126 個資源,那麼如此小的同時連接數自然會載入很久。所以前端開發人員往往會將上述這些資源檔分佈在多個功能變數名稱下,變相地繞過流覽器的這個限制,同時也為下文的CDN 工作做準備。據不可靠消息稱,在2011 年「雙十一」當天高峰,淘寶的訪問流量最巔峰達到871GB/s,這個數字意味著需要178 萬個4MB/s 的家庭寬頻才能負擔得起,也完全有能力拖垮一個中小城市的全部網路頻寬。顯然,這些訪問(流量不可能集中在一起,並且大家都知道,不同地區、不同網路(電信、聯通等)之間互訪會非常緩慢,但是你卻很少發現淘寶網訪問緩慢,這便是CDN(Content Delivery Network,即內容分發網路的作用)。淘寶在全國各地建立了數十個甚至上百個CDN 節點,利用一些手段保證你訪問的(這裡主要指JS、CSS、圖片等)網站是離你最近的CDN 節點,這樣便確保了分散大流量以及加速各地訪問。

這也出現了一個問題,那就是假若一個賣家發佈了一個新的寶貝,上傳了幾張新的寶貝圖片,那麼淘寶網如何保證全國各地的CDN 節點中都會同步存取這幾張圖片供使用者使用呢?這就涉及大量的內容分發與同步的相關技術。另外,淘寶上擁有海量的寶貝圖片等靜態檔案,這些檔案的總容量也達到了數PB(1PB=1024TB=1048576GB),為了快速存取這些檔案,淘寶開發了分散式檔案系統TFS(TaoBao File System)來處理這類問題。
金石堂門市 全家便利商店 ok便利商店 萊爾富便利商店 7-11便利商店
World wide
活動ing