Tumblr:150億月瀏覽量背后的架構(gòu)挑戰(zhàn) |
發(fā)布時間: 2012/9/11 14:20:36 |
導(dǎo)讀:和許多新興的網(wǎng)站一樣,著名的輕博客服務(wù)Tumblr在急速發(fā)展中面臨了系統(tǒng)架構(gòu)的瓶頸。每天5億次瀏覽量,峰值每秒4萬次請求,每天3TB新的數(shù)據(jù)存儲,超過1000臺服務(wù)器,這樣的情況下如何保證老系統(tǒng)平穩(wěn)運(yùn)行,平穩(wěn)過渡到新的系統(tǒng),Tumblr正面臨巨大的挑戰(zhàn)。近日,HighScalability網(wǎng)站的Todd Hoff采訪了該公司的分布式系統(tǒng)工程師Blake Matheny,撰文系統(tǒng)介紹了網(wǎng)站的架構(gòu),內(nèi)容很有價值。我們也非常希望國內(nèi)的公司和團(tuán)隊(duì)多做類似分享,貢獻(xiàn)于社區(qū)的同時,更能提升自身的江湖地位,對招聘、業(yè)務(wù)發(fā)展都好處多多。歡迎向我們投稿。
以下為譯文。(括號內(nèi)小號字為CSDN編輯所注): Tumblr每月頁面瀏覽量超過150億次,已經(jīng)成為火爆的博客社區(qū)。用戶也許喜歡它的簡約、美麗,對用戶體驗(yàn)的強(qiáng)烈關(guān)注,或是友好而忙碌的溝通方式,總之,它深得人們的喜愛。 每月超過30%的增長當(dāng)然不可能沒有挑戰(zhàn),其中可靠性問題尤為艱巨。每天5億次瀏覽量,峰值每秒4萬次請求,每天3TB新的數(shù)據(jù)存儲,并運(yùn)行于超過1000臺服務(wù)器上,所有這些幫助Tumblr實(shí)現(xiàn)巨大的經(jīng)營規(guī)模。 創(chuàng)業(yè)公司邁向成功,都要邁過危險的迅速發(fā)展期這道門檻。尋找人才,不斷改造基礎(chǔ)架構(gòu),維護(hù)舊的架構(gòu),同時要面對逐月大增的流量,而且曾經(jīng)只有4位工程師。這意味著必須艱難地選擇應(yīng)該做什么,不該做什么。這就是Tumblr的狀況。好在現(xiàn)在已經(jīng)有20位工程師了,可以有精力解決問題,并開發(fā)一些有意思的解決方案。 Tumblr最開始是非常典型的LAMP應(yīng)用。目前正在向分布式服務(wù)模型演進(jìn),該模型基于Scala、HBase、Redis(著名開源K-V存儲方案)、Kafka(Apache項(xiàng)目,出自LinkedIn的分布式發(fā)布-訂閱消息系統(tǒng))、Finagle(由Twitter開源的容錯、協(xié)議中立的RPC系統(tǒng)),此外還有一個有趣的基于Cell的架構(gòu),用來支持Dashboard(CSDN注:Tumblr富有特色的用戶界面,類似于微博的時間軸)。 Tumblr目前的最大問題是如何改造為一個大規(guī)模網(wǎng)站。系統(tǒng)架構(gòu)正在從LAMP演進(jìn)為最先進(jìn)的技術(shù)組合,同時團(tuán)隊(duì)也要從小的創(chuàng)業(yè)型發(fā)展為全副武裝、隨時待命的正規(guī)開發(fā)團(tuán)隊(duì),不斷創(chuàng)造出新的功能和基礎(chǔ)設(shè)施。下面就是Blake Matheny對Tumblr系統(tǒng)架構(gòu)情況的介紹。 網(wǎng)站地址 主要數(shù)據(jù) 每天5億次PV(頁面訪問量) 每月超過150億PV 約20名工程師 峰值請求每秒近4萬次 每天超過1TB數(shù)據(jù)進(jìn)入Hadoop集群 MySQL/HBase/Redis/memcache每天生成若干TB數(shù)據(jù) 每月增長30% 近1000硬件節(jié)點(diǎn)用于生產(chǎn)環(huán)境 平均每位工程師每月負(fù)責(zé)數(shù)以億計(jì)的頁面訪問 每天上傳大約50GB的文章,每天跟帖更新數(shù)據(jù)大約2.7TB。 軟件環(huán)境 開發(fā)使用OS X,生產(chǎn)環(huán)境使用Linux(CentOS/Scientific) Apache PHP, Scala, Ruby Redis, HBase, MySQL Varnish, HAProxy, nginx memcache, Gearman(支持多語言的任務(wù)分發(fā)應(yīng)用框架), Kafka, Kestrel(Twitter開源的分布式消息隊(duì)列系統(tǒng)), Finagle Thrift, HTTP Func——一個安全、支持腳本的遠(yuǎn)程控制框架和API Git, Capistrano(多服務(wù)器腳本部署工具), Puppet, Jenkins 硬件環(huán)境 500臺Web服務(wù)器 200臺數(shù)據(jù)庫服務(wù)器(47 pool,20 shard) 30臺memcache服務(wù)器 22臺Redis服務(wù)器 15臺Varnish服務(wù)器 25臺HAproxy節(jié)點(diǎn) 8臺nginx服務(wù)器 14臺工作隊(duì)列服務(wù)器(Kestrel + Gearman) 架構(gòu) 1. 相對其他社交網(wǎng)站而言,Tumblr有其獨(dú)特的使用模式: 每天有超過5千萬篇文章更新,平均每篇文章的跟帖又?jǐn)?shù)以百計(jì)。用戶一般只有數(shù)百個粉絲。這與其他社會化網(wǎng)站里少數(shù)用戶有幾百萬粉絲非常不同,使得Tumblr的擴(kuò)展性極具挑戰(zhàn)性。 按用戶使用時間衡量,Tumblr已經(jīng)是排名第二的社會化網(wǎng)站。內(nèi)容的吸引力很強(qiáng),有很多圖片和視頻,文章往往不短,一般也不會太長,但允許寫得很長。文章內(nèi)容往往比較深入,用戶會花費(fèi)更長的時間來閱讀。 用戶與其他用戶建立聯(lián)系后,可能會在Dashboard上往回翻幾百頁逐篇閱讀,這與其他網(wǎng)站基本上只是部分信息流不同。 用戶的數(shù)量龐大,用戶的平均到達(dá)范圍更廣,用戶較頻繁的發(fā)帖,這些都意味著有巨量的更新需要處理。 2. Tumblr目前運(yùn)行在一個托管數(shù)據(jù)中心中,已在考慮地域上的分布性。 3. Tumblr作為一個平臺,由兩個組件構(gòu)成:公共Tumblelogs和Dashboard 公共Tumblelogs與博客類似(此句請Tumblr用戶校正),并非動態(tài),易于緩存 Dashboard是類似于Twitter的時間軸,用戶由此可以看到自己關(guān)注的所有用戶的實(shí)時更新。與博客的擴(kuò)展性不同,緩存作用不大,因?yàn)槊看握埱蠖疾煌绕涫腔钴S的關(guān)注者。而且需要實(shí)時而且一致,文章每天僅更新50GB,跟帖每天更新2.7TB,所有的多媒體數(shù)據(jù)都存儲在S3上面。 大多數(shù)用戶以Tumblr作為內(nèi)容瀏覽工具,每天瀏覽超過5億個頁面,70%的瀏覽來自Dashboard。 Dashboard的可用性已經(jīng)不錯,但Tumblelog一直不夠好,因?yàn)榛A(chǔ)設(shè)施是老的,而且很難遷移。由于人手不足,一時半會兒還顧不上。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |