這個故事名字叫How Google Works,網站上分了14頁,非常全面地解釋了Google是怎麼轉起來的,同時也還相當地深入--對於報刊而言。不過它實在太長,看過後再也不想往前翻了,所以就依記憶寫點有趣的吧。有任何問題都請參考原文。
不過,正如文章中提到的:我們知道許多人進了Google,然後他們就消失了 這就是Google的神秘之處以及它保持神秘的方法。所以這篇文章的出處包括一些公開發表的論文,演講,數量也很少,其他也是推測。
首先是Google的硬件,是許多台普通的電腦,文中猜測的數字是45萬台(這個數字可能會有出入,但隨著時間不斷增長應該是真的)。我記得有報道說某 Google高管一次說不是隨便的PC,而是很高檔的服務器,這個說法並沒有得到其他佐證。這些機器分佈在全球許多個數據中心,都柏林、弗吉尼亞、加州、俄勒崗等等。Google的所有服務都依賴於這些機器。2005年,Google在服務器以及數據中心上面花費了8.38億美元。
而且Google已經研發了快速部署這些服務器的技術,它把機器組裝在20英尺或40英尺長的集裝箱中,放在卡車上就可以運走。一個箱子裡可能會裝5000個Opteron處理器和3.5PB的存儲設備。
為了利用這些機器,當然首先是為了滿足網頁索引計算的要求,Google還開發了自己的文件系統,最早稱為BigFile,然後稱為GFS,這個系統單個分塊就有64MB,並且據說很少出現小文件,所以利用還是很充分。最初當Google只索引2500個網頁的時候,總容量就有100多GB。但一般網頁通常都很小,整個網站扒下來才能用MB來算,不知道是不是一個網站算一個文件?
在這個系統中,有一個主服務器,它掌管文件的名字存放位置等數據,真正的文件放在文件服務器上,一個主服務器加上成千上萬台文件服務器成為一個GFS集群,據說大概有50個這樣的集群。
而為了保證可靠與服務快速,每個文件都至少有3個備份,一個壞了,另外兩個馬上響應,延遲不過是幾個毫秒。
為了存儲結構數據,Google還開發了BigTable,這是個數據庫系統,它裡面的表可以分成塊存放在GFS上,這樣就可以處理超級大的數據表。
為了在這樣的分佈平台上編程,Google開發了MapReduce,它是個中間層或接口,用C++完成,另有Java和Python接口。它可以把計算分佈到多台機器上,讓應用工程師不必再考慮這個問題。據說新加入的工程師第一周的培訓就是用這個工具寫統計一組網頁中詞彙出現頻率的程序。去年10月,這個系統每天要處理3000項作業,比如分析最新的網頁以及更新索引。
在這樣複雜的情況下,Google還保持著性價比上的優勢,通常其對手花3美元辦成的事,它只要1美元。
文中說現任CEO去Google的時候,發現兩位創始人還在用Quicken算賬,而當時他們已經有200名員工和2000萬的收入。而Google的項目管理績效考評也很有意思,每週系統會給員工發個Email,問他們這周幹了什麼,以及下周要幹什麼。員工就回復;到下一周,系統會發信問,你上周說你要干123,那麼做完了嗎?這些全部是自然語言的,並且是可以搜索的。大家就能互相發現一些新點子。
文中引用比較多的話來自Google的CIO,Doug Merrill,一位普林斯頓的心理學博士。