實例1: Google的云計算平臺與應(yīng)用
Google的云計算技術(shù)實際上是針對Google特定的網(wǎng)絡(luò)應(yīng)用程序而定制的。針對內(nèi)部網(wǎng)絡(luò)數(shù)據(jù)規(guī)模超大的特點,Google提出了一整套基于分布式并行集群方式的基礎(chǔ)架構(gòu),利用軟件的能力來處理集群中經(jīng)常發(fā)生的節(jié)點失效問題。
從2003年開始,Google連續(xù)幾年在計算機系統(tǒng)研究領(lǐng)域的最頂級會議與雜志上發(fā)表論文,揭示其內(nèi)部的分布式數(shù)據(jù)處理方法,向外界展示其使用的云計算核 心技術(shù)。從其近幾年發(fā)表的論文來看,Google使用的云計算基礎(chǔ)架構(gòu)模式包括四個相互獨立又緊密結(jié)合在一起的系統(tǒng)。包括Google建立在集群之上的文 件系統(tǒng)Google File System,針對Google應(yīng)用程序的特點提出的Map/Reduce編程模式,分布式的鎖機制Chubby以及Google開發(fā)的模型簡化的大規(guī)模 分布式數(shù)據(jù)庫BigTable。
Google File System 文件系統(tǒng)
為了滿足Google迅速增長的數(shù)據(jù)處理需求,Google設(shè)計并實現(xiàn)了Google文件系統(tǒng)(GFS,Google File System)。GFS與過去的分布式文件系統(tǒng)擁有許多相同的目標(biāo),例如性能、可伸縮性、可靠性以及可用性。然而,它的設(shè)計還受到Google應(yīng)用負(fù)載和 技術(shù)環(huán)境的影響。主要體現(xiàn)在以下四個方面:
1. 集群中的節(jié)點失效是一種常態(tài),而不是一種異常。由于參與運算與處理的節(jié)點數(shù)目非常龐大,通常會使用上千個節(jié)點進行共同計算,因此,每時每刻總會有節(jié)點處在失效狀態(tài)。需要通過軟件程序模塊,監(jiān)視系統(tǒng)的動態(tài)運行狀況,偵測錯誤,并且將容錯以及自動恢復(fù)系統(tǒng)集成在系統(tǒng)中。
2. Google系統(tǒng)中的文件大小與通常文件系統(tǒng)中的文件大小概念不一樣,文件大小通常以G字節(jié)計。另外文件系統(tǒng)中的文件含義與通常文件不同,一個大文件可能包含大量數(shù)目的通常意義上的小文件。所以,設(shè)計預(yù)期和參數(shù),例如I/O操作和塊尺寸都要重新考慮。
3. Google文件系統(tǒng)中的文件讀寫模式和傳統(tǒng)的文件系統(tǒng)不同。在Google應(yīng)用(如搜索)中對大部分文件的修改,不是覆蓋原有數(shù)據(jù),而是在文件尾追加新 數(shù)據(jù)。對文件的隨機寫是幾乎不存在的。對于這類巨大文件的訪問模式,客戶端對數(shù)據(jù)塊緩存失去了意義,追加操作成為性能優(yōu)化和原子性(把一個事務(wù)看做是一個 程序。它要么被完整地執(zhí)行,要么完全不執(zhí)行)保證的焦點。
4. 文件系統(tǒng)的某些具體操作不再透明,而且需要應(yīng)用程序的協(xié)助完成,應(yīng)用程序和文件系統(tǒng)API的協(xié)同設(shè)計提高了整個系統(tǒng)的靈活性。例如,放松了對GFS一致性 模型的要求,這樣不用加重應(yīng)用程序的負(fù)擔(dān),就大大簡化了文件系統(tǒng)的設(shè)計。還引入了原子性的追加操作,這樣多個客戶端同時進行追加的時候,就不需要額外的同 步操作了。
總之,GFS是為Google應(yīng)用程序本身而設(shè)計的。據(jù)稱,Google已經(jīng)部署了許多GFS集群。有的集群擁有超過1000個存儲節(jié)點,超過300T的硬盤空間,被不同機器上的數(shù)百個客戶端連續(xù)不斷地頻繁訪問著。
下圖1給出了Google File System的系統(tǒng)架構(gòu),一個GFS集群包含一個主服務(wù)器和多個塊服務(wù)器,被多個客戶端訪問。文件被分割成固定尺寸的塊。在每個塊創(chuàng)建的時候,服務(wù)器分配 給它一個不變的、全球惟一的64位塊句柄對它進行標(biāo)識。塊服務(wù)器把塊作為linux文件保存在本地硬盤上,并根據(jù)指定的塊句柄和字節(jié)范圍來讀寫塊數(shù)據(jù)。為 了保證可靠性,每個塊都會復(fù)制到多個塊服務(wù)器上,缺省保存三個備份。主服務(wù)器管理文件系統(tǒng)所有的元數(shù)據(jù),包括名字空間、訪問控制信息和文件到塊的映射信 息,以及塊當(dāng)前所在的位置。GFS客戶端代碼被嵌入到每個程序里,它實現(xiàn)了Google文件系統(tǒng) API,幫助應(yīng)用程序與主服務(wù)器和塊服務(wù)器通信,對數(shù)據(jù)進行讀寫。客戶端跟主服務(wù)器交互進行元數(shù)據(jù)操作,但是所有的數(shù)據(jù)操作的通信都是直接和塊服務(wù)器進行 的。客戶端提供的訪問接口類似于POSIX接口,但有一定的修改,并不完全兼容POSIX標(biāo)準(zhǔn)。通過服務(wù)器端和客戶端的聯(lián)合設(shè)計,Google File System能夠針對它本身的應(yīng)用獲得最大的性能以及可用性效果。
MapReduce分布式編程環(huán)境
為了讓內(nèi)部非分布式系統(tǒng)方向背景的員工能夠有機會將應(yīng)用程序建立 在大規(guī)模的集群基礎(chǔ)之上,Google還設(shè)計并實現(xiàn)了一套大規(guī)模數(shù)據(jù)處理的編程規(guī)范Map/Reduce系統(tǒng)。這樣,非分布式專業(yè)的程序編寫人員也能夠為 大規(guī)模的集群編寫應(yīng)用程序而不用去顧慮集群的可靠性、可擴展性等問題。應(yīng)用程序編寫人員只需要將精力放在應(yīng)用程序本身,而關(guān)于集群的處理問題則交由平臺來 處理。
Map/Reduce通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算,用戶只需要提供自己的Map函數(shù)以及Reduce函數(shù)就可以在集群上進行大規(guī)模的分布式數(shù)據(jù)處理。
據(jù)稱,Google的文本索引方法,即搜索引擎的核心部分,已經(jīng)通過Map Reduce的方法進行了改寫,獲得了更加清晰的程序架構(gòu)。在Google內(nèi)部,每天有上千個Map Reduce的應(yīng)用程序在運行。
分布式大規(guī)模數(shù)據(jù)庫管理系統(tǒng)BigTable
構(gòu)建于上述兩項基礎(chǔ)之上的第三個云計算平臺就是Google關(guān)于將數(shù)據(jù)庫系統(tǒng)擴展到分布式平臺上的BigTable系統(tǒng)。很多應(yīng)用程序?qū)τ跀?shù)據(jù)的組織還是非 常有規(guī)則的。一般來說,數(shù)據(jù)庫對于處理格式化的數(shù)據(jù)還是非常方便的,但是由于關(guān)系數(shù)據(jù)庫很強的一致性要求,很難將其擴展到很大的規(guī)模。為了處理 Google內(nèi)部大量的格式化以及半格式化數(shù)據(jù),Google構(gòu)建了弱一致性要求的大規(guī)模數(shù)據(jù)庫系統(tǒng)BigTable。據(jù)稱,現(xiàn)在有很多Google的應(yīng) 用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS閱讀器等。
下圖2給出了在BigTable模型中的數(shù)據(jù)模型。數(shù)據(jù)模型包括行列以及相應(yīng)的時間戳,所有的數(shù)據(jù)都存放在表格中的單元里。BigTable的內(nèi)容按照行來劃分,將多個行組成一個小表,保存到某一個服務(wù)器節(jié)點中。這一個小表就被稱為Tablet。
以上是Google內(nèi)部云計算基礎(chǔ)平臺的三個主要部分,除了這三個部分之外,Google還建立了分布式程序的調(diào)度器,分布式的鎖服務(wù)等一系列相關(guān)的云計算服務(wù)平臺。
Google的云應(yīng)用
除了上述的云計算基礎(chǔ)設(shè)施之外,Google還在其云計算基礎(chǔ)設(shè)施之上建立了一系列新型網(wǎng)絡(luò)應(yīng)用程序。由于借鑒了異步網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)腤eb 2.0技術(shù),這些應(yīng)用程序給予用戶全新的界面感受以及更加強大的多用戶交互能力。其中典型的Google云計算應(yīng)用程序就是Google推出的與 Microsoft Office軟件進行競爭的Docs網(wǎng)絡(luò)服務(wù)程序。Google Docs是一個基于Web的工具,它有跟Microsoft Office相近的編輯界面,有一套簡單易用的文檔權(quán)限管理,而且它還記錄下所有用戶對文檔所做的修改。Google Docs的這些功能令它非常適用于網(wǎng)上共享與協(xié)作編輯文檔。Google Docs甚至可以用于監(jiān)控責(zé)任清晰、目標(biāo)明確的項目進度。當(dāng)前,Google Docs已經(jīng)推出了文檔編輯、電子表格、幻燈片演示、日程管理等多個功能的編輯模塊,能夠替代Microsoft Office相應(yīng)的一部分功能。值得注意的是,通過這種云計算方式形成的應(yīng)用程序非常適合于多個用戶進行共享以及協(xié)同編輯,為一個小組的人員進行共同創(chuàng)作 帶來很大的方便性。
Google Docs是云計算的一種重要應(yīng)用,即可以通過瀏覽器的方式訪問遠(yuǎn)端大規(guī)模的存儲與計算服務(wù)。云計算能夠為大規(guī)模的新一代網(wǎng)絡(luò)應(yīng)用打下良好的基礎(chǔ)。
雖然Google可以說是云計算的最大實踐者,但是,Google的云計算平臺是私有的環(huán)境,特別是Google的云計算基礎(chǔ)設(shè)施還沒有開放出來。除了開放 有限的應(yīng)用程序接口,例如GWT(Google Web Toolkit)以及Google Map API等,Google并沒有將云計算的內(nèi)部基礎(chǔ)設(shè)施共享給外部的用戶使用,上述的所有基礎(chǔ)設(shè)施都是私有的。
幸運的是,Google公開了其內(nèi)部集群計算環(huán)境的一部分技術(shù),使得全球的技術(shù)開發(fā)人員能夠根據(jù)這一部分文檔構(gòu)建開源的大規(guī)模數(shù)據(jù)處理云計算基礎(chǔ)設(shè)施,其中 最有名的項目即Apache旗下的Hadoop項目。而下面的兩個云計算的實現(xiàn)則為外部的開發(fā)人員以及中小公司提供了云計算的平臺環(huán)境,使得開發(fā)者能夠在 云計算的基礎(chǔ)設(shè)施之上構(gòu)建自己的新型網(wǎng)絡(luò)應(yīng)用。其中IBM的藍(lán)云計算平臺是可供銷售的計算平臺,用戶可以基于這些軟硬件產(chǎn)品自己構(gòu)建云計算平臺。亞馬遜的 彈性計算云則是托管式的云計算平臺,用戶可以通過遠(yuǎn)端的操作界面直接使用。
實例2: 亞馬遜的彈性計算云
亞馬遜是互聯(lián)網(wǎng)上最大的在線零售商,但是同時也為獨立開發(fā)人員以及開發(fā)商提供云計算服務(wù)平臺。亞馬遜將他們的云計算平臺稱為彈性計算云(Elastic Compute Cloud,EC2),它是最早提供遠(yuǎn)程云計算平臺服務(wù)的公司。
開放的服務(wù)
與 Google提供的云計算服務(wù)不同,Google僅為自己在互聯(lián)網(wǎng)上的應(yīng)用提供云計算平臺,獨立開發(fā)商或者開發(fā)人員無法在這個平臺上工作,因此只能轉(zhuǎn)而通 過開源的Hadoop軟件支持來開發(fā)云計算應(yīng)用。亞馬遜的彈性計算云服務(wù)也和IBM的云計算服務(wù)平臺不一樣,亞馬遜不銷售物理的云計算服務(wù)平臺,沒有類似 于“藍(lán)云”一樣的計算平臺。亞馬遜將自己的彈性計算云建立在公司內(nèi)部的大規(guī)模集群計算的平臺之上,而用戶可以通過彈性計算云的網(wǎng)絡(luò)界面去操作在云計算平臺 上運行的各個實例(Instance),而付費方式則由用戶的使用狀況決定,即用戶僅需要為自己所使用的計算平臺實例付費,運行結(jié)束后計費也隨之結(jié)束。
彈性計算云從沿革上來看,并不是亞馬遜公司推出的第一項這種服務(wù),它由名為亞馬遜網(wǎng)絡(luò)服務(wù)的現(xiàn)有平臺發(fā)展而來。早在2006年3月,亞馬遜就發(fā)布了簡單存儲 服務(wù)(Simple Storage Service,S3),這種存儲服務(wù)按照每個月類似租金的形式進行服務(wù)付費,同時用戶還需要為相應(yīng)的網(wǎng)絡(luò)流量進行付費。亞馬遜網(wǎng)絡(luò)服務(wù)平臺使用REST (Representational State Transfer)和簡單對象訪問協(xié)議(SOAP)等標(biāo)準(zhǔn)接口,用戶可以通過這些接口訪問到相應(yīng)的存儲服務(wù)。
2007 年7月,亞馬遜公司推出了簡單隊列服務(wù)(Simple Queue Service,SQS),這項服務(wù)使托管主機可以存儲計算機之間發(fā)送的消息。通過這一項服務(wù),應(yīng)用程序編寫人員可以在分布式程序之間進行數(shù)據(jù)傳遞,而無 須考慮消息丟失的問題。通過這種服務(wù)方式,即使消息的接收方還沒有模塊啟動也沒有關(guān)系。服務(wù)內(nèi)部會緩存相應(yīng)的消息,而一旦有消息接收組件被啟動運行,則隊 列服務(wù)將消息提交給相應(yīng)的運行模塊進行處理。同樣的,用戶必須為這種消息傳遞服務(wù)進行付費使用,計費的規(guī)則與存儲計費規(guī)則類似,依據(jù)消息的個數(shù)以及消息傳 遞的大小進行收費。
在亞馬遜提供上述服務(wù)的時候,并沒有從頭開始開發(fā)相應(yīng)的網(wǎng)絡(luò)服務(wù)組件,而是對公司已有的平臺進行優(yōu)化和改造,一方面滿足了本身網(wǎng)絡(luò)零售購物應(yīng)用程序的需求,另一方面也供外部開發(fā)人員使用。
在開放了上述的服務(wù)接口之后,亞馬遜公司進一步在此基礎(chǔ)上開發(fā)了EC2系統(tǒng),并且開放給外部開發(fā)人員使用。
靈活的工作模式
亞馬遜的云計算模式沿襲了簡單易用的傳統(tǒng),并且建立在亞馬遜公司現(xiàn)有的云計算基礎(chǔ)平 臺之上。彈性計算云用戶使用客戶端通過SOAP over HTTPS協(xié)議來實現(xiàn)與亞馬遜彈性計算云內(nèi)部的實例進行交互。使用HTTPS協(xié)議的原因是為了保證遠(yuǎn)端連接的安全性,避免用戶數(shù)據(jù)在傳輸?shù)倪^程中造成泄 露。因此,從使用模式上來說,彈性計算云平臺為用戶或者開發(fā)人員提供了一個虛擬的集群環(huán)境,使得用戶的應(yīng)用具有充分的靈活性,同時也減輕了云計算平臺擁有 者(亞馬遜公司)的管理負(fù)擔(dān)。
而彈性計算云中的實例是一些真正在運行中的虛擬機服務(wù)器,每一個實例代表一 個運行中的虛擬機。對于提供給某一個用戶的虛擬機,該用戶具有完整的訪問權(quán)限,包括針對此虛擬機的管理員用戶權(quán)限。虛擬服務(wù)器的收費也是根據(jù)虛擬機的能力 進行計算的,因此,實際上用戶租用的是虛擬的計算能力,簡化了計費方式。在彈性計算云中,提供了三種不同能力的虛擬機實例,具有不同的收費價格。例如,其 中默認(rèn)的也是最小的運行實例是1.7GB的內(nèi)存,1個EC2的計算單元(1虛擬的計算核以相關(guān)的計算單元),160GB的虛擬機內(nèi)部存儲容量,是一個32 位的計算平臺,收費標(biāo)準(zhǔn)為每個小時10美分。在當(dāng)前的藍(lán)計算平臺中,還有兩種性能更加強勁的虛擬機實例可供使用,當(dāng)然價格也更加昂貴一點。
由于用戶在部署網(wǎng)絡(luò)程序的時候,一般會使用超過一個運行實例,需要很多個實例共同工作。彈性計算云的內(nèi)部也架設(shè)了實例之間的內(nèi)部網(wǎng)絡(luò),使得用戶的應(yīng)用程序在 不同的實例之間可以通信。在彈性計算云中的每一個計算實例都具有一個內(nèi)部的IP地址,用戶程序可以使用內(nèi)部IP地址進行數(shù)據(jù)通信,以獲得數(shù)據(jù)通信的最好性 能。每一個實例也具有外部的地址,用戶可以將分配給自己的彈性IP地址分配給自己的運行實例,使得建立在彈性計算云上的服務(wù)系統(tǒng)能夠為外部提供服務(wù)。當(dāng) 然,亞馬遜公司也對網(wǎng)絡(luò)上的服務(wù)流量計費,計費規(guī)則也按照內(nèi)部傳輸以及外部傳輸進行分開。
總而言之,亞馬遜通過提供彈性計算云,減少了小規(guī)模軟件開發(fā)人員對于集群系統(tǒng)的維護,并且收費方式相對簡單明了,用戶使用多少資源,只需要為這一部分資源付費即可。這種 付費方式與傳統(tǒng)的主機托管模式不同。傳統(tǒng)的主機托管模式讓用戶將主機放入到托管公司,用戶一般需要根據(jù)最大或者計劃的容量進行付費,而不是根據(jù)使用情況進 行付費,而且,可能還需要保證服務(wù)的可靠性、可用性等,付出的費用更多,而很多時候,服務(wù)并沒有進行滿額資源使用。而根據(jù)亞馬遜的模式,用戶只需要為實際 使用情況付費即可。
在用戶使用模式上,亞馬遜的彈性計算云要求用戶要創(chuàng)建基于亞馬遜規(guī)格的服務(wù)器映像(名 為亞馬遜機器映像即亞馬遜 Machine Image, AMI)。彈性計算云的目標(biāo)是服務(wù)器映像能夠擁有用戶想要的任何一種操作系統(tǒng)、應(yīng)用程序、配置、登錄和安全機制,但是當(dāng)前情況下,它只支持Linux內(nèi) 核。通過創(chuàng)建自己的AMI,或者使用亞馬遜預(yù)先為用戶提供的AMI,用戶在完成這一步驟后將AMI上傳到彈性計算云平臺,然后調(diào)用亞馬遜的應(yīng)用編程接口 (API),對AMI進行使用與管理。AMI實際上就是虛擬機的映像,用戶可以使用它們來完成任何工作,例如運行數(shù)據(jù)庫服務(wù)器,構(gòu)建快速網(wǎng)絡(luò)下載的平臺, 提供外部搜索服務(wù)甚至可以出租自己具有特色的AMI而獲得收益。用戶所擁有的多個AMI可以通過通信而彼此合作,就像當(dāng)前的集群計算服務(wù)平臺一樣。
在彈性計算云的將來發(fā)展過程中,亞馬遜也規(guī)劃了如何在云計算平臺之上幫助用戶開發(fā)Web 2.0的應(yīng)用程序。亞馬遜認(rèn)為除了它所依賴的網(wǎng)絡(luò)零售業(yè)務(wù)之外,云計算也是亞馬遜公司的核心價值所在。可以預(yù)見,在將來的發(fā)展過程中,亞馬遜必然會在彈性 計算云的平臺上添加更多的網(wǎng)絡(luò)服務(wù)組件模塊,為用戶構(gòu)建云計算應(yīng)用提供方便。
實例3:IBM藍(lán)云計算平臺
IBM在2007年11月15日推出了藍(lán)云計算平臺,為客戶帶來即買即用的云計算平臺。它包括一系列的云計算產(chǎn)品,使得計算不僅僅局限在本地機器或遠(yuǎn)程服務(wù)器農(nóng)場(即服務(wù)器集群),通過架構(gòu)一個分布式、可全球訪問的資源結(jié)構(gòu),使得數(shù)據(jù)中心在類似于互聯(lián)網(wǎng)的環(huán)境下運行計算。
通過IBM的技術(shù)白皮書,我們可以一窺藍(lán)云計算平臺的內(nèi)部構(gòu)造。“藍(lán)云”建立在IBM大規(guī)模計算領(lǐng)域的專業(yè)技術(shù)基礎(chǔ)上,基于由IBM軟件、系統(tǒng)技術(shù)和服務(wù)支 持的開放標(biāo)準(zhǔn)和開源軟件。簡單地說,“藍(lán)云”基于IBM Almaden研究中心(Almaden Research Center)的云基礎(chǔ)架構(gòu),包括Xen和PowerVM虛擬化、Linux操作系統(tǒng)映像以及Hadoop文件系統(tǒng)與并行構(gòu)建。“藍(lán)云”由IBM Tivoli軟件支持,通過管理服務(wù)器來確保基于需求的最佳性能。這包括通過能夠跨越多服務(wù)器實時分配資源的軟件,為客戶帶來一種無縫體驗,加速性能并確 保在最苛刻環(huán)境下的穩(wěn)定性。IBM新近發(fā)布的“藍(lán)云(Blue Cloud)”計劃,能夠幫助用戶進行云計算環(huán)境的搭建。它通過將Tivoli、DB2、WebSphere與硬件產(chǎn)品(目前是x86刀片服務(wù)器)集成,能夠為企業(yè)架設(shè)一個分布式、可全球訪問的資源結(jié)構(gòu)。根據(jù)IBM的計劃,首款支持Power和x86處理器刀片服務(wù)器系統(tǒng)的“藍(lán)云”產(chǎn)品將于2008年正式 推出,并且計劃隨后推出基于System z“大型主機”的云環(huán)境,以及基于高密度機架集群的云環(huán)境。
在IBM的云計算白皮書上,我們可以看到如下的藍(lán)云計算平臺配置情況。
下圖4演示了藍(lán)云計算的高層架構(gòu)。可以看到,藍(lán)云計算平臺由一個數(shù)據(jù)中心: IBM Tivoli部署管理軟件(Tivoli Provisioning Manager)、IBM Tivoli監(jiān)控軟件(IBM Tivoli Monitoring)、IBM WebSphere應(yīng)用服務(wù)器、IBM DB2數(shù)據(jù)庫以及一些虛擬化的組件共同組成。圖中的架構(gòu)主要描述了云計算的后臺架構(gòu),并沒有涉及到前臺的用戶界面。
藍(lán)云的硬件平臺并沒有什么特殊的地方,但是藍(lán)云使用的軟件平臺相較于以前的分布式平臺具有不同的地方,主要體現(xiàn)在對與虛擬機的使用以及對于大規(guī)模數(shù)據(jù)處理軟 件Apache Hadoop的部署。Hadoop是網(wǎng)絡(luò)開發(fā)人員根據(jù)Google公司公開的資料開發(fā)出來的類似于Google File System的Hadoop File System以及相應(yīng)的Map/Reduce編程規(guī)范。現(xiàn)在也正在進一步開發(fā)類似于Google的Chubby系統(tǒng)以及相應(yīng)的分布式數(shù)據(jù)庫管理系統(tǒng) BigTable。由于Hadoop是開源的,因此可以被用戶單位直接修改,以適合應(yīng)用的特殊需求。IBM的藍(lán)云產(chǎn)品則直接將Hadoop軟件集成到自己 本身的云計算平臺之上。
“藍(lán)云”中的虛擬化
從藍(lán)云的結(jié)構(gòu)上我們還可以看出,在每一個節(jié)點上運行的軟件棧與傳統(tǒng)的軟件棧一個很大的不同在于藍(lán)云內(nèi)部使用了虛擬化技術(shù)。虛擬化的方式在云計算中可以在兩個 級別上實現(xiàn)。一個級別是在硬件級別上實現(xiàn)虛擬化。硬件級別的虛擬化可以使用IBM p系列的服務(wù)器,獲得硬件的邏輯分區(qū)LPAR。邏輯分區(qū)的CPU資源能夠通過IBM Enterprise Workload Manager來管理。通過這樣的方式加上在實際使用過程中的資源分配策略,能夠使得相應(yīng)的資源合理地分配到各個邏輯分區(qū)。P系列系統(tǒng)的邏輯分區(qū)最小粒度 是1/10顆中央處理器(CPU)。
虛擬化的另外一個級別可以通過軟件來獲得,在藍(lán)云計算平臺中使用了Xen虛擬化軟件。Xen也是一個開源的虛擬化軟件,能夠在現(xiàn)有的Linux基礎(chǔ)之上運行另外一個操作系統(tǒng),并通過虛擬機的方式靈活地進行軟件部署和操作。
通過虛擬機的方式進行云計算資源的管理具有特殊的好處。由于虛擬機是一類特殊的軟件,能夠完全模擬硬件的執(zhí)行,因此能夠在上面運行操作系統(tǒng),進而能夠保留一 整套運行環(huán)境語義。這樣,可以將整個執(zhí)行環(huán)境通過打包的方式傳輸?shù)狡渌锢砉?jié)點上,這樣就能夠使得執(zhí)行環(huán)境與物理環(huán)境隔離,方便整個應(yīng)用程序模塊的部署。 總體上來說,通過將虛擬化的技術(shù)應(yīng)用到云計算的平臺,可以獲得一些良好的特性。
1. 云計算的管理平臺能夠動態(tài)地將計算平臺定位到所需要的物理平臺上,而無需停止運行在虛擬機平臺上的應(yīng)用程序,這比采用虛擬化技術(shù)之前的進程遷移方法更加靈活。
2. 能夠更加有效率地使用主機資源,將多個負(fù)載不是很重的虛擬機計算節(jié)點合并到同一個物理節(jié)點上,從而能夠關(guān)閉空閑的物理節(jié)點,達(dá)到節(jié)約電能的目的。
3. 通過虛擬機在不同物理節(jié)點上的動態(tài)遷移,能夠獲得與應(yīng)用無關(guān)的負(fù)載平衡性能。由于虛擬機包含了整個虛擬化的操作系統(tǒng)以及應(yīng)用程序環(huán)境,因此在進行遷移的時候帶著整個運行環(huán)境,達(dá)到了與應(yīng)用無關(guān)的目的。
4. 在部署上也更加靈活,即可以將虛擬機直接部署到物理計算平臺當(dāng)中。
總而言之,通過虛擬化的方式,云計算平臺能夠達(dá)到極其靈活的特性,而如果不使用虛擬化的方式則會有很多的局限。
“藍(lán)云”中的存儲結(jié)構(gòu)
藍(lán)云計算平臺中的存儲體系結(jié) 構(gòu)對于云計算來說也是非常重要的,無論是操作系統(tǒng),服務(wù)程序還是用戶應(yīng)用程序的數(shù)據(jù)都保存在存儲體系中。云計算并不排斥任何一種有用的存儲體系結(jié)構(gòu),而是 需要跟應(yīng)用程序的需求結(jié)合起來獲得最好的性能提升。總體上來說,云計算的存儲體系結(jié)構(gòu)包含類似于Google File System的集群文件系統(tǒng)以及基于塊設(shè)備方式的存儲區(qū)域網(wǎng)絡(luò)SAN兩種方式。
在設(shè)計云計算平臺的存儲體 系結(jié)構(gòu)的時候,不僅僅是需要考慮存儲的容量。實際上隨著硬盤容量的不斷擴充以及硬盤價格的不斷下降,使用當(dāng)前的磁盤技術(shù),可以很容易通過使用多個磁盤的方 式獲得很大的磁盤容量。相較于磁盤的容量,在云計算平臺的存儲中,磁盤數(shù)據(jù)的讀寫速度是一個更重要的問題。單個磁盤的速度很有可能限制應(yīng)用程序?qū)τ跀?shù)據(jù)的 訪問,因此在實際使用的過程中,需要將數(shù)據(jù)分布到多個磁盤之上,并且通過對于多個磁盤的同時讀寫以達(dá)到提高速度的目的。在云計算平臺中,數(shù)據(jù)如何放置是一 個非常重要的問題,在實際使用的過程中,需要將數(shù)據(jù)分配到多個節(jié)點的多個磁盤當(dāng)中。而能夠達(dá)到這一目的的存儲技術(shù)趨勢當(dāng)前有兩種方式,一種是使用類似于 Google File System的集群文件系統(tǒng),另外一種是基于塊設(shè)備的存儲區(qū)域網(wǎng)絡(luò)SAN系統(tǒng)。
Google 文件系統(tǒng)我們在前面已經(jīng)做過一定的描述。在IBM的藍(lán)云計算平臺中使用的是它的開源實現(xiàn)Hadoop HDFS (Hadoop Distributed File System)。這種使用方式將磁盤附著于節(jié)點的內(nèi)部,并且為外部提供一個共享的分布式文件系統(tǒng)空間,并且在文件系統(tǒng)級別做冗余以提高可靠性。在合適的分布式數(shù)據(jù)處理模式下,這種方式能夠提高總體的數(shù)據(jù)處理效率。Google文件系統(tǒng)的這種架構(gòu)與SAN系統(tǒng)有很大的不同。
SAN系統(tǒng)也是云計算平臺的另外一種存儲體系結(jié)構(gòu)選擇,在藍(lán)云平臺上也有一定的體現(xiàn),IBM也提供SAN的平臺能夠接入到藍(lán)云計算平臺中。圖5就是一個SAN系統(tǒng)的結(jié)構(gòu)示意圖。
從圖5中可以看到,SAN系統(tǒng)是在存儲端構(gòu)建存儲的網(wǎng)絡(luò),將多個存儲設(shè)備構(gòu)成一個存儲區(qū)域網(wǎng)絡(luò)。前端的主機可以通過網(wǎng)絡(luò)的方式訪問后端的存儲設(shè)備。而且,由 于提供了塊設(shè)備的訪問方式,與前端操作系統(tǒng)無關(guān)。在SAN連接方式上,可以有多種選擇。一種選擇是使用光纖網(wǎng)絡(luò),能夠操作快速的光纖磁盤,適合于對性能與 可靠性要求比較高的場所。另外一種選擇是使用以太網(wǎng),采取iSCSI協(xié)議,能夠運行在普通的局域網(wǎng)環(huán)境下,從而降低了成本。由于存儲區(qū)域網(wǎng)絡(luò)中的磁盤設(shè)備 并沒有與某一臺主機綁定在一起,而是采用了非常靈活的結(jié)構(gòu),因此對于主機來說可以訪問多個磁盤設(shè)備,從而能夠獲得性能的提升。在存儲區(qū)域網(wǎng)絡(luò)中,使用虛擬 化的引擎來進行邏輯設(shè)備到物理設(shè)備的映射,管理前端主機到后端數(shù)據(jù)的讀寫。因此虛擬化引擎是存儲區(qū)域網(wǎng)絡(luò)中非常重要的管理模塊。
SAN 系統(tǒng)與分布式文件系統(tǒng)例如Google File System并不是相互對立的系統(tǒng),而是在構(gòu)建集群系統(tǒng)的時候可供選擇的兩種方案。其中,在選擇SAN系統(tǒng)的時候,為了應(yīng)用程序的讀寫,還需要為應(yīng)用程序 提供上層的語義接口,此時就需要在SAN之上構(gòu)建文件系統(tǒng)。而Google File System正好是一個分布式的文件系統(tǒng),因此能夠建立在SAN系統(tǒng)之上。總體來說,SAN與分布式文件系統(tǒng)都可以提供類似的功能,例如對于出錯的處理 等。至于如何使用還是需要由建立在云計算平臺之上的應(yīng)用程序來決定。
與Google不同的是,IBM并沒 有基于云計算提供外部可訪問的網(wǎng)絡(luò)應(yīng)用程序。這主要是由于IBM并不是一個網(wǎng)絡(luò)公司,而是一個IT的服務(wù)公司。當(dāng)然,IBM內(nèi)部以及IBM未來為客戶提供 的軟件服務(wù)會基于云計算的架構(gòu)。(注: 本文受國家973計劃資助,資助號: 2007CB310900以及國家自然科學(xué)基金資助,資助號90718040)