Google背後的IT架構策略揭秘
Google是與眾不同的。它的獨特不僅僅表現於革新的思維和充滿創意的應用 (比如那個大堂裡的地球模型),更在於其有別常規的IT策略……
加利福尼亞州山景城(Mountain View)Google公司(Google,下稱Google)總部有一個43號大樓,該建築的中央大螢幕上顯示著一個與Google地球(Google Earth)相仿的世界地圖,一個轉動的地球上不停地閃動著五顏六色的光點,恍如羅馬宮廷的千萬燭燈,每一次閃動標誌著地球的這個角落一名Google使用者發起了一次新的搜尋。
這同時意味著Google又一次滿足了人們對未知資訊的好奇與渴望。
Google是與眾不同的。它的獨特不僅僅表現於革新的思維和充滿創意的應用 (比如那個大堂裡的地球模型),更在於其有別常規的IT策略。從人們的常理來看,簡單的硬體商品和免費軟體是無法構建出一個帝國的,但是Google做到了。在效能調整後,Google把它們變成一個無可比擬的分散式運算平台,該平台能夠支援大規模的搜尋和不斷湧現的新興應用。我們原本認為這些應用都是個人消費層級的,但是Google改變了這一切。現在商業世界也在使用它們,這就令這家搜尋公司顯得那麼與眾不同。
GoogleWeb 服務背後的IT架構對無數使用搜尋引擎的使用者來說也許並不是非常重要,但它是Google幾百位致力於把全球資訊組織起來,實現“隨處可達,隨時可用”目標的工程師們的最核心工作。這就需要一個在覆蓋範圍和野心上都與Google的商業願景完全相符的IT藍圖作為支撐。
Google 的經理們一直對公司的IT策略話題保持沉默,他們厭惡談及特定的廠商或者產品,當被問到他們的伺服器和資料中心時,他們總是閉口不談。但與幾位 Google的IT領導一起呆了一天后,我們最終得以揭示該公司的IT是如何運作的,那可不僅僅是一個運行在無數伺服器叢集上的、表面看來非常簡單的搜尋引擎。在其簡單的外表下,蘊涵著許多內部研發軟體、定製硬體、人工智慧,以及對效能的執著追求和打破常規的人力管理員模式。
IT理念方面,Google對同行有一條建議:盡量避免那些人人都在使用的系統和軟體,以自己的方式做事會更有獨特的競爭優勢。
“企業文化決定了你的做事方式。”道格拉斯"美林(Douglas Merrill),這位Google工程副總裁和事實上的首席資訊官(CIO) 指出,“到了我們這樣的發展階段,企業觀念和文化非常與眾不同,這也反過來鞭策我們必須要採用與眾不同的方式來運行那些他人看來很常規的系統。”
Google 最大的IT優勢在於它能建造出既富於性價比(並非廉價)又能承受極高負載的高效能系統。因此IT顧問史蒂芬"阿諾德(Stephen Arnold)指出,Google與競爭者,如亞馬遜網站(Amazon)、電子港灣公司(eBay)、微軟公司(Microsoft,下稱微軟)和雅虎公司 (Yahoo,下稱雅虎)等公司相比,具有更大的成本優勢。Google程式員的效率比其他Web公司同行們高出50%~100%,原因是Google已經開發出了一整套專用於支援大規模並行系統編程的定製軟體庫。據他估算,其他競爭公司可能要花上四倍的時間才能獲得同等的效果。
打造伺服器
Google 究竟是怎樣做到這點的呢?其中一個手段,美林認為,“是因為我們自己動手打造硬體。”Google並不製造電腦系統,但它根據自己的參數定製硬體,然後像MTV的節目“靚車打造”(Pimp My Ride)那樣自己安裝和調整硬體系統。開來源程式經理克裡斯"迪博納(Chris DiBona)評論道:“我們很善於購買商務服務器,並且改造他們為我們所用,最後把效能壓榨和發揮到極致,以致有時候他們熱得像要融化了似的。”
這種親手打造的方式,來源於Google從車庫誕生時與生俱來的節儉風格,更與Google那超大型的系統規模息息相關,良好的習慣一直延續至今。據說 Google在65個資料中心擁有20萬~45萬台伺服器—這個數目會有偏差(取決於你如何定義伺服器和由誰來做這項統計)。但是,不變的是持續上升的趨勢。
Google不會去討論這些資產,因為它認為保密也是一種競爭優勢。事實上,Google之所以喜歡開源軟體也是因為它的私密性。“如果我們購買了軟體許可或代碼許可,人們只要對號入座,就可以猜出Google的IT基礎架構。”迪博納分析說, “使用開源軟體,就使我們多了一條把握自己命運的途徑。”
Google喜歡規模化的伺服器運行方式。當有成百上千台機器時,定製伺服器的優勢也會成倍增加,效果也會更趨明顯。Google正在俄勒岡州哥倫比亞河邊的達勒斯市建造一個佔地30畝的資料中心,在那兒它可以獲得運算和降溫需要的低價水力電力能源(參見側邊欄《Google資料中心自有一套》)。
Google以“單元”(Cell)的形式組織這些運行 Linux作業系統的伺服器,迪博納把這種形式比喻成互連網服務的“磁碟機”(但別和一直謠傳的Google儲存服務Gdrive混淆了,“並沒有 Gdrive這回事。”一位Google女發言人明確表示。),公司的軟體程式都駐紮在這些並不昂貴的電腦機箱裡,由程式員決定它們的冗餘工作量。這種由很多單元組成的檔案系統代替了商業存放裝置;迪博納表示Google這些單元裝置更易於建造和維護,他還暗示他們能處理更大規模的資料。
Google 不會漏過對任何技術細節的關注。多年來,公司的工程師就在研究微處理器的內部工作機制,隨著Google規模的持續壯大,必然會用到特別定製和調節過的晶片。知名工程師路易斯"巴羅索(Luiz Barroso)去年在一篇發表在工業雜誌上的論文中證實,近年來Google的主要負荷都由單核設計的系統承擔著。但許多伺服器端的應用,如 Google搜尋索引服務,所需的並行計算在單核晶片的指令層級上執行得並不好。
曾在資料裝置公司(Digital Equipment)和康柏公司(Compaq)當過晶片設計師的巴羅索認為,隨著AMD公司、英特爾公司(Intel)、太陽電腦系統公司(Sun)開始製造多核晶片,必將會出現越來越多晶片層級的並行計算。
Google 也曾考慮過自己製造電腦晶片,但從業界潮流來看,這個冒險的舉動似乎不是很必要。“微處理器的設計非常複雜而且成本昂貴,”運營進階副總裁烏爾斯"霍爾茨勒(Urs Holzle)表示。Google寧願與晶片製造商合作,讓他們去理解自己的應用並設計適合的晶片。這是一種客戶建議式的設計,其關注點在於總體輸送量、效能,以及耗電比,而不是看單線程的峰值效能。霍爾茨勒表示,“這也是最近多核CPU的設計潮流與未來方向。”
裁縫般地定製軟體
為了能盡量壓榨硬體效能,Google開發了相當數量的定製軟體。創新產品主要包括用於簡化處理和建立大規模資料集的編程模型MapReduce;用於儲存和管理大規模資料的系統BigTable;分析分布式運算環境中大規模資料集的解釋程式設計語言Sawzall;用於資料密集型應用的Distributed File System的 “Google檔案系統”(Google File System);還有為處理分布式系統隊列分組和任務調度的“Google工作隊列”(Google Workqueue)。
正是從Sawzall這些工具裡體現出Google對計算效率的執著關注。並不是每家公司都能從底層去解決效率問題,但是對Google來說,為常規關係型資料庫無法容納的大規模資料集專門設計一種程式設計語言是完全合理的。即使其他編程工具可以解決問題,Google的工程師們仍然會為了追求效率而另外開發一套定製方案。Google工程師認為,Sawzall能與C++中的MapReduce相媲美,而且它更容易編寫一些。
Google 對效率的關注使它不可能對標準Linux核心感到滿意;Google會根據自己的需要運行修改過的核心版本。通過調整Linux的底層效能,Google 工程師們在提高了整體系統可靠性的基礎上,還一併解決了資料損毀和資料瓶頸等一系列棘手問題。對核心的修改也使Google的電腦叢集系統因為通訊效率的提高而運行得更快。
當然,Google偶爾也會出現系統故障,情況一旦發生,無數的使用者就會受到影響了。三年前一次持續30分鐘的系統故障使20%的搜尋流量受到影響。
Google 開發了自己的網站伺服器卻沒有使用開源的Apache伺服器,儘管它在網站伺服器的市場佔有率超過60%。迪博納認為,Google的網站伺服器可以運行在更多數量的主機上,對Google網站上內容龐大又彼此互相依賴的應用程式來說,這種伺服器的負載平衡能力遠比Apache的能力更高。同時,在用標準公用網關介面(CGI)訪問資料庫動態網頁方面,Google伺服器的編程難度要比 Apache更高,但是最終運行速度卻更快。“如果我們能夠壓榨出10%~20%的效能,我們就可以節省出更多系統資源、電量和人力了。”迪博納在總結中指出。
Google還設計了自己的客戶關係管理(CRM)系統用於支援自己基於競價和點擊的互連網廣告收費業務。但對是否需要設計自己的工具,Google的態度也不是一成不變的。比如在財會軟體上,它就使用了甲骨文公司(Oracle)的Financials軟體。
美林拿著一隻叉子舉例說明現成的產品也可以帶來價值。但在有些場合現成的軟體產品就不一定適用了。“我們的文化在各個層面對我們的運作都有深遠影響,”他表示,“所以我們不想讓購買所得的工具改變我們的工作方式和文化層面。”