
Google的云計算技術實際上是針對Google特定的網絡應用程序而定制的。針對內部網絡數據規模超大的特點,Google提出了一整套基于分布式并行集群方式的基礎架構,利用軟件的能力來處理集群中經常發生的節點失效問題。
從2003年開始,Google連續幾年在計算機系統研究領域的最頂級會議與雜志上發表論文,揭示其內部的分布式數據處理方法,向外界展示其使用的云計算核心技術。從其近幾年發表的論文來看,Google使用的云計算基礎架構模式包括四個相互獨立又緊密結合在一起的系統。包括Google建立在集群之上的文件系統Google File System,針對Google應用程序的特點提出的Map/Reduce編程模式,分布式的鎖機制Chubby以及Google開發的模型簡化的大規模分布式數據庫BigTable。
Google File System 文件系統
為了滿足Google迅速增長的數據處理需求,Google設計并實現了Google文件系統(GFS,Google File System)。GFS與過去的分布式文件系統擁有許多相同的目標,例如性能、可伸縮性、可靠性以及可用性。然而,它的設計還受到Google應用負載和技術環境的影響。主要體現在以下四個方面:
1. 集群中的節點失效是一種常態,而不是一種異常。由于參與運算與處理的節點數目非常龐大,通常會使用上千個節點進行共同計算,因此,每時每刻總會有節點處在失效狀態。需要通過軟件程序模塊,監視系統的動態運行狀況,偵測錯誤,并且將容錯以及自動恢復系統集成在系統中。
2. Google系統中的文件大小與通常文件系統中的文件大小概念不一樣,文件大小通常以G字節計。另外文件系統中的文件含義與通常文件不同,一個大文件可能包含大量數目的通常意義上的小文件。所以,設計預期和參數,例如I/O操作和塊尺寸都要重新考慮。
3. Google文件系統中的文件讀寫模式和傳統的文件系統不同。在Google應用(如搜索)中對大部分文件的修改,不是覆蓋原有數據,而是在文件尾追加新數據。對文件的隨機寫是幾乎不存在的。對于這類巨大文件的訪問模式,客戶端對數據塊緩存失去了意義,追加操作成為性能優化和原子性(把一個事務看做是一個程序。它要么被完整地執行,要么完全不執行)保證的焦點。
4. 文件系統的某些具體操作不再透明,而且需要應用程序的協助完成,應用程序和文件系統API的協同設計提高了整個系統的靈活性。例如,放松了對GFS一致性模型的要求,這樣不用加重應用程序的負擔,就大大簡化了文件系統的設計。還引入了原子性的追加操作,這樣多個客戶端同時進行追加的時候,就不需要額外的同步操作了。
總之,GFS是為Google應用程序本身而設計的。據稱,Google已經部署了許多GFS集群。有的集群擁有超過1000個存儲節點,超過300T的硬盤空間,被不同機器上的數百個客戶端連續不斷地頻繁訪問著。
圖1給出了Google File System的系統架構,一個GFS集群包含一個主服務器和多個塊服務器,被多個客戶端訪問。文件被分割成固定尺寸的塊。在每個塊創建的時候,服務器分配給它一個不變的、全球惟一的64位塊句柄對它進行標識。塊服務器把塊作為linux文件保存在本地硬盤上,并根據指定的塊句柄和字節范圍來讀寫塊數據。為了保證可靠性,每個塊都會復制到多個塊服務器上,缺省保存三個備份。主服務器管理文件系統所有的元數據,包括名字空間、訪問控制信息和文件到塊的映射信息,以及塊當前所在的位置。GFS客戶端代碼被嵌入到每個程序里,它實現了Google文件系統 API,幫助應用程序與主服務器和塊服務器通信,對數據進行讀寫。客戶端跟主服務器交互進行元數據操作,但是所有的數據操作的通信都是直接和塊服務器進行的。客戶端提供的訪問接口類似于POSIX接口,但有一定的修改,并不完全兼容POSIX標準。通過服務器端和客戶端的聯合設計,Google File System能夠針對它本身的應用獲得最大的性能以及可用性效果。

