隨着以馬雲的淘寶為主導的電商不斷地火起來,甚至“刷淘寶”成為了大多數人的日常,我們的購物體驗也變得越來越好。作為搞技術的我們來說,這些體驗的背后到底意味着什么?隱藏着什么?又是什么支撐着每個普通用戶的那個刷淘寶的需求?
當你在瀏覽器上,指尖輕輕進入www.taobao.com以后發生了什么?本文將從你在瀏覽器中打開點擊這個網址(書簽)開始分析,一直到你如何找到商品結束。適合各類讀者了解僅僅訪問一次淘寶首頁,所涉及到的技術和系統規模。(這個問題以前在阿里的筆面試中出現過,這篇文章前半部分把這個問題每一步大概做了哪些事情以及涉及到阿里相關的技術做簡單闡述,具體的分析和更形象的例子見后半部分。)想聽故事的讀者可直接跳到后半部分的故事。
1. 查詢DNS服務器進行解析
在瀏覽器中鍵入的只是網址,那么瀏覽器要知道具體的服務器就要查詢DNS服務器,將www.taobao.com轉換成相應的IP地址。阿里旗下網站的每日訪問量巨大,不可能將所有訪問都解析到一個IP地址上,那么這一步就涉及到阿里的負載均衡系統。
2. 產生PV,同時如果是獨立用戶那么將產生UV
PV指的是Page View,頁面被刷新一次就記一次數。
UV指的是User View,一個用戶訪問一次就記一次數,無論這個用戶訪問了多少個頁面或者刷新了多少遍,都只記一次UV。
3. 從CDN中獲取素材
阿里旗下的網站,尤其是淘寶和天貓,富文本素材眾多,那么如果都從服務器上讀取的話,一來速度慢,二來對服務器的壓力也大。所以這一步就涉及到阿里的CDN與分布式文件系統。阿里在全國建立了上百個CDN節點,CDN指的是內容分發網絡。
4. 搜索
這是很多上淘寶天貓要做的第一件事情,那么阿里的后台系統將搜索行為分為以下四個類型:瀏覽型、查詢型、對比型、確定型。
針對不同的搜索類型,會出現不同的結果。這里涉及到阿里的搜索引擎和日志系統。搜索引擎中包含了自然語言處理和中文分詞以及其他技術。日志系統是記載了用戶做出的各類行為,比如查詢、交易、取消交易等等,這些都會被保存下來。
5. 交易快照
只要是進行過的交易都會記錄下來,無論商品的信息是否發生了改變。保存這些信息是需要非常巨大的存儲代價的,那么這一步就涉及到阿里的分布式存儲系統,同時注意這些數據保存之前都是會進行壓縮。
6. 數據傳輸
無論是日志還是交易信息,乘以阿里每日的交易量都是一個很大的數據,所以阿里還開發了自己的數據傳輸系統。
7. 雲梯
最后,你在阿里旗下的所有網站的所有行為,都會使用大規模數據挖掘系統雲梯進行分析,以求最大程度地還原和定位你這個人,所以可以說“阿里是掌握着中國大多數人錢袋以及購買習慣的公司”。
以上內容來自segmentfault
形象而具體的過程,來享受這個故事吧~(附原文)
你發現快要過節了,於是想去淘寶買點東西,你打開了淘寶。下面來看看,當你在瀏覽器輕輕www.taobao.com 以后發生了什么?
首先你的瀏覽器查詢了DNS服務器(注:能夠使人更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP地址,例如192.168.1.1),現在DNS服務器將www.taobao.com轉換成IP地址,機器能直接讀取了。
不過瀏覽器發現,在不同的地區或者不同的網絡(電信、聯通、移動)的情況下,轉換后的IP地址很可能是不一樣的,這首先涉及到負載均衡(注:相當於幾萬人的大學,一個食堂不夠用,於是學校弄了五個食堂來服務所有的同學,這就叫負載均衡)。第一步,通過DNS解析域名時將你的訪問分配到不同的入口,同時盡可能保證你所訪問的入口是所有入口中可能較快的一個。
好了,現在你通過這個入口成功的訪問了www.taobao.com的實際的入口IP地址。這時你產生了一個PV(注: Page View,一次頁面訪問),每日每個網站的總PV量是形容一個網站規模的重要指標。淘寶網全網在平日非促銷期間的PV大概是16-25億之間。同時作為一個獨立的用戶,你這次訪問淘寶網的所有頁面,均算作一個UV(注:Unique Visitor用戶訪問)。賣火車票的12306.cn的日PV量最高峰在10億左右,而UV量卻遠小於淘寶網十余倍,這其中的原因我相信大家都會知道。(注:因為頻繁刷新)
因為同一時刻訪問www.taobao.com的人數過於巨大,所以即便是淘寶首頁頁面的服務器,也不可能僅有一台。僅用於生成www.taobao.com首頁的服務器就可能有成百上千台,那么你的一次訪問時生成頁面給你看的任務便會被分配給其中一台服務器完成。(注:相當於學校有5個食堂,二食堂3窗口老是爆滿,因為打菜的是個萌妹子。)
這個過程要保證公正、公平、平均(注:這成百上千台服務器每台負擔的用戶數要差不多,就像食堂不能顛勺),這一很復雜的過程是由幾個系統配合完成,其中最關鍵的便是LVS(Linux Virtual Server),世界上最流行的負載均衡系統之一,正是由目前在淘寶網供職的章文嵩博士開發的。
經過一系列復雜的邏輯運算和數據處理,用於這次給你看的淘寶網首頁的內容便生成成功了。
據消息稱,在雙十一當天高峰,淘寶的訪問流量最巔峰達到871GB/S(注:一秒鍾871GB,如果你電腦硬盤是500G的話,相當於一秒鍾,你的磁盤就被塞滿了)。這個數字意味着需要178萬個4Mb帶寬的家庭寬帶才能負擔的起,也完全有能力拖垮一個中小城市的全部互聯網帶寬。那么顯然,這些訪問流量不可能集中在一起。並且大家都知道,不同地區不同網絡(注:電信、聯通、教育網等)之間互訪會非常緩慢,但是你卻發現很少發現淘寶網訪問緩慢。這便是CDN(Content Delivery Network),即內容分發網絡的作用。淘寶在全國各地建立了數十上百個CDN節點,利用一些手段保證你訪問的地方是離你最近的CDN節點,這樣便保證了大流量分散在各地訪問的加速節點上,指不定你們家這塊就有一個。
這便出現了一個問題,那就是假如一個賣家發布了一個新的寶貝,上傳了幾張新的寶貝圖片,那么淘寶網如何保證全國各地的CDN節點中都會同步的存在這幾張圖片供用戶使用呢?這里邊就涉及到了大量的內容分發與同步的相關技術。淘寶開發了分布式文件系統TFS(Taobao FileSystem)來處理這類問題。
好了,這時你終於加載完了淘寶首頁,那么你習慣性的在首頁搜索框中輸入了 ’月餅’ 二字並敲回車,這時你又產生了一個PV,然后,淘寶網的主搜索系統便開始為你服務了。它首先對你輸入的內容基於一個分詞庫進行分詞操作。眾所周知,英文是以詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則為:“我是一個學生”。計算機可以很簡單通過空格知道student是一個單詞,但是不能很容易明白“學”、“生”兩個字合起來才表示一個詞。把中文的漢字序列切分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學生,分詞的結果是:我是一個學生。
進行分詞之后,還需要根據你輸入的搜索詞進行你的購物意圖分析。用戶進行搜索時常常有如下幾類意圖:
(1)瀏覽型:沒有明確的購物對象和意圖,邊看邊買,用戶比較隨意和感性。查詢例如:”2013年10大香水排行”,”2013年流行雪紡衫”, “iPhone有哪個牌子好?”;
(2)查詢型:有一定的購物意圖,體現在對屬性的要求上。查詢例如:”適合老人用的手機”,”500元手表”;
(3)對比型:已經縮小了購物意圖,具體到了某幾個產品。查詢例如:”iPhone 5 三星蓋世三″,”三星 i9300 i9400″;
(4)確定型:已經做了基本決定,重點考察某個對象。查詢例如:”iPhone5″,”蓋世三″。通過對你的購物意圖的分析,主搜索會呈現出完全不同的結果來。
之后的數個步驟后,主搜索系統便根據上述以及更多復雜的條件列出了搜索結果,這一切是由一千多台搜索服務器完成。然后你開始逐一點擊瀏覽搜索出的寶貝。你開始查看寶貝詳情頁面。經常網購的親們會發現,當你買過了一個寶貝之后,即便是商家多次修改了寶貝詳情頁,你仍然能夠通過‘已買到的寶貝’查看當時的快照。那么顯然,對於每年數十上百億比交易的商品詳情快照進行保存和快速調用不是一個簡單的事情。這其中又涉及到數套系統的共同協作,其中較為重要的是Tair(注:淘寶自行研發的分布式KV存儲方案)。
然后無論你是否真正進行了交易,你的這些訪問行為便忠實的被系統記錄下來,用於后續的業務邏輯和數據分析。這些記錄中訪問日志記錄便是最重要的記錄之一,但是前邊我們得知,這些訪問是分布在各個地區很多不同的服務器上的,並且由於用戶眾多,這些日志記錄都非常龐大,達到TB(注:1TB=1024GB)級別非常正常。那么為了快速及時傳輸同步這些日志數據,淘寶研發了TimeTunnel,用於進行實時的數據傳輸,交給后端系統進行計算報表等操作。
你的瀏覽數據、交易數據以及其它很多很多的數據記錄均會被保留下來。使得淘寶存儲的歷史數據輕而易舉的便達到了十數甚至更多個 PB(注:1PB=1024TB=1048576GB)。如此巨大的數據量經過淘寶系統1:120的極限壓縮存儲在淘寶的數據倉庫中。並且通過一個叫做雲梯的,由數萬台服務器組成的超大規模數據系統不斷的進行分析和挖掘。
從這些數據中淘寶能夠知道小到你是誰,你喜歡什么,你的孩子幾歲了,你是否在談戀愛,喜歡玩魔獸世界的人喜歡什么樣的飲料等,大到各行各業的零售情況、各類商品的興衰消亡等等海量的信息。
你剛訪問了淘寶首頁,而淘寶卻做了這么多事情。
說了這么多,其實也只是敘述了淘寶上正在運行的成千上萬個系統中的寥寥幾個。即便是你僅僅訪問一次淘寶的首頁,所涉及到的技術和系統規模都是你完全無法想象的,是淘寶3000多名頂級的工程師們的心血結晶,其中甚至包括長江學者、國家科學技術最高獎得主等眾多大牛。同樣,百度、騰訊等的業務系統也絕不比淘寶簡單。你需要知道的是,你每天使用的互聯網產品,看似簡單易用,背后卻凝聚着難以想象的智慧與勞動。
