銀川智虎網絡科技有限公司 - 為(wèi)你思考,為(wèi)你實現!為(wèi)客戶創造與傳遞品牌價值是我們的最終使命!
羽之科網絡微信公衆号 掃一(yī)掃關注
tel-icon全國(guó)服務熱線:0951-5137001,18295277030
掃一(yī)掃關注羽之科網絡微信公衆号

看(kàn)起來不複雜(zá)的網站 淘寶、騰訊為(wèi)何要大量頂尖高(gāo)手來開(kāi)發?

分類:行業(yè)動态   作者:小(xiǎo)羽   發布時間:2017-07-03 17:01:46   點擊次數:2158

     阿裡(lǐ)巴巴員(yuán)工(gōng) 2 萬,百度技(jì)術(shù)人員(yuán)超過6000,京東也有三四千攻城(chéng)獅。


    子柳:

    就(jiù)拿淘寶來說說,當作給新人一(yī)些科普。

    ▼先說你看(kàn)到(dào)的頁面上(shàng),最重要的幾個(gè):

    【搜索商品】這個(gè)功能(néng),如果你有幾千條商品,完全可以用select * from tableXX where title like %XX%這樣的操作來搞定。但是——當你有10000000000(一(yī)百億)條商品的時候,任何一(yī)個(gè)數據庫都無法存放(fàng)了,請問你怎麽搜索?這裡(lǐ)需要用到(dào)分布式的數據存儲方案,關注公衆号:程序員(yuán)大咖,另外這個(gè)搜索也不可能(néng)直接從(cóng)數據庫裡(lǐ)來取數據,必然要用到(dào)搜索引擎(簡單來說搜索引擎更快)。好,能(néng)搜出商品了,是否大功告成可以啵一(yī)個(gè)了呢(ne)?早著(zhe)呢(ne),誰家的商品出現在第一(yī)頁?這裡(lǐ)需要用到(dào)巨複雜(zá)的排序算(suàn)法。要是再根據你的購買行為(wèi)做一(yī)些個(gè)性化的推薦——這夠一(yī)幫牛叉的算(suàn)法工(gōng)程師(shī)奮鬥終生(shēng)了。

    【商品詳情】就(jiù)是搜索完畢,看(kàn)到(dào)你感興趣的,點擊查看(kàn)商品的頁面,這個(gè)頁面有商品的屬性、詳細描述、評價、賣家信息等等,這個(gè)頁面的每天展示次數在 30 億以上(shàng),同樣的道理,如果你做一(yī)個(gè)網站每天有 10 個(gè)人訪問,你絲毫感覺不到(dào)服務器(qì)的壓力,但是 30 億,要解決的問題就(jiù)多(duō)了去了。首先,這些請求不能(néng)直接壓到(dào)數據庫上(shàng),任何單機(jī)或分布式的數據庫,承受 30 億每天的壓力,都将崩潰到(dào)完全沒有幸福感,這種情況下(xià)要用到(dào)的技(jì)術(shù)就(jiù)是大規模的分布式緩存,所有的賣家信息、評價信息、商品描述都是從(cóng)緩存裡(lǐ)面來取到(dào)的,甚至更加極緻的一(yī)點“商品的浏覽量”這個(gè)信息,每打開(kāi)頁面一(yī)次都要刷新,你猜能(néng)夠從(cóng)緩存裡(lǐ)面來取嗎(ma)?淘寶做到(dào)了,整個(gè)商品的詳情都在緩存裡(lǐ)面。

    【商品圖片】一(yī)個(gè)商品有 5 個(gè)圖片,商品描述裡(lǐ)面有更多(duō)圖片,你猜淘寶有多(duō)少張圖片要存儲? 100 億以上(shàng)。這麽多(duō)圖片要是在你的硬盤裡(lǐ)面,你怎麽去查找其中的一(yī)張?要是你的同學想拷貝你的圖片,你需要他準備多(duō)少塊硬盤?你需要配置多(duō)少大的帶寬?你們的網卡是否能(néng)夠承受?你需要多(duō)長(cháng)時間拷貝給他?這樣的規模,很不幸市(shì)面上(shàng)已經沒有任何商業(yè)的解決方案,最終我們必須自(zì)己來開(kāi)發一(yī)套存儲系統,如果你聽說過google的GFS,我們跟他類似,叫TFS。順便說一(yī)下(xià),騰訊也有這樣的一(yī)套,也叫TFS。

    【廣告系統】淘寶上(shàng)有很多(duō)廣告,什麽,你不知道?那說明我們的廣告做的還(hái)不錯(cuò),居然很多(duō)人不認為(wèi)它是廣告,賣家怎麽出價去買淘寶的廣告位?廣告怎麽展示?怎麽查看(kàn)廣告效果?這又(yòu)是一(yī)套算(suàn)法精奇的系統。

    【BOSS系統】淘寶的工(gōng)作人員(yuán)怎麽去管理這麽龐大的一(yī)個(gè)系統,例如某時刻突然宣布某位作家的作品全部從(cóng)淘寶消失,從(cóng)數據庫到(dào)搜索引擎到(dào)廣告系統,裡(lǐ)面的相(xiàng)關數據在幾分鍾内全部消失,這又(yòu)需要一(yī)個(gè)牛叉的後台支撐系統。

    【運維體系】支持這麽龐大的一(yī)個(gè)網站,你猜需要多(duō)少台服務器(qì)?幾千台?那是零頭。這麽多(duō)服務器(qì),上(shàng)面部署什麽操作系統,操作系統的内核能(néng)否優化?Java虛拟機(jī)能(néng)否優化?通(tōng)信模塊有沒有榨取性能(néng)的空間?軟件(jiàn)怎麽部署上(shàng)去?出了問題怎麽回滾?你裝過操作系統吧(ba),優化過吧(ba),被 360 坑過沒,崩潰過沒?這裡(lǐ)面又(yòu)有很多(duō)門(mén)道。

    不再多(duō)寫了,除了上(shàng)面提到(dào)的這些,還(hái)有很多(duō)很多(duō)需要做的技(jì)術(shù),當然并不是這些東西(xī)有多(duō)麽高(gāo)不可攀,任何複雜(zá)的龐大的東西(xī)都是從(cóng)小(xiǎo)到(dào)大做起來的,裡(lǐ)面需要牛叉到(dào)不行的大犇,也需要充滿好奇心的菜鳥,最後這一(yī)句,你當我是别有用心好了。

    蔡正海 :

    剛看(kàn)了一(yī)篇很有意思的文章,講的很清楚——《你剛才在淘寶上(shàng)買了一(yī)件(jiàn)東西(xī)》

    你發現快要過年(nián)了,于是想給你的女朋友(yǒu)買一(yī)件(jiàn)毛衣,你打開(kāi)了http://www.taobao.com。這時你的浏覽器(qì)首先查詢DNS服務器(qì),将http://www.taobao.com轉換成ip地址。不過首先你會(huì)發現,你在不同的地區或者不同的網絡(電(diàn)信、聯通(tōng)、移動)的情況下(xià),轉換後的IP地址很可能(néng)是不一(yī)樣的,這首先涉及到(dào)負載均衡的第一(yī)步,通(tōng)過DNS解析域名時将你的訪問分配到(dào)不同的入口,同時盡可能(néng)保證你所訪問的入口是所有入口中可能(néng)較快的一(yī)個(gè) (這和後文的CDN不一(yī)樣)。

    你通(tōng)過這個(gè)入口成功的訪問了http://www.taobao.com的實際的入口IP地址。這時你産生(shēng)了一(yī)個(gè)PV,即Page View,頁面訪問。每日每個(gè)網站的總PV量是形容一(yī)個(gè)網站規模的重要指标。淘寶網全網在平日(非促銷期間)的PV大概是16- 25 億之間。同時作為(wèi)一(yī)個(gè)獨立的用戶,你這次訪問淘寶網的所有頁面,均算(suàn)作一(yī)個(gè)UV(Unique Visitor用戶訪問)。最近臭名昭著http://12306.cn的日PV量最高(gāo)峰在 10 億左右,而UV量卻遠(yuǎn)小(xiǎo)于淘寶網十餘倍,這其中的原因我相(xiàng)信大家都會(huì)知道。

    因為(wèi)同一(yī)時刻訪問http://www.taobao.com的人數過于巨大,所以即便是生(shēng)成淘寶首頁頁面的服務器(qì),也不可能(néng)僅有一(yī)台。僅用于生(shēng)成http://www.taobao.com首頁的服務器(qì)就(jiù)可能(néng)有成百上(shàng)千台,那麽你的一(yī)次訪問時生(shēng)成頁面給你看(kàn)的任務便會(huì)被分配給其中一(yī)台服務器(qì)完成。這個(gè)過程要保證公正、公平、平均(暨這成百上(shàng)千台服務器(qì)每台負擔的用戶數要差不多(duō)),這一(yī)很複雜(zá)的過程是由幾個(gè)系統配合完成,其中最關鍵的便是LVS(Linux Virtual Server),世界上(shàng)最流行的負載均衡系統之一(yī),正是由目前在淘寶網供職的章文嵩博士開(kāi)發的。

    經過一(yī)系列複雜(zá)的邏輯運算(suàn)和數據處理,用于這次給你看(kàn)的淘寶網首頁的HTML内容便生(shēng)成成功了。對web前端稍微有點常識的童鞋都應該知道,下(xià)一(yī)步浏覽器(qì)會(huì)去加載頁面中用到(dào)的css、js、圖片、腳本和資源文件(jiàn)。但是可能(néng)相(xiàng)對較少的同學才會(huì)知道,你的浏覽器(qì)在同一(yī)個(gè)域名下(xià)并發加載的資源數量是有限制的,例如IE6- 7 是兩個(gè),IE 8 是 6 個(gè),Chrome各版本不大一(yī)樣,一(yī)般是4- 6 個(gè)。我剛剛看(kàn)了一(yī)下(xià),我訪問淘寶網首頁需要加載 126 個(gè)資源,那麽如此小(xiǎo)的并發連接數自(zì)然會(huì)加載很久。所以前端開(kāi)發人員(yuán)往往會(huì)将上(shàng)述這些資源文件(jiàn)分布在好多(duō)個(gè)域名下(xià),變相(xiàng)的繞過浏覽器(qì)的這個(gè)限制,同時也為(wèi)下(xià)文的CDN工(gōng)作做準備。

    據不可靠消息,在雙十一(yī)當天高(gāo)峰,淘寶的訪問流量最巅峰達到(dào)871GB/S。這個(gè)數字意味著(zhe)需要 178 萬個(gè)4Mb帶寬的家庭寬帶才能(néng)負擔的起,也完全有能(néng)力拖垮一(yī)個(gè)中小(xiǎo)城(chéng)市(shì)的全部互聯網帶寬。那麽顯然,這些訪問流量不可能(néng)集中在一(yī)起。并且大家都知道,不同地區不同網絡(電(diàn)信、聯通(tōng)等)之間互訪會(huì)非常緩慢(màn),但是你卻發現很少發現淘寶網訪問緩慢(màn)。這便是CDN(Content Delivery Network),即内容分發網絡的作用。淘寶在全國(guó)各地建立了數十上(shàng)百個(gè)CDN節點,利用一(yī)些手段保證你訪問的(這裡(lǐ)主要指js、css、圖片等)地方是離你最近的CDN節點,這樣便保證了大流量分散在各地訪問的加速節點上(shàng)。

    這便出現了一(yī)個(gè)問題,那就(jiù)是假若一(yī)個(gè)賣家發布了一(yī)個(gè)新的寶貝,上(shàng)傳了幾張新的寶貝圖片,那麽淘寶網如何保證全國(guó)各地的CDN節點中都會(huì)同步的存在這幾張圖片供用戶使用呢(ne)?這裡(lǐ)邊就(jiù)涉及到(dào)了大量的内容分發與同步的相(xiàng)關技(jì)術(shù)。淘寶開(kāi)發了分布式文件(jiàn)系統TFS(Taobao File System)來處理這類問題。

    好了,這時你終于加載完了淘寶首頁,那麽你習慣性的在首頁搜索框中輸入了'毛衣'二字并敲回車,這時你又(yòu)産生(shēng)了一(yī)個(gè)PV,然後,淘寶網的主搜索系統便開(kāi)始為(wèi)你服務了。它首先對你輸入的内容基于一(yī)個(gè)分詞庫進行分詞操作。衆所周知,英文是以詞為(wèi)單位的,詞和詞之間是靠空格隔開(kāi),而中文是以字為(wèi)單位,句子中所有的字連起來才能(néng)描述一(yī)個(gè)意思。例如,英文句子I am a student,用中文則為(wèi):“我是一(yī)個(gè)學生(shēng)”。計算(suàn)機(jī)可以很簡單通(tōng)過空格知道student是一(yī)個(gè)單詞,但是不能(néng)很容易明白(bái)“學”、“生(shēng)”兩個(gè)字合起來才表示一(yī)個(gè)詞。把中文的漢字序列切分成有意義的詞,就(jiù)是中文分詞,有些人也稱為(wèi)切詞。我是一(yī)個(gè)學生(shēng),分詞的結果是:我 是 一(yī)個(gè)學生(shēng)。

    進行分詞之後,還(hái)需要根據你輸入的搜索詞進行你的購物(wù)意圖分析。用戶進行搜索時常常有如下(xià)幾類意圖:

    (1)浏覽型:沒有明确的購物(wù)對象和意圖,邊看(kàn)邊買,用戶比較随意和感性。Query例如:” 2016 年(nián) 10 大香水(shuǐ)排行”,” 2016 年(nián)流行毛衣”, “zippo有多(duō)少種類?”;

    (2)查詢型:有一(yī)定的購物(wù)意圖,體現在對屬性的要求上(shàng)。Query例如:”适合老人用的手機(jī)”,” 500 元 手表”;

    (3)對比型:已經縮小(xiǎo)了購物(wù)意圖,具體到(dào)了某幾個(gè)産品。Query例如:”諾基亞E71 E63″,”akg k450 px200″;

    (4)确定型:已經做了基本決定,重點考察某個(gè)對象。Query例如:”諾基亞N97″,”IBM T60″。通(tōng)過對你的購物(wù)意圖的分析,主搜索會(huì)呈現出完全不同的結果來。

    之後的數個(gè)步驟後,主搜索系統便根據上(shàng)述以及更多(duō)複雜(zá)的條件(jiàn)列出了搜索結果,這一(yī)切是由一(yī)千多(duō)台搜索服務器(qì)完成。然後你開(kāi)始逐一(yī)點擊浏覽搜索出的寶貝。你開(kāi)始查看(kàn)寶貝詳情頁面。經常網購的親們會(huì)發現,當你買過了一(yī)個(gè)寶貝之後,即便是商家多(duō)次修改了寶貝詳情頁,你仍然能(néng)夠通(tōng)過‘已買到(dào)的寶貝’查看(kàn)當時的快照(zhào)。這是為(wèi)了防止商家對在商品詳情中承諾過的東西(xī)賴賬不認。那麽顯然,對于每年(nián)數十上(shàng)百億比交易的商品詳情快照(zhào)進行保存和快速調用不是一(yī)個(gè)簡單的事(shì)情。這 其中又(yòu)涉及到(dào)數套系統的共同協作,其中較為(wèi)重要的是Tair,淘寶自(zì)行研發的分布式KV存儲方案。

    然後無論你是否真正進行了交易,你的這些訪問行為(wèi)便忠實的被系統記錄下(xià)來,用于後續的業(yè)務邏輯和數據分析。這些記錄中訪問日志(zhì)記錄便是最重要的記錄之一(yī), 但是前邊我們得知,這些訪問是分布在各個(gè)地區很多(duō)不同的服務器(qì)上(shàng)的,并且由于用戶衆多(duō),這些日志(zhì)記錄都非常龐大,達到(dào)TB級别非常正常。那麽為(wèi)了快速及時 傳輸同步這些日志(zhì)數據,淘寶研發了TimeTunnel,用于進行實時的數據傳輸,交給後端系統進行計算(suàn)報(bào)表等操作。

    你的浏覽數據、交易數據以及其它很多(duō)很多(duō)的數據記錄均會(huì)被保留下(xià)來。

    使得淘寶存儲的曆史數據輕而易舉的便達到(dào)了十數甚至更多(duō)個(gè)PB(1PB=1024TB=1048576GB)。如此巨大的數據量經過淘寶系統1: 120 的極限壓縮存儲在淘寶的數據倉庫中。并且通(tōng)過一(yī)個(gè)叫做雲梯的,由 2000 多(duō)台服務器(qì)組成的超大規模數據系統不斷的進行分析和挖掘。

    從(cóng)這些數據中淘寶能(néng)夠知道小(xiǎo)到(dào)你是誰,你喜歡什麽,你的孩子幾歲了,你是否在談戀愛,喜歡玩魔獸世界的人喜歡什麽樣的飲料等,大到(dào)各行各業(yè)的零售情況、各類商品的興衰消亡等等海量的信息。

    說了這麽多(duō),其實也隻是叙述了淘寶上(shàng)正在運行的成千上(shàng)萬個(gè)系統中的寥寥幾個(gè)。即便是你僅僅訪問一(yī)次淘寶的首頁,所涉及到(dào)的技(jì)術(shù)和系統規模都是你完全無法想 象的,是淘寶 2000 多(duō)名頂級的工(gōng)程師(shī)們的心血結晶,其中甚至包括長(cháng)江學者、國(guó)家科學技(jì)術(shù)最高(gāo)獎得主等衆多(duō)大牛。同樣,百度、騰訊等的業(yè)務系統也絕不比淘寶簡單。你需要知道的是,你每天使用的互聯網産品,看(kàn)似簡單易用,背後卻凝聚著(zhe)難以想象的智慧與勞動。


友(yǒu)情鏈接
聯系我們

電(diàn) 話:0951-5137001/18295277030

Q  Q:87651825   568464226

郵 箱:web@yuzhike.com
地 址:銀(yín)川市(shì)興慶區南(nán)熏東街天都十六區6号樓3204

聯系我們

Website Design & Power by:yuzhike.com
版權所有 © 銀川智虎網絡科技有限公司