一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Twitter網(wǎng)站架構(gòu)學(xué)習(xí)筆記

 daomucun 2011-09-13

Twitter網(wǎng)站架構(gòu)學(xué)習(xí)筆記

作為140個(gè)字的締造者,twitter太簡(jiǎn)單了,又太復(fù)雜了,簡(jiǎn)單是因?yàn)閮H僅用140個(gè)字居然使有幾次世界性事件的傳播速度超過(guò)任何媒體,復(fù)雜是因?yàn)橐獮?億用戶提供這看似簡(jiǎn)單的140個(gè)字的服務(wù),這真的是因?yàn)楹?jiǎn)單,所以復(fù)雜??墒潜容^遺憾的是目前在中國(guó)大陸twitter是無(wú)法訪問(wèn)的,但作為一個(gè)愛(ài)好架構(gòu)的程序猿,這道墻是必須得翻的,墻外的世界更精彩。今天就結(jié)合網(wǎng)絡(luò)上的一些資料,來(lái)淺談一下我對(duì)twitter網(wǎng)站架構(gòu)的學(xué)習(xí)體會(huì),希望給路過(guò)的朋友一點(diǎn)啟示.......

 

一、twitter網(wǎng)站基本情況概覽

  1. 截至2011年4月,twitter的注冊(cè)用戶約為1.75億,并以每天300000的新用戶注冊(cè)數(shù)增長(zhǎng),但是其真正的活躍用戶遠(yuǎn)遠(yuǎn)小于這個(gè)數(shù)目,大部分注冊(cè)用戶都是沒(méi)有關(guān)注者或沒(méi)有關(guān)注別人的,這也是與facebook的6億活躍用戶不能相提并論的。
  2. twitter每月有180萬(wàn)獨(dú)立訪問(wèn)用戶數(shù),并且75%的流量來(lái)自twitter.com以外的網(wǎng)站。每天通過(guò)API有30億次請(qǐng)求,每天平均產(chǎn)生5500次tweet,37%活躍用戶為手機(jī)用戶,約60%的tweet來(lái)自第三方的應(yīng)用。
  3. 平臺(tái):Ruby on Rails 、Erlang 、MySQL 、Mongrel 、Munin 、Nagios 、Google Analytics 、AWStats 、Memcached

下圖是twitter的整體架構(gòu)設(shè)計(jì)圖:


 

二、twitter的平臺(tái)

twitter平臺(tái)大致由twitter.com、手機(jī)以及第三方應(yīng)用構(gòu)成,如下圖所示:

其中流量主要以手機(jī)和第三方為主要來(lái)源。

  • Ruby on Rails:web應(yīng)用程序的框架
  • Erlang:通用的面向并發(fā)的編程語(yǔ)言,開(kāi)源項(xiàng)目地址:http://www./
  • AWStats:實(shí)時(shí)日志分析系統(tǒng):開(kāi)源項(xiàng)目地址:http://awstats./
  • Memcached:分布式內(nèi)存緩存組建
  • Starling:Ruby開(kāi)發(fā)的輕量級(jí)消息隊(duì)列
  • Varnish:高性能開(kāi)源HTTP加速器
  • Kestrel:scala編寫的消息中間件,開(kāi)源項(xiàng)目地址:http://github.com/robey/kestrel
  • Comet Server:Comet是一種ajax長(zhǎng)連接技術(shù),利用Comet可以實(shí)現(xiàn)服務(wù)器主動(dòng)向web瀏覽器推送數(shù)據(jù),從而避免客戶端的輪詢帶來(lái)的性能損失。
  • libmemcached:一個(gè)memcached客戶端
  • 使用mysql數(shù)據(jù)庫(kù)服務(wù)器
  • Mongrel:Ruby的http服務(wù)器,專門應(yīng)用于rails,開(kāi)源項(xiàng)目地址:http:///projects/mongrel/
  • Munin:服務(wù)端監(jiān)控程序,項(xiàng)目地址:http:///
  • Nagios:網(wǎng)絡(luò)監(jiān)控系統(tǒng),項(xiàng)目地址:http://www./

三、緩存

講著講著就又說(shuō)到緩存了,確實(shí),緩存在大型web項(xiàng)目中起到了舉足輕重的作用,畢竟數(shù)據(jù)越靠近CPU存取速度越快。下圖是twitter的緩存架構(gòu)圖:

