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