MapReduce分布式編程環境
為了讓內部非分布式系統方向背景的員工能夠有機會將應用程序建立在大規模的集群基礎之上,Google還設計并實現了一套大規模數據處理的編程規范Map/Reduce系統。這樣,非分布式專業的程序編寫人員也能夠為大規模的集群編寫應用程序而不用去顧慮集群的可靠性、可擴展性等問題。應用程序編寫人員只需要將精力放在應用程序本身,而關于集群的處理問題則交由平臺來處理。
Map/Reduce通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算,用戶只需要提供自己的Map函數以及Reduce函數就可以在集群上進行大規模的分布式數據處理。
據稱,Google的文本索引方法,即搜索引擎的核心部分,已經通過Map Reduce的方法進行了改寫,獲得了更加清晰的程序架構。在Google內部,每天有上千個Map Reduce的應用程序在運行。
分布式大規模數據庫管理系統BigTable
構建于上述兩項基礎之上的第三個云計算平臺就是Google關于將數據庫系統擴展到分布式平臺上的BigTable系統。很多應用程序對于數據的組織還是非常有規則的。一般來說,數據庫對于處理格式化的數據還是非常方便的,但是由于關系數據庫很強的一致性要求,很難將其擴展到很大的規模。為了處理Google內部大量的格式化以及半格式化數據,Google構建了弱一致性要求的大規模數據庫系統BigTable。據稱,現在有很多Google的應用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS閱讀器等。
圖2給出了在BigTable模型中的數據模型。數據模型包括行列以及相應的時間戳,所有的數據都存放在表格中的單元里。BigTable的內容按照行來劃分,將多個行組成一個小表,保存到某一個服務器節點中。這一個小表就被稱為Tablet。

以上是Google內部云計算基礎平臺的三個主要部分,除了這三個部分之外,Google還建立了分布式程序的調度器,分布式的鎖服務等一系列相關的云計算服務平臺。
Google的云應用
除了上述的云計算基礎設施之外,Google還在其云計算基礎設施之上建立了一系列新型網絡應用程序。由于借鑒了異步網絡數據傳輸的Web 2.0技術,這些應用程序給予用戶全新的界面感受以及更加強大的多用戶交互能力。其中典型的Google云計算應用程序就是Google推出的與Microsoft Office軟件進行競爭的Docs網絡服務程序。Google Docs是一個基于Web的工具,它有跟Microsoft Office相近的編輯界面,有一套簡單易用的文檔權限管理,而且它還記錄下所有用戶對文檔所做的修改。Google Docs的這些功能令它非常適用于網上共享與協作編輯文檔。Google Docs甚至可以用于監控責任清晰、目標明確的項目進度。當前,Google Docs已經推出了文檔編輯、電子表格、幻燈片演示、日程管理等多個功能的編輯模塊,能夠替代Microsoft Office相應的一部分功能。值得注意的是,通過這種云計算方式形成的應用程序非常適合于多個用戶進行共享以及協同編輯,為一個小組的人員進行共同創作帶來很大的方便性。
Google Docs是云計算的一種重要應用,即可以通過瀏覽器的方式訪問遠端大規模的存儲與計算服務。云計算能夠為大規模的新一代網絡應用打下良好的基礎。
雖然Google可以說是云計算的最大實踐者,但是,Google的云計算平臺是私有的環境,特別是Google的云計算基礎設施還沒有開放出來。除了開放有限的應用程序接口,例如GWT(Google Web Toolkit)以及Google Map API等,Google并沒有將云計算的內部基礎設施共享給外部的用戶使用,上述的所有基礎設施都是私有的。
幸運的是,Google公開了其內部集群計算環境的一部分技術,使得全球的技術開發人員能夠根據這一部分文檔構建開源的大規模數據處理云計算基礎設施,其中最有名的項目即Apache旗下的Hadoop項目。而下面的兩個云計算的實現則為外部的開發人員以及中小公司提供了云計算的平臺環境,使得開發者能夠在云計算的基礎設施之上構建自己的新型網絡應用。其中IBM的藍云計算平臺是可供銷售的計算平臺,用戶可以基于這些軟硬件產品自己構建云計算平臺。亞馬遜的彈性計算云則是托管式的云計算平臺,用戶可以通過遠端的操作界面直接使用。
CIO頻道人物視窗
CIO頻道方案案例庫
大數據建設方案案例庫
電子政務建設方案案例庫
互聯集成系統構建方案案例庫
商務智能建設方案案例庫
系統集成類軟件信息研發企業名錄