大量使用memcached作緩存

  • 例如,如果獲得一個(gè)count非常慢,你可以將count在1毫秒內(nèi)扔入memcached
  • 獲取朋友的狀態(tài)是很復(fù)雜的,這有安全等其他問(wèn)題,所以朋友的狀態(tài)更新后扔在緩存里而不是做一個(gè)查詢。不會(huì)接觸到數(shù)據(jù)庫(kù) 
  • ActiveRecord對(duì)象很大所以沒(méi)有被緩存。Twitter將critical的屬性存儲(chǔ)在一個(gè)哈希里并且當(dāng)訪問(wèn)時(shí)遲加載 
  • 90%的請(qǐng)求為API請(qǐng)求。所以在前端不做任何page和fragment緩存。頁(yè)面非常時(shí)間敏感所以效率不高,但Twitter緩存了API請(qǐng)求

在memcached緩存策略中,又有所改進(jìn),如下所述:

1、創(chuàng)建一個(gè)直寫式向量緩存Vector Cache,包含了一個(gè)tweet ID的數(shù)組,tweet ID是序列化的64位整數(shù),命中率是99%

2、加入一個(gè)直寫式行緩存Row Cache,它包含了數(shù)據(jù)庫(kù)記錄:用戶和tweets。這一緩存有著95%的命中率。

3、引入了一個(gè)直讀式的碎片緩存Fragmeng Cache,它包含了通過(guò)API客戶端訪問(wèn)到的sweets序列化版本,這些sweets可以被打包成json、xml或者Atom格式,同樣也有著95%的命中率。

4、為頁(yè)面緩存創(chuàng)建一個(gè)單獨(dú)的緩存池Page Cache。該頁(yè)面緩存池使用了一個(gè)分代的鍵模式,而不是直接的實(shí)效。

四、消息隊(duì)列

  • 大量使用消息。生產(chǎn)者生產(chǎn)消息并放入隊(duì)列,然后分發(fā)給消費(fèi)者。Twitter主要的功能是作為不同形式(SMS,Web,IM等等)之間的消息橋
  • 使用DRb,這意味著分布式Ruby。有一個(gè)庫(kù)允許你通過(guò)TCP/IP從遠(yuǎn)程Ruby對(duì)象發(fā)送和接收消息,但是它有點(diǎn)脆弱 
  • 移到Rinda,它是使用tuplespace模型的一個(gè)分享隊(duì)列,但是隊(duì)列是持久的,當(dāng)失敗時(shí)消息會(huì)丟失 
  • 嘗試了Erlang 
  • 移到Starling,用Ruby寫的一個(gè)分布式隊(duì)列 
  • 分布式隊(duì)列通過(guò)將它們寫入硬盤用來(lái)挽救系統(tǒng)崩潰。其他大型網(wǎng)站也使用這種簡(jiǎn)單的方式

五、總結(jié)

1、數(shù)據(jù)庫(kù)一定要進(jìn)行合理索引

2、要盡可能快的認(rèn)知你的系統(tǒng),這就要你能靈活地運(yùn)用各種工具了

3、緩存,緩存,還是緩存,緩存一切可以緩存的,讓你的應(yīng)用飛起來(lái)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲精品国产美女久久久99| 高清欧美大片免费在线观看| 大伊香蕉一区二区三区| 欧美中文字幕一区在线| 欧美日韩在线观看自拍| 国产麻豆一区二区三区在| 欧美二区视频在线观看| 欧美有码黄片免费在线视频| 亚洲黑人精品一区二区欧美| 欧美在线视频一区观看| 国内精品一区二区欧美| 免费特黄欧美亚洲黄片| 日韩三极片在线免费播放| 91香蕉视频精品在线看| 国产成人国产精品国产三级| 国产精品二区三区免费播放心 | 亚洲国产另类久久精品| 久久福利视频在线观看 | 日本精品中文字幕人妻| 狠狠亚洲丁香综合久久| 激情内射亚洲一区二区三区| 97人妻精品一区二区三区男同 | 黄色片国产一区二区三区| 麻豆蜜桃星空传媒在线观看| 国产香蕉国产精品偷在线观看| 日韩在线欧美一区二区| 亚洲一区二区三区三州| 高潮少妇高潮久久精品99| 青青操视频在线观看国产| 日韩欧美一区二区不卡视频| 亚洲中文字幕熟女丝袜久久| 亚洲一区二区三区在线免费| 少妇丰满a一区二区三区| 欧美国产日产综合精品| 成人午夜在线视频观看| 亚洲国产婷婷六月丁香| 国产精品久久女同磨豆腐| 东北老熟妇全程露脸被内射| 日韩精品你懂的在线观看| 99精品国产自在现线观看| 国产内射一级一片内射高清 |