從技術角度深度剖析你刷淘寶的那一瞬間

  隨着以馬雲的淘寶爲主導的電商不斷地火起來,甚至「刷淘寶」成爲了大多數人的平常,咱們的購物體驗也變得愈來愈好。做爲搞技術的咱們來講,這些體驗的背後到底意味着什麼?隱藏着什麼?又是什麼支撐着每一個普通用戶的那個刷淘寶的需求?html

  當你在瀏覽器上,指尖輕輕進入www.taobao.com之後發生了什麼?本文將從你在瀏覽器中打開點擊這個網址(書籤)開始分析,一直到你如何找到商品結束。適合各種讀者瞭解僅僅訪問一次淘寶首頁,所涉及到的技術和系統規模。(這個問題之前在阿里的筆面試中出現過,這篇文章前半部分把這個問題每一步大概作了哪些事情以及涉及到阿里相關的技術作簡單闡述,具體的分析和更形象的例子見後半部分。)想聽故事的讀者可直接跳到後半部分的故事web

1. 查詢DNS服務器進行解析

  在瀏覽器中鍵入的只是網址,那麼瀏覽器要知道具體的服務器就要查詢DNS服務器,將www.taobao.com轉換成相應的IP地址。阿里旗下網站的每日訪問量巨大,不可能將全部訪問都解析到一個IP地址上,那麼這一步就涉及到阿里的負載均衡系統。面試

2. 產生PV,同時若是是獨立用戶那麼將產生UV

  PV指的是Page View,頁面被刷新一次就記一次數。segmentfault

  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多名頂級的工程師們的心血結晶,其中甚至包括長江學者、國家科學技術最高獎得主等衆多大牛。一樣,百度、騰訊等的業務系統也毫不比淘寶簡單。你須要知道的是,你天天使用的互聯網產品,看似簡單易用,背後卻凝聚着不可思議的智慧與勞動。

相關文章
相關標籤/搜索