從Twitter架構(gòu)變遷看Web2.0的架構(gòu)技術(shù)
2009年09月13日 00:00 來源:IT168網(wǎng)站 作者:InFoQ中文站 編輯:李倩
【IT168 分析評(píng)論】 Evan Weaver是Twitter服務(wù)團(tuán)隊(duì)的總工程師,,他的主要工作是優(yōu)化與伸縮性,。在一個(gè)技術(shù)峰會(huì)上,他談到了Twitter的架構(gòu),,特別是在過去一年當(dāng)中為提升Web站點(diǎn)性能所執(zhí)行的優(yōu)化,。 Twitter使用的大部分工具都是開源的,。其結(jié)構(gòu)是用Rails作前端,C,,Scala和Java組成中間的業(yè)務(wù)層,,使用MySQL存儲(chǔ)數(shù)據(jù)。所有的東 西都保存在RAM里,,而數(shù)據(jù)庫只是用作備份,。Rails前端處理展現(xiàn),緩存組織,,DB查詢以及同步插入,。這一前端主要由幾部分客戶服務(wù)粘合而成,大部分是 C寫的:MySQL客戶端,,Memcached客戶端,,一個(gè)JSON端,以及其它,。 中間件使用了Memcached,,Varnish用于頁面緩存,一個(gè)用Scala寫成的MQ,,Kestrel和一個(gè)Comet服務(wù)器也正在規(guī)劃之中,,該服務(wù)器也是用Scala寫成,當(dāng)客戶端想要跟蹤大量的tweet時(shí)它就能派上用場(chǎng),。 Twitter是作為一個(gè)“內(nèi)容管理平臺(tái)而非消息管理平臺(tái)”開始的,,因此從一開始基于聚合讀取的模型改變到現(xiàn)在的所有用戶都需要更新最新tweet的消息模型,需要許許多多的優(yōu)化,。這一改動(dòng)主要在于三個(gè)方面:緩存,,MQ以及Memcached客戶端。 緩存 每個(gè)tweet平均被126個(gè)用戶跟蹤,,所以這里有著明顯的緩存需求,。在最初的配置中,只有API有著一個(gè),,當(dāng)每次從一個(gè)用戶那里來了一個(gè)tweet時(shí)就會(huì)失效,,而應(yīng)用的其它部分都是無緩存的: |
|