摘要:首先介紹了云計算產生的背景、概念、基本原理和體系結構,然后以Google系統為例詳細闡述了云計算的實現機制。云計算是并行計算、分布式計算和網格計算等計算機科學概念的商業實現。Google擁有自己云計算平臺,提供了云計算的實現機制和基礎構架模式。該文闡述了Google云計算平臺:GFS分布式文件、分布式數據庫BigTable及Map/Reduce編程模式。最后分析了云計算發展所面臨的挑戰。
關鍵詞:云計算;集群;谷歌文件系統;大表;映射/化簡
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2009)25-7093-03
Cloud Computing System Instances Based on Google
CAI Jian1, WANG Shu-mei2
(1.Xuzhou Normal University Modern Educational Technology Center, Xuzhou 221116,China; 2.Xuzhou Normal University, School of Computer Science Technology,Xuzhou 221116, China)
Abstract: This paper introduces the backgrounds, concept, basic principle and infrastructure of cloud computing firstly.Then it surveys implementation mechanism of clouding computing based on the instances of Google.Cloud computing is the system in enterprises based on the concepts of computer science. These concepts include parallel computing, distributed computing and grid computing. Google has his own platform of cloud computing. It provides implementation mechanism and infrastructure of cloud computing. This paper surveys the platform of cloud computing:Google File System, Distributed database-BigTable and Map/Reduce. Finally the paper analyse the challenge of cloud computing.
Key words: cloud computing; cluster; GFS; bigtable; map/reduce
自2007年第4季度開始,“云計算”變成了IT領域新的熱點。而2008年被稱為云計算的元年,Google、Amazon、IBM、微軟等IT巨頭們以前所未有的速度和規模推動云計算技術和產品的普及。本文介紹一些關于云計算的一些基本概念及Google提出的云計算模型及實現機制。
1 云計算綜述
云計算是并行計算(Parallel Computing)、分布式計算(Distributed Computing)和網格計算(Grid Computing)的發展,或者說是這些計算機科學概念的商業實現。
云計算是虛擬化(Virtualization)、效用計算(Utility Computing)、IaaS(基礎設施即服務)、PaaS(平臺即服務)、SaaS(軟件即服務)等概念混合演進并躍升的結果。
1.1 云計算的概念
云計算現在還沒有統一標準的定義,一些大公司在自己的技術文檔里給出了自己的定義。例如云計算在IBM的文檔中對云計算的定義是:云計算一詞用來描述一個系統平臺或者一種類型的應用程序。一個云計算的平臺按需進行動態的部署、配置、重新配置以及撤銷服務等。
而對云計算更加通用的的定義是:云計算是一種商業計算模型。它將計算任務分布在大量計算機構成的資源池上,使各種應用系統能夠根據需要獲取計算力、存儲空間和各種軟件服務。從這個定義上講可把云計算看成是“存儲云”與“計算云”的有機結合。存儲云對第三方用戶公開存儲接口,用戶通過這個接口可以把數據存儲到“云”。計算云通過并行計算和虛擬化技術給用戶提供計算力,它的商業模式是給用戶提供計算力。
1.2 云計算實現機制
圖1簡單的描述了云計算的實現機制。用戶通過用戶交互接口(User interaction interface)來請求服務云。一個用戶能夠請求的所有服務目錄存放在服務目錄(Services catalog)里。系統管理(System management)是用戶管理計算機資源是否可用。服務提供工具(Provisioning tool)用來處理請求的服務,需要部署服務配置。監控統計(Monitoring and metering)用于對用戶服務進行跟蹤測量,提交給中心服務器。通過以上的機制對計算/存儲資源進行統一的管理,這些計算/存儲資源可能是虛擬服務或者真實的。
1.3 云計算體系結構
一個云計算系統就是對一系列IT資源的配置,是專門為了運行應用程序,而不是分配給其靜態的應用作為客戶端或服務器計算。
圖2給出了云計算的體系結構,在這個模型中云計算架構和服務都構建在面向服務的體系結構(SOA)框架之上。通過管理中間件的用戶管理、映像管理和資源管理對虛擬化的資源池進行管理,從而最終滿足用戶的云服務。這個體系結構中的物理資源相對廉價的設備如x86服務器。
1.4 云計算幾種形式[7]
目前云計算主要的商用形式有SaaS(軟件即服務)、實用計算(Utility Computing)、網絡服務、平臺即服務、MSP(管理服務提供商)、商業服務平臺、互聯網整合等。
SaaS(軟件即服務):SaaS的云計算通過瀏覽器把程序傳給所需服務的用戶。在用戶眼中看來,這樣會省去在服務器和軟件授權上的開支;從供應商角度來看,這樣只需要維持一個程序就夠了,這樣能夠減少成本,Google Apps是類似這種服務。
實用計算(Utility Computing):這種云計算是為IT行業創造虛擬的數據中心使得其能夠把內存、I/O設備、存儲和計算能力集中起來成為一個虛擬的資源池來為整個網絡提供服務。
網絡服務:網絡服務提供者們能夠提供API讓開發者能夠開發更多基于互聯網的應用,而不是提供單機程序。
平臺即服務(PaaS):這種形式的云計算把開發環境作為一種服務來提供。你可以使用中間商的設備來開發自己的程序并通過互聯網和其服務器傳到用戶手中。
MSP(管理服務提供商):這種應用更多的是面向IT行業而不是終端用戶,常用于郵件病毒掃描、程序監控等等。
商業服務平臺:SAAS和MSP的混合應用,該類云計算為用戶和提供商之間的互動提供了一個平臺。比如用戶個人開支管理系統,能夠根據用戶的設置來管理其開支并協調其訂購的各種服務。
互聯網整合:將互聯網上提供類似服務的公司整合起來,以便用戶能夠更方便的比較和選擇自己的服務供應商。
1.5 云計算特點[8]
超大規模:“云”具有相當的規模,Google云計算已經擁有100多萬臺服務器。企業私有云一般擁有數百上千臺服務器。“云”能賦予用戶前所未有的計算能力。
虛擬化:云計算支持用戶在任意位置、使用各種終端獲取應用服務。所請求的資源來自“云”,而不是固定的有形的實體。應用在“云”中某處運行,但實際上用戶無需了解、也不用擔心應用運行的具體位置。只需要一臺筆記本或者一個手機,就可以通過網絡服務來實現我們需要的一切,甚至包括超級計算這樣的任務。
高可靠性:“云”使用了數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用云計算比使用本地計算機可靠。
通用性:云計算不針對特定的應用,在“云”的支撐下可以構造出千變萬化的應用,同一個“云”可以同時支撐不同的應用運行。
高可擴展性:“云”的規模可以動態伸縮,滿足應用和用戶規模增長的需要。
按需服務:“云”是一個龐大的資源池,你按需購買;云可以象自來水,電,煤氣那樣計費。
極其廉價:由于“云”的特殊容錯措施可以采用極其廉價的節點來構成云,“云”的自動化集中式管理使大量企業無需負擔日益高昂的數據中心管理成本,“云”的通用性使資源的利用率較之傳統系統大幅提升。
2 Google云計算平臺
目前Google是云計算的最大使用者,擁有自己的云計算平臺。針對內部網絡數據規模超大的特點,Google提出了一整套基于分布式并行集群方式的基礎架構。Google使用的云計算基礎架構模式主要包括3個相互獨立又緊密結合在一起的系統也稱之為云計算三大法寶包括:Google建立在集群之上的文件系統Google File System,針對Google開發的模型簡化的大規模分布式數據庫BigTable以及由Google應用程序的特點提出的Map/Reduce編程模式。
2.1 Google File System文件系統
Google設計并實現的Google文件系統(GFS,Google File System)除了與過去的分布式文件系統擁有許多相同的目標如性能、可伸縮性、可靠性以及可用性還受到Google應用負載和技術環境的影響。主要體現在以下四個方面:集群中的節點失效是一種常態,而不是一種異常;Google系統中的文件大小與通常文件系統中的文件大小概念不一樣,文件大小通常以G字節計;Google文件系統中的文件讀寫模式和傳統的文件系統不同;文件系統的某些具體操作不再透明,而且需要應用程序的協助完成,應用程序和文件系統API的協同設計提高了整個系統的靈活性。
圖3給出了Google File System的系統架構,一個GFS集群包含一個主服務器和多個塊服務器,被多個客戶端訪問。文件被分割成固定尺寸的塊。在每個塊創建的時候,服務器分配給它一個不變的、全球惟一的64位塊句柄對它進行標識。塊服務器把塊作為linux文件保存在本地硬盤上,并根據指定的塊句柄和字節范圍來讀寫塊數據。為了保證可靠性,每個塊都會復制到多個塊服務器上,缺省保存三個備份。主服務器管理文件系統所有的元數據,包括名字空間、訪問控制信息和文件到塊的映射信息,以及塊當前所在的位置。GFS客戶端代碼被嵌入到每個程序里,它實現了Google文件系統 API,幫助應用程序與主服務器和塊服務器通信,對數據進行讀寫。客戶端跟主服務器交互進行元數據操作,但是所有的數據操作的通信都是直接和塊服務器進行的。通過服務器端和客戶端的聯合設計,Google File System能夠針對它本身的應用獲得最大的性能以及可用性效果。
2.2 分布式數據庫管理系統BigTable
為了處理Google內部大量的格式化以及半格式化數據,Google構建了弱一致性要求的大規模數據庫系統BigTable。現在有很多Google的應用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS閱讀器等。圖4給出了BigTable的數據模型。數據模型包括行列以及相應的時間戳,所有的數據都存放在表格中的單元里。BigTable的內容按照行來劃分,將多個行組成一個小表,保存到某一個服務器節點中。這一個小表就被稱為Tablet。
BigTable也是客戶端和服務器端的聯合設計,圖5給出了BigTable系統的體系結構。BigTable系統依賴于集群系統的底層結構,一個分布式的集群任務調度器,一個GFS文件系統服務器和一個分布式的鎖服務。BigTable使用鎖服務保存根數據表格的指針從而獲得表的位置,進而對數據進行訪問。BigTable使用一臺服務器作為主服務器,用來保存和元數據。主服務器除了管理元數據之外,還負責對Tablet服務器進行遠程管理與負載調配,客戶端通過編程接口于主服務器進行元數據通信,與Table服務器進行數據通信。[1]
2.3 MapReduce(映射化簡)的編程環境
Google設計并實現了一套大規模數據處理的編程規范Map/Reduce系統。這樣,非分布式專業的程序編寫人員也能夠為大規模的集群編寫應用程序而不用去顧慮集群的可靠性、可擴展性等問題。應用程序編寫人員只需要將精力放在應用程序本身,而關于集群的處理問題則交由平臺來處理。
Map/Reduce通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算,用戶只需要提供自己的Map以及Reduce函數就可以在集群上進行大規模的分布式數據處理。
Map/Reduce的處理過程分為Map(映射)”和“Reduce(化簡)兩個過程,其過程可表示如下:
Map: (in_key, in_value) à {(keyj, values) | j = 1…k}
Reduce: (key, [value1,…values]) à (key, f_value)
圖6給出了Map/Reduce機制實現的過程。首先通過Map函數將輸入文件分成大小為64M文件塊,分到個塊服務器進行處理。將有相同key的中間結果分配到同一個Reduce函數進行進行處理,處理后將最終結果輸出。
3 結論
該文討論了云計算概念、實現機制、體系結構及云計算的幾種形式和特點。并以Google為實例介紹了云計算的基礎體系結構:Google File System,BigTable,Map/Reduce。
當然云計算平臺也面臨著諸多挑戰,主要包括以下幾個方面:
數據安全性與隱私保護:用戶數據的安全問題被認為是計算平臺安全問題,云計算的一個重要問題是計算平臺的安全問題。云計算基礎架構具有多租戶的特性,廠商們通常無法保證兩家不同的用戶的數據實現物理分隔。另外,考慮到大規模擴展性方面的要求,數據物理位置可能得不到保證[8]。
在云計算平臺中,每個人都處在開放的環境中,在云計算平臺中提供或者接受服務,這樣很容易使得個人隱私缺乏必要的關注,在云計算中,隱私的保護也是一個挑戰。用戶把自己加密的數據連同應用程序都放在云計算運營公司仍感不安全。在使用云計算服務時,用戶并不清楚自己的數據儲存在哪里,用戶甚至都不知道數據位于哪個國家。就算用戶不知道數據存儲的位置,云計算運營公司也應當告訴用戶在發生災難時,用戶數據和服務將會面臨什么樣的情況。任何沒有經過備份的數據和應用程序都將出現問題。用戶需要了解云計算運營公司是否有能力恢復數據,以及需要多長時間。顯然如何提供機制保證數據的安全性對于云計算至關重要[6]。
數據訪問和存儲模型:由于現在的大廠商所提供的存儲模型都需要適應許多不同的使用場景。因而,它們可能偏向采用基于二進制大對象的簡單存儲模型或簡單的層次模型。雖然這帶來了顯著的靈活性,卻給應用邏輯解釋不同數據元素之間的關系增加了負擔[8]。
缺乏標準和廠商鎖定:大多數廠商都定義了基于標準的機制(HTTP、REST和SOAP等)來訪問及使用其服務。但在云計算環境開發服務方面的標準才剛剛興起,而且現在缺乏一次編寫、到處運行的功能。
服務互操作性:當前云計算對于服務的互操作性支持不夠,這對于用戶進行跨平臺的服務,同平臺不同服務之間的服務存在障礙。這些都是云計算模式所面臨的挑戰。
參考文獻:
[1] 陳康,鄭緯民.云計算:系統實例與研究現狀[J].軟件學報,2009,5:1337-1348..
[2] 唐敏.基于自然云的云計算模型[J].中國科技論文在線,2007.
[3] 張渝江,岳偉.云計算叩開學校大門[J].中國信息技術教育,2008(12):93-94.
[4] 樂天.云計算還須邁過安全關[N].計算機世界報,2008-7-28(28).
[5] 陳谷.BIM云計算和政府云平臺[J].程序員,2008(11):56-57
[6] 完全解讀“IT明日之星”——云計算.eNet硅谷動力,2008.收稿日期:2009-03-12.
[7] 中國云計算.http://www.chinacloud.cn/show.aspx?id=515cid=17.
[8] 中國云計算. http://www.chinacloud.cn/show.aspx?id=5cid=14.
[9] Baidu.http://baike.baidu.com/view/1316082.html?tp=0_11.
[10] Barroso LA, Dean J, Holzle U. Web search for a planet: The Google cluster architecture. IEEE Micro, 2003,23(2):22-28.
[11] Ghemawat S, Gobioff H, Leung ST. The Google file system. In: Proc. of the 19th ACM Symp. on Operating Systems Principles.New York: ACM Press, 2003. 29-43.
[12] Dean J, Ghemawat S. MapReduce: Simplified data processing on large clusters. In: Proc. of the 6th Symp. on Operating System
[13] Dean J, Ghemawat S. Distributed programming with Mapreduce. In: Oram A, Wilson G, eds. Beautiful Code. Sebastopol: O’Reilly
[14] Chang F, Dean J, Ghemawat S, Hsieh WC, Wallach DA,,Burrows M,Chandra T,Fikes A, Gruber RE.Bigtable:A distributed storage system for structured data. In: Proc. of the 7thUSENIX Symp.on Operating Systems Design and Implementation.