詳解知名網(wǎng)站的技術(shù)發(fā)展歷程
來源:解決方案 2012-05-30
文 / 林昊
互聯(lián)網(wǎng)已經(jīng)發(fā)展多年,其中不乏脫穎而出者,這些網(wǎng)站多數(shù)都已存在了接近10年或10年以上,在如此長時間的發(fā)展過程中,除了業(yè)務(wù)上面臨的挑戰(zhàn),在技術(shù)上也面臨了很多的挑戰(zhàn)。我挑選了一些Alexa排名較前的網(wǎng)站(排名截止到2012年4月21日),看看它們在技術(shù)上是如何應(yīng)對業(yè)務(wù)發(fā)展過程中的挑戰(zhàn)的。
Google目前Alexa排名第1。它誕生于1997年,當(dāng)時是一個研究性項目,每個月build一次索引,build出來的索引通過sharding(shard bydoc)的方式分散到多臺服務(wù)器(Index Server)上,具體的網(wǎng)頁數(shù)據(jù)同樣通過sharding的方式分散到多臺服務(wù)器(DocServer)上,當(dāng)用戶提交請求時,通過前端的一臺服務(wù)器將請求提交給Index Server獲得打了分的倒排索引,然后從DocServer提取具體的網(wǎng)頁信息(例如網(wǎng)頁標(biāo)題、搜索關(guān)鍵詞匹配的片段信息等),最終展現(xiàn)給用戶。
隨著索引的網(wǎng)頁增加,這個結(jié)構(gòu)可通過增加Index Server以及DocServer來存儲索引以及網(wǎng)頁的數(shù)據(jù),但仍然會面臨其他很多方面的問題,于是在這之后的十多年的時間里,Google做了很多事情來改進(jìn)上面的結(jié)構(gòu)。
1999年,Google增加了一個Cache Cluster,用來Cache查詢的索引結(jié)果和文檔片段信息,同時將Index Server和DocServer通過Replicate的方式變成了Cluster。這兩個改造帶來的好處是網(wǎng)站的響應(yīng)速度、可支撐的訪問量以及可用性(Availability)得到了提升。這個變化造成了成本的增加,Google在硬件方面的風(fēng)格始終是不用昂貴的高端硬件,而是在軟件層面來保證系統(tǒng)的可靠性及高性能,于是同年,Google開始采用自行設(shè)計的服務(wù)器來降低成本。2000年,Google開始自行設(shè)計DataCenter,采用了各種方法(例如采用其他的制冷方法來替代空調(diào))來優(yōu)化PUE(能源利用率),同時對自行設(shè)計的服務(wù)器也做了很多化。2001年,Google對Index的格式進(jìn)行了修改,將所有的Index放入內(nèi)存,這次改造帶來的好處是網(wǎng)站的響應(yīng)速度以及可支撐的訪問量得到了極大的提升。2003年,Google發(fā)表了文章Google ClusterArchitecture,其Cluster結(jié)構(gòu)組成為硬件LB+Index Cluster+DocCluster+大量廉價服務(wù)器(例如IDE硬盤、性價比高的CPU等),通過并行處理+sharding來保證在降低對硬件要求的同時,響應(yīng)速度仍然很快。同年Google發(fā)表了關(guān)于Google文件系統(tǒng)的論文(GFS在2000年就已經(jīng)上線),這篇論文很大程度也體現(xiàn)了Google不用昂貴硬件的風(fēng)格,通過GFS+大量廉價的服務(wù)器即可存儲大量的數(shù)據(jù)。2004年,Google再次對Index的格式進(jìn)行了修改,使得網(wǎng)站的響應(yīng)速度繼續(xù)提升。同年Google發(fā)表關(guān)于MapReduce的論文,通過MapReduce+大量廉價的服務(wù)器即可快速完成以前要使用昂貴小型機(jī)、中型機(jī)甚至是大型機(jī)才能完成的計算任務(wù),而這顯然對于Google快速地構(gòu)建索引提供了很大的幫助。2006年,Google發(fā)表了關(guān)于BigTable的論文(2003年開始上線),使得海量數(shù)據(jù)的分析能夠達(dá)到在線系統(tǒng)的要求了,這對于Google提升網(wǎng)站的響應(yīng)速度起到了很大的幫助。
以上3篇論文徹底改變了業(yè)界對于海量數(shù)據(jù)的存儲、分析和檢索的方法(小道消息:Google內(nèi)部已完成了GFS、MapReduce、BigTable的替換),也奠定了Google在業(yè)界的技術(shù)領(lǐng)導(dǎo)地位。
在一些場景中,Google也采用MySQL來存儲數(shù)據(jù)。同樣,Google對MySQL也做了很多修改,它使用的MySQL信息可以從https://code.google.com/p/google-mysql/了解。
2007年,Google將 build索引的時間縮短到分鐘級,當(dāng)新網(wǎng)頁出現(xiàn)后,幾分鐘后即可在Google搜索到,同時將IndexCluster通過Protocol Buffers對外提供Service,以供Google各種搜索(例如網(wǎng)頁、圖片、新聞、書籍等)使用,除了IndexCluster提供的Service外,還有很多其他的Service,例如廣告、詞法檢查等。Google的一次搜索大概需要調(diào)用內(nèi)部50個以上的Service,Service主要用C++或Java來編寫。2009年,Google的一篇《How Google usesLinux》文章,揭示了Google在提升機(jī)器利用率方面也做了很多的努力,例如將不同資源消耗類型的應(yīng)用部署在同一臺機(jī)器上。
在之后,Google又研發(fā)了Colossus(下一代類GFS文件系統(tǒng))、Spanner(下一代類BigTable海量存儲和計算架構(gòu))、實(shí)時搜索(基于Colossus實(shí)現(xiàn)),主要都是為了提升搜索的實(shí)時性以及存儲更多數(shù)據(jù)。除了在海量數(shù)據(jù)相關(guān)技術(shù)上的革新外,Google也不斷對業(yè)界的傳統(tǒng)技術(shù)進(jìn)行創(chuàng)新,例如提高TCP的初始擁塞窗口值、改進(jìn)HTTP的SPDY協(xié)議、新的圖片格式WebP等。
在Google的發(fā)展過程中,其技術(shù)的改造主要圍繞在可伸縮性、性能、成本和可用性4個方面,Google不采用昂貴硬件的風(fēng)格以及領(lǐng)先其他網(wǎng)站的數(shù)據(jù)量決定了其技術(shù)改造基本都是對傳統(tǒng)的軟硬件技術(shù)的革新。
1
2
3
下一頁
文章編輯: 365webcall在線客服系統(tǒng)(www.365webcall.com)
我的評論
登錄賬號: | 密碼: | 快速注冊 | 找回密碼 |