偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

揭秘Twitter網(wǎng)站架構(gòu):沒有最復(fù)雜只有更復(fù)雜

開發(fā) 前端
作為140個(gè)字的締造者,twitter太簡(jiǎn)單了,又太復(fù)雜了,今天就結(jié)合網(wǎng)絡(luò)上的一些資料,來淺談一下我對(duì)twitter網(wǎng)站架構(gòu)的學(xué)習(xí)體會(huì),希望給路過的朋友一點(diǎn)啟示。

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

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

◆ 截至2011年4月,twitter的注冊(cè)用戶約為1.75億,并以每天300000的新用戶注冊(cè)數(shù)增長(zhǎng),但是其真正的活躍用戶遠(yuǎn)遠(yuǎn)小于這個(gè)數(shù)目,大部分注冊(cè)用戶都是沒有關(guān)注者或沒有關(guān)注別人的,這也是與facebook的6億活躍用戶不能相提并論的。

◆ twitter每月有180萬獨(dú)立訪問用戶數(shù),并且75%的流量來自twitter.com以外的網(wǎng)站。每天通過API有30億次請(qǐng)求,每天平均產(chǎn)生5500次tweet,37%活躍用戶為手機(jī)用戶,約60%的tweet來自第三方的應(yīng)用。

◆ 平臺(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ī)和第三方為主要來源。

◆ Ruby on Rails:web應(yīng)用程序的框架

◆ Erlang:通用的面向并發(fā)的編程語(yǔ)言,開源項(xiàng)目地址:http://www.erlang.org/

◆ AWStats:實(shí)時(shí)日志分析系統(tǒng):開源項(xiàng)目地址:http://awstats.sourceforge.net/

◆ Memcached:分布式內(nèi)存緩存組建

◆ Starling:Ruby開發(fā)的輕量級(jí)消息隊(duì)列

◆ Varnish:高性能開源HTTP加速器

◆ Kestrel:scala編寫的消息中間件,開源項(xiàng)目地址:http://github.com/robey/kestrel

◆ Comet Server:Comet是一種ajax長(zhǎng)連接技術(shù),利用Comet可以實(shí)現(xiàn)服務(wù)器主動(dòng)向web瀏覽器推送數(shù)據(jù),從而避免客戶端的輪詢帶來的性能損失。

◆ libmemcached:一個(gè)memcached客戶端

◆ 使用mysql數(shù)據(jù)庫(kù)服務(wù)器

◆ Mongrel:Ruby的http服務(wù)器,專門應(yīng)用于rails,開源項(xiàng)目地址:http://rubyforge.org/projects/mongrel/

◆ Munin:服務(wù)端監(jiān)控程序,項(xiàng)目地址:http://munin-monitoring.org/

◆ Nagios:網(wǎng)絡(luò)監(jiān)控系統(tǒng),項(xiàng)目地址:http://www.nagios.org/

三、緩存

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

 

 

大量使用memcached作緩存

◆ 例如,如果獲得一個(gè)count非常慢,你可以將count在1毫秒內(nèi)扔入memcached

◆ 獲取朋友的狀態(tài)是很復(fù)雜的,這有安全等其他問題,所以朋友的狀態(tài)更新后扔在緩存里而不是做一個(gè)查詢。不會(huì)接觸到數(shù)據(jù)庫(kù)

◆ ActiveRecord對(duì)象很大所以沒有被緩存。Twitter將critical的屬性存儲(chǔ)在一個(gè)哈希里并且當(dāng)訪問時(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,它包含了通過API客戶端訪問到的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ù)允許你通過TCP/IP從遠(yuǎn)程Ruby對(duì)象發(fā)送和接收消息,但是它有點(diǎn)脆弱

◆ 移到Rinda,它是使用tuplespace模型的一個(gè)分享隊(duì)列,但是隊(duì)列是持久的,當(dāng)失敗時(shí)消息會(huì)丟失

◆ 嘗試了Erlang

◆ 移到Starling,用Ruby寫的一個(gè)分布式隊(duì)列

◆ 分布式隊(duì)列通過將它們寫入硬盤用來挽救系統(tǒng)崩潰。其他大型網(wǎng)站也使用這種簡(jiǎn)單的方式

五、總結(jié)

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

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

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

原文:http://www.cnblogs.com/lonelysharer/archive/2011/10/10/2205116.html

【編輯推薦】

  1. 揭秘Google與Facebook開發(fā)之道
  2. Google算法十年變遷史
  3. Google為什么要執(zhí)行嚴(yán)格的代碼編寫規(guī)范
  4. 揭秘Google是如何做代碼審查的
  5. 揭秘Google+技術(shù)架構(gòu)
責(zé)任編輯:陳貽新 來源: 一個(gè)寂寞的分享者
相關(guān)推薦

2021-10-28 10:44:18

自動(dòng)駕駛數(shù)據(jù)人工智能

2013-06-27 09:30:48

2019-01-23 07:41:27

私有云企業(yè)虛擬化

2013-04-26 11:17:48

2012-10-31 09:16:36

IT管理

2013-01-06 09:26:06

Wi-Fi網(wǎng)絡(luò)協(xié)議

2024-01-09 07:34:28

Rust架構(gòu)語(yǔ)言

2012-11-14 10:51:28

淘寶技術(shù)

2025-01-06 11:00:00

網(wǎng)絡(luò)安全惡意軟件網(wǎng)絡(luò)犯罪

2025-01-08 00:10:40

2011-05-12 09:18:17

Twitter手機(jī)版Web AppTwitter

2022-04-26 13:54:31

隱私幣網(wǎng)絡(luò)犯罪分子財(cái)務(wù)領(lǐng)導(dǎo)者

2012-09-04 09:38:17

StubHub架構(gòu)票務(wù)

2018-11-29 09:36:45

架構(gòu)系統(tǒng)拆分結(jié)構(gòu)演變

2025-04-03 08:00:51

2012-04-20 13:56:16

2021-01-11 08:34:16

緩存穿透QPS

2017-11-10 11:24:21

蘋果iPhone X全面屏

2010-08-17 22:08:05

2012-12-12 09:53:20

下一代防火墻
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)