以文本方式查看主題 - 昂捷論壇 (http://www.yzsenyi.com/bbs/index.asp) -- □-技術(shù)研討會 (http://www.yzsenyi.com/bbs/list.asp?boardid=36) ---- [轉(zhuǎn)帖]你剛才在淘寶上買了一件東西 (http://www.yzsenyi.com/bbs/dispbbs.asp?boardid=36&id=8971) |
-- 作者:prcak47 -- 發(fā)布時間:2013/9/12 14:08:09 -- [轉(zhuǎn)帖]你剛才在淘寶上買了一件東西 你剛才在淘寶上買了一件東西【技術(shù)普及貼】
你通過這個入口成功的訪問了www.taobao.com的實際的入口ip地址。這時你產(chǎn)生了一個PV,即Page View,頁面訪問。每日每個網(wǎng)站的總PV量是形容一個網(wǎng)站規(guī)模的重要指標(biāo)。淘寶網(wǎng)全網(wǎng)在平日(非促銷期間)的PV大概是16-25億之間。同時作為一個獨立的用戶,你這次訪問淘寶網(wǎng)的所有頁面,均算作一個UV(Unique Visitor用戶訪問)。最近臭名昭著的12306.cn的日PV量最高峰在10億左右,而UV量卻遠(yuǎn)小于淘寶網(wǎng)十余倍,這其中的原因我相信大家都會知道。 因為同一時刻訪問www.taobao.com的人數(shù)過于巨大,所以即便是生成淘寶首頁頁面的服務(wù)器,也不可能僅有一臺。僅用于生成www.taobao.com首頁的服務(wù)器就可能有成百上千臺,那么你的一次訪問時生成頁面給你看的任務(wù)便會被分配給其中一臺服務(wù)器完成。這個過程要保證公正、公平、平均(暨這成百上千臺服務(wù)器每臺負(fù)擔(dān)的用戶數(shù)要差不多),這一很復(fù)雜的過程是由幾個系統(tǒng)配合完成,其中最關(guān)鍵的便是LVS,Linux Virtual Server,世界上最流行的負(fù)載均衡系統(tǒng)之一,正是由目前在淘寶網(wǎng)供職的章文嵩博士開發(fā)的。 經(jīng)過一系列復(fù)雜的邏輯運算和數(shù)據(jù)處理,用于這次給你看的淘寶網(wǎng)首頁的HTML內(nèi)容便生成成功了。對web前端稍微有點常識的童鞋都應(yīng)該知道,下一步瀏覽器會去加載頁面中用到的css、js、圖片等樣式、腳本和資源文件。但是可能相對較少的同學(xué)才會知道,你的瀏覽器在同一個域名下并發(fā)加載的資源數(shù)量是有限制的,例如ie6-7是兩個,ie8是6個,chrome各版本不大一樣,一般是4-6個。我剛剛看了一下,我訪問淘寶網(wǎng)首頁需要加載126個資源,那么如此小的并發(fā)連接數(shù)自然會加載很久。所以前端開發(fā)人員往往會將上述這些資源文件分布在好多個域名下,變相的繞過瀏覽器的這個限制,同時也為下文的CDN工作做準(zhǔn)備。 據(jù)不可靠消息,在雙十一當(dāng)天高峰,淘寶的訪問流量最巔峰達(dá)到871GB/S。這個數(shù)字意味著需要178萬個4mb帶寬的家庭寬帶才能負(fù)擔(dān)的起,也完全有能力拖垮一個中小城市的全部互聯(lián)網(wǎng)帶寬。那么顯然,這些訪問流量不可能集中在一起。并且大家都知道,不同地區(qū)不同網(wǎng)絡(luò)(電信、聯(lián)通等)之間互訪會非常緩慢,但是你卻發(fā)現(xiàn)很少發(fā)現(xiàn)淘寶網(wǎng)訪問緩慢。這便是CDN,Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)的作用。淘寶在全國各地建立了數(shù)十上百個CDN節(jié)點,利用一些手段保證你訪問的(這里主要指js、css、圖片等)地方是離你最近的CDN節(jié)點,這樣便保證了大流量分散已經(jīng)在各地訪問的加速。 好了,這時你終于加載完了淘寶首頁,那么你習(xí)慣性的在首頁搜索框中輸入了\'毛衣\'二字并敲回車,這時你又產(chǎn)生了一個PV,然后,淘寶網(wǎng)的主搜索系統(tǒng)便開始為你服務(wù)了。它首先對你輸入的內(nèi)容基于一個分詞庫進(jìn)行的分詞操作。眾所周知,英文是以詞為單位的,詞和詞之間是靠空格隔開,而中文是以字為單位,句子中所有的字連起來才能描述一個意思。例如,英文句子I am a student,用中文則為:“我是一個學(xué)生”。計算機(jī)可以很簡單通過空格知道student是一個單詞,但是不能很容易明白“學(xué)”、“生”兩個字合起來才表示一個詞。把中文的漢字序列切分成有意義的詞,就是中文分詞,有些人也稱為切詞。我是一個學(xué)生,分詞的結(jié)果是:我 是 一個 學(xué)生。 進(jìn)行分詞之后,還需要根據(jù)你輸入的搜索詞進(jìn)行你的購物意圖分析。用戶進(jìn)行搜索時常常有如下幾類意圖:(1)瀏覽型:沒有明確的購物對象和意圖,邊看邊買,用戶比較隨意和感性。Query例如:”2010年10大香水排行”,”2010年流行毛衣”, “zippo有多少種類?”;(2)查詢型:有一定的購物意圖,體現(xiàn)在對屬性的要求上。Query例如:”適合老人用的手機(jī)”,”500元 手表”;(3)對比型:已經(jīng)縮小了購物意圖,具體到了某幾個產(chǎn)品。Query例如:”諾基亞E71 E63″,”akg k450 px200″;(4)確定型:已經(jīng)做了基本決定,重點考察某個對象。Query例如:”諾基亞N97″,”IBM T60″。通過對你的購物意圖的分析,主搜索會呈現(xiàn)出完全不同的結(jié)果來。 之后的數(shù)個步驟后,主搜索系統(tǒng)便根據(jù)上述以及更多復(fù)雜的條件列出了搜索結(jié)果,這一切是由一千多臺搜索服務(wù)器完成。然后你開始逐一點擊瀏覽搜索出的寶貝。你開始查看寶貝詳情頁面。經(jīng)常網(wǎng)購的親們會發(fā)現(xiàn),當(dāng)你買過了一個寶貝之后,即便是商家多次修改了寶貝詳情頁,你仍然能夠通過‘已買到的寶貝’查看當(dāng)時的快照。這是為了防止商家對在商品詳情中承諾過的東西賴賬不認(rèn)。那么顯然,對于每年數(shù)十上百億比交易的商品詳情快照進(jìn)行保存和快速調(diào)用不是一個簡單的事情。這其中又涉及到數(shù)套系統(tǒng)的共同協(xié)作,其中較為重要的是Tair,淘寶自行研發(fā)的分布式KV存儲方案。 然后無論你是否真正進(jìn)行了交易,你的這些訪問行為便忠實的被系統(tǒng)記錄下來,用于后續(xù)的業(yè)務(wù)邏輯和數(shù)據(jù)分析。這些記錄中訪問日志記錄便是最重要的記錄之一,但是前邊我們得知,這些訪問是分布在各個地區(qū)很多不同的服務(wù)器上的,并且由于用戶眾多,這些日志記錄都非常龐大,達(dá)到TB級別非常正常。那么為了快速及時傳輸同步這些日志數(shù)據(jù),淘寶研發(fā)了TimeTunnel,用于進(jìn)行實時的數(shù)據(jù)傳輸,交給后端系統(tǒng)進(jìn)行計算報表等操作。 你的瀏覽數(shù)據(jù)、交易數(shù)據(jù)以及其它很多很多的數(shù)據(jù)記錄均會被保留下來。使得淘寶存儲的歷史數(shù)據(jù)輕而易舉的便達(dá)到了十?dāng)?shù)甚至更多個PB(1PB=1024TB=1048576GB)。如此巨大的數(shù)據(jù)量經(jīng)過淘寶系統(tǒng)1:120的極限壓縮存儲在淘寶的數(shù)據(jù)倉庫中。并且通過一個叫做云梯的,由2000多臺服務(wù)器組成的超大規(guī)模數(shù)據(jù)系統(tǒng)不斷的進(jìn)行分析和挖掘。 從這些數(shù)據(jù)中淘寶能夠知道小到你是誰,你喜歡什么,你的孩子幾歲了,你是否在談戀愛,喜歡玩魔獸世界的人喜歡什么樣的飲料等,大到各行各業(yè)的零售情況、各類商品的興衰消亡等等海量的信息。
說了這么多,其實也只是敘述了淘寶上正在運行的成千上萬個系統(tǒng)中的寥寥幾個。即便是你僅僅訪問一次淘寶的首頁,所涉及到的技術(shù)和系統(tǒng)規(guī)模都是你完全無法想象的,是淘寶2000多名頂級的工程師們的心血結(jié)晶,其中甚至包括長江學(xué)者、國家科學(xué)技術(shù)最高獎得主等眾多大牛。同樣,百度、騰訊等的業(yè)務(wù)系統(tǒng)也絕不比淘寶簡單。你需要知道的是,你每天使用的互聯(lián)網(wǎng)產(chǎn)品,看似簡單易用,背后卻凝聚著難以想象的智慧與勞動。 (本文所涉及到的技術(shù)與數(shù)據(jù)均來源于互聯(lián)網(wǎng))
轉(zhuǎn)自:http://blog.renren.com/blog/254459622/799372165 |