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

MapReduce分布式編程環(huán)境
為了讓內部非分布式系統方向背景的員工能夠有機會(huì )將應用程序建立 在大規模的集群基礎之上,Google還設計并實(shí)現了一套大規模數據處理的編程規范Map/Reduce系統。這樣,非分布式專(zhuān)業(yè)的程序編寫(xiě)人員也能夠為 大規模的集群編寫(xiě)應用程序而不用去顧慮集群的可靠性、可擴展性等問(wèn)題。應用程序編寫(xiě)人員只需要將精力放在應用程序本身,而關(guān)于集群的處理問(wèn)題則交由平臺來(lái) 處理。
Map/Reduce通過(guò)“Map(映射)”和“Reduce(化簡(jiǎn))”這樣兩個(gè)簡(jiǎn)單的概念來(lái)參加運算,用戶(hù)只需要提供自己的Map函數以及Reduce函數就可以在集群上進(jìn)行大規模的分布式數據處理。
據稱(chēng),Google的文本索引方法,即搜索引擎的核心部分,已經(jīng)通過(guò)Map Reduce的方法進(jìn)行了改寫(xiě),獲得了更加清晰的程序架構。在Google內部,每天有上千個(gè)Map Reduce的應用程序在運行。
分布式大規模數據庫管理系統BigTable
構建于上述兩項基礎之上的第三個(gè)云計算平臺就是Google關(guān)于將數據庫系統擴展到分布式平臺上的BigTable系統。很多應用程序對于數據的組織還是非 常有規則的。一般來(lái)說(shuō),數據庫對于處理格式化的數據還是非常方便的,但是由于關(guān)系數據庫很強的一致性要求,很難將其擴展到很大的規模。為了處理 Google內部大量的格式化以及半格式化數據,Google構建了弱一致性要求的大規模數據庫系統BigTable。據稱(chēng),現在有很多Google的應 用程序建立在BigTable之上,例如Search History、Maps、Orkut和RSS閱讀器等。
下圖2給出了在BigTable模型中的數據模型。數據模型包括行列以及相應的時(shí)間戳,所有的數據都存放在表格中的單元里。BigTable的內容按照行來(lái)劃分,將多個(gè)行組成一個(gè)小表,保存到某一個(gè)服務(wù)器節點(diǎn)中。這一個(gè)小表就被稱(chēng)為T(mén)ablet。
以上是Google內部云計算基礎平臺的三個(gè)主要部分,除了這三個(gè)部分之外,Google還建立了分布式程序的調度器,分布式的鎖服務(wù)等一系列相關(guān)的云計算服務(wù)平臺。
Google的云應用
除了上述的云計算基礎設施之外,Google還在其云計算基礎設施之上建立了一系列新型網(wǎng)絡(luò )應用程序。由于借鑒了異步網(wǎng)絡(luò )數據傳輸的Web 2.0技術(shù),這些應用程序給予用戶(hù)全新的界面感受以及更加強大的多用戶(hù)交互能力。其中典型的Google云計算應用程序就是Google推出的與 Microsoft Office軟件進(jìn)行競爭的Docs網(wǎng)絡(luò )服務(wù)程序。Google Docs是一個(gè)基于Web的工具,它有跟Microsoft Office相近的編輯界面,有一套簡(jiǎn)單易用的文檔權限管理,而且它還記錄下所有用戶(hù)對文檔所做的修改。Google Docs的這些功能令它非常適用于網(wǎng)上共享與協(xié)作編輯文檔。Google Docs甚至可以用于監控責任清晰、目標明確的項目進(jìn)度。當前,Google Docs已經(jīng)推出了文檔編輯、電子表格、幻燈片演示、日程管理等多個(gè)功能的編輯模塊,能夠替代Microsoft Office相應的一部分功能。值得注意的是,通過(guò)這種云計算方式形成的應用程序非常適合于多個(gè)用戶(hù)進(jìn)行共享以及協(xié)同編輯,為一個(gè)小組的人員進(jìn)行共同創(chuàng )作 帶來(lái)很大的方便性。
Google Docs是云計算的一種重要應用,即可以通過(guò)瀏覽器的方式訪(fǎng)問(wèn)遠端大規模的存儲與計算服務(wù)。云計算能夠為大規模的新一代網(wǎng)絡(luò )應用打下良好的基礎。
雖然Google可以說(shuō)是云計算的最大實(shí)踐者,但是,Google的云計算平臺是私有的環(huán)境,特別是Google的云計算基礎設施還沒(méi)有開(kāi)放出來(lái)。除了開(kāi)放 有限的應用程序接口,例如GWT(Google Web Toolkit)以及Google Map API等,Google并沒(méi)有將云計算的內部基礎設施共享給外部的用戶(hù)使用,上述的所有基礎設施都是私有的。
幸運的是,Google公開(kāi)了其內部集群計算環(huán)境的一部分技術(shù),使得全球的技術(shù)開(kāi)發(fā)人員能夠根據這一部分文檔構建開(kāi)源的大規模數據處理云計算基礎設施,其中 最有名的項目即Apache旗下的Hadoop項目。而下面的兩個(gè)云計算的實(shí)現則為外部的開(kāi)發(fā)人員以及中小公司提供了云計算的平臺環(huán)境,使得開(kāi)發(fā)者能夠在 云計算的基礎設施之上構建自己的新型網(wǎng)絡(luò )應用。其中IBM的藍云計算平臺是可供銷(xiāo)售的計算平臺,用戶(hù)可以基于這些軟硬件產(chǎn)品自己構建云計算平臺。亞馬遜的 彈性計算云則是托管式的云計算平臺,用戶(hù)可以通過(guò)遠端的操作界面直接使用。

實(shí)例2: 亞馬遜的彈性計算云
亞馬遜是互聯(lián)網(wǎng)上最大的在線(xiàn)零售商,但是同時(shí)也為獨立開(kāi)發(fā)人員以及開(kāi)發(fā)商提供云計算服務(wù)平臺。亞馬遜將他們的云計算平臺稱(chēng)為彈性計算云(Elastic Compute Cloud,EC2),它是最早提供遠程云計算平臺服務(wù)的公司。
開(kāi)放的服務(wù)
與 Google提供的云計算服務(wù)不同,Google僅為自己在互聯(lián)網(wǎng)上的應用提供云計算平臺,獨立開(kāi)發(fā)商或者開(kāi)發(fā)人員無(wú)法在這個(gè)平臺上工作,因此只能轉而通 過(guò)開(kāi)源的Hadoop軟件支持來(lái)開(kāi)發(fā)云計算應用。亞馬遜的彈性計算云服務(wù)也和IBM的云計算服務(wù)平臺不一樣,亞馬遜不銷(xiāo)售物理的云計算服務(wù)平臺,沒(méi)有類(lèi)似 于“藍云”一樣的計算平臺。亞馬遜將自己的彈性計算云建立在公司內部的大規模集群計算的平臺之上,而用戶(hù)可以通過(guò)彈性計算云的網(wǎng)絡(luò )界面去操作在云計算平臺 上運行的各個(gè)實(shí)例(Instance),而付費方式則由用戶(hù)的使用狀況決定,即用戶(hù)僅需要為自己所使用的計算平臺實(shí)例付費,運行結束后計費也隨之結束。
彈性計算云從沿革上來(lái)看,并不是亞馬遜公司推出的第一項這種服務(wù),它由名為亞馬遜網(wǎng)絡(luò )服務(wù)的現有平臺發(fā)展而來(lái)。早在2006年3月,亞馬遜就發(fā)布了簡(jiǎn)單存儲 服務(wù)(Simple Storage Service,S3),這種存儲服務(wù)按照每個(gè)月類(lèi)似租金的形式進(jìn)行服務(wù)付費,同時(shí)用戶(hù)還需要為相應的網(wǎng)絡(luò )流量進(jìn)行付費。亞馬遜網(wǎng)絡(luò )服務(wù)平臺使用REST (Representational State Transfer)和簡(jiǎn)單對象訪(fǎng)問(wèn)協(xié)議(SOAP)等標準接口,用戶(hù)可以通過(guò)這些接口訪(fǎng)問(wèn)到相應的存儲服務(wù)。
2007 年7月,亞馬遜公司推出了簡(jiǎn)單隊列服務(wù)(Simple Queue Service,SQS),這項服務(wù)使托管主機可以存儲計算機之間發(fā)送的消息。通過(guò)這一項服務(wù),應用程序編寫(xiě)人員可以在分布式程序之間進(jìn)行數據傳遞,而無(wú) 須考慮消息丟失的問(wèn)題。通過(guò)這種服務(wù)方式,即使消息的接收方還沒(méi)有模塊啟動(dòng)也沒(méi)有關(guān)系。服務(wù)內部會(huì )緩存相應的消息,而一旦有消息接收組件被啟動(dòng)運行,則隊 列服務(wù)將消息提交給相應的運行模塊進(jìn)行處理。同樣的,用戶(hù)必須為這種消息傳遞服務(wù)進(jìn)行付費使用,計費的規則與存儲計費規則類(lèi)似,依據消息的個(gè)數以及消息傳 遞的大小進(jìn)行收費。
在亞馬遜提供上述服務(wù)的時(shí)候,并沒(méi)有從頭開(kāi)始開(kāi)發(fā)相應的網(wǎng)絡(luò )服務(wù)組件,而是對公司已有的平臺進(jìn)行優(yōu)化和改造,一方面滿(mǎn)足了本身網(wǎng)絡(luò )零售購物應用程序的需求,另一方面也供外部開(kāi)發(fā)人員使用。
在開(kāi)放了上述的服務(wù)接口之后,亞馬遜公司進(jìn)一步在此基礎上開(kāi)發(fā)了EC2系統,并且開(kāi)放給外部開(kāi)發(fā)人員使用。
靈活的工作模式
亞馬遜的云計算模式沿襲了簡(jiǎn)單易用的傳統,并且建立在亞馬遜公司現有的云計算基礎平 臺之上。彈性計算云用戶(hù)使用客戶(hù)端通過(guò)SOAP over HTTPS協(xié)議來(lái)實(shí)現與亞馬遜彈性計算云內部的實(shí)例進(jìn)行交互。使用HTTPS協(xié)議的原因是為了保證遠端連接的安全性,避免用戶(hù)數據在傳輸的過(guò)程中造成泄 露。因此,從使用模式上來(lái)說(shuō),彈性計算云平臺為用戶(hù)或者開(kāi)發(fā)人員提供了一個(gè)虛擬的集群環(huán)境,使得用戶(hù)的應用具有充分的靈活性,同時(shí)也減輕了云計算平臺擁有 者(亞馬遜公司)的管理負擔。
而彈性計算云中的實(shí)例是一些真正在運行中的虛擬機服務(wù)器,每一個(gè)實(shí)例代表一 個(gè)運行中的虛擬機。對于提供給某一個(gè)用戶(hù)的虛擬機,該用戶(hù)具有完整的訪(fǎng)問(wèn)權限,包括針對此虛擬機的管理員用戶(hù)權限。虛擬服務(wù)器的收費也是根據虛擬機的能力 進(jìn)行計算的,因此,實(shí)際上用戶(hù)租用的是虛擬的計算能力,簡(jiǎn)化了計費方式。在彈性計算云中,提供了三種不同能力的虛擬機實(shí)例,具有不同的收費價(jià)格。例如,其 中默認的也是最小的運行實(shí)例是1.7GB的內存,1個(gè)EC2的計算單元(1虛擬的計算核以相關(guān)的計算單元),160GB的虛擬機內部存儲容量,是一個(gè)32 位的計算平臺,收費標準為每個(gè)小時(shí)10美分。在當前的藍計算平臺中,還有兩種性能更加強勁的虛擬機實(shí)例可供使用,當然價(jià)格也更加昂貴一點(diǎn)。
由于用戶(hù)在部署網(wǎng)絡(luò )程序的時(shí)候,一般會(huì )使用超過(guò)一個(gè)運行實(shí)例,需要很多個(gè)實(shí)例共同工作。彈性計算云的內部也架設了實(shí)例之間的內部網(wǎng)絡(luò ),使得用戶(hù)的應用程序在 不同的實(shí)例之間可以通信。在彈性計算云中的每一個(gè)計算實(shí)例都具有一個(gè)內部的IP地址,用戶(hù)程序可以使用內部IP地址進(jìn)行數據通信,以獲得數據通信的最好性 能。每一個(gè)實(shí)例也具有外部的地址,用戶(hù)可以將分配給自己的彈性IP地址分配給自己的運行實(shí)例,使得建立在彈性計算云上的服務(wù)系統能夠為外部提供服務(wù)。當 然,亞馬遜公司也對網(wǎng)絡(luò )上的服務(wù)流量計費,計費規則也按照內部傳輸以及外部傳輸進(jìn)行分開(kāi)。
總而言之,亞馬遜通過(guò)提供彈性計算云,減少了小規模軟件開(kāi)發(fā)人員對于集群系統的維護,并且收費方式相對簡(jiǎn)單明了,用戶(hù)使用多少資源,只需要為這一部分資源付費即可。這種 付費方式與傳統的主機托管模式不同。傳統的主機托管模式讓用戶(hù)將主機放入到托管公司,用戶(hù)一般需要根據最大或者計劃的容量進(jìn)行付費,而不是根據使用情況進(jìn) 行付費,而且,可能還需要保證服務(wù)的可靠性、可用性等,付出的費用更多,而很多時(shí)候,服務(wù)并沒(méi)有進(jìn)行滿(mǎn)額資源使用。而根據亞馬遜的模式,用戶(hù)只需要為實(shí)際 使用情況付費即可。
在用戶(hù)使用模式上,亞馬遜的彈性計算云要求用戶(hù)要創(chuàng )建基于亞馬遜規格的服務(wù)器映像(名 為亞馬遜機器映像即亞馬遜 Machine Image, AMI)。彈性計算云的目標是服務(wù)器映像能夠擁有用戶(hù)想要的任何一種操作系統、應用程序、配置、登錄和安全機制,但是當前情況下,它只支持Linux內 核。通過(guò)創(chuàng )建自己的AMI,或者使用亞馬遜預先為用戶(hù)提供的AMI,用戶(hù)在完成這一步驟后將AMI上傳到彈性計算云平臺,然后調用亞馬遜的應用編程接口 (API),對AMI進(jìn)行使用與管理。AMI實(shí)際上就是虛擬機的映像,用戶(hù)可以使用它們來(lái)完成任何工作,例如運行數據庫服務(wù)器,構建快速網(wǎng)絡(luò )下載的平臺, 提供外部搜索服務(wù)甚至可以出租自己具有特色的AMI而獲得收益。用戶(hù)所擁有的多個(gè)AMI可以通過(guò)通信而彼此合作,就像當前的集群計算服務(wù)平臺一樣。
在彈性計算云的將來(lái)發(fā)展過(guò)程中,亞馬遜也規劃了如何在云計算平臺之上幫助用戶(hù)開(kāi)發(fā)Web 2.0的應用程序。亞馬遜認為除了它所依賴(lài)的網(wǎng)絡(luò )零售業(yè)務(wù)之外,云計算也是亞馬遜公司的核心價(jià)值所在??梢灶A見(jiàn),在將來(lái)的發(fā)展過(guò)程中,亞馬遜必然會(huì )在彈性 計算云的平臺上添加更多的網(wǎng)絡(luò )服務(wù)組件模塊,為用戶(hù)構建云計算應用提供方便。

實(shí)例3:IBM藍云計算平臺
IBM在2007年11月15日推出了藍云計算平臺,為客戶(hù)帶來(lái)即買(mǎi)即用的云計算平臺。它包括一系列的云計算產(chǎn)品,使得計算不僅僅局限在本地機器或遠程服務(wù)器農場(chǎng)(即服務(wù)器集群),通過(guò)架構一個(gè)分布式、可全球訪(fǎng)問(wèn)的資源結構,使得數據中心在類(lèi)似于互聯(lián)網(wǎng)的環(huán)境下運行計算。
通過(guò)IBM的技術(shù)白皮書(shū),我們可以一窺藍云計算平臺的內部構造?!八{云”建立在IBM大規模計算領(lǐng)域的專(zhuān)業(yè)技術(shù)基礎上,基于由IBM軟件、系統技術(shù)和服務(wù)支 持的開(kāi)放標準和開(kāi)源軟件。簡(jiǎn)單地說(shuō),“藍云”基于IBM Almaden研究中心(Almaden Research Center)的云基礎架構,包括Xen和PowerVM虛擬化、Linux操作系統映像以及Hadoop文件系統與并行構建?!八{云”由IBM Tivoli軟件支持,通過(guò)管理服務(wù)器來(lái)確?;谛枨蟮淖罴研阅?。這包括通過(guò)能夠跨越多服務(wù)器實(shí)時(shí)分配資源的軟件,為客戶(hù)帶來(lái)一種無(wú)縫體驗,加速性能并確 保在最苛刻環(huán)境下的穩定性。IBM新近發(fā)布的“藍云(Blue Cloud)”計劃,能夠幫助用戶(hù)進(jìn)行云計算環(huán)境的搭建。它通過(guò)將Tivoli、DB2、WebSphere與硬件產(chǎn)品(目前是x86刀片服務(wù)器)集成,能夠為企業(yè)架設一個(gè)分布式、可全球訪(fǎng)問(wèn)的資源結構。根據IBM的計劃,首款支持Power和x86處理器刀片服務(wù)器系統的“藍云”產(chǎn)品將于2008年正式 推出,并且計劃隨后推出基于System z“大型主機”的云環(huán)境,以及基于高密度機架集群的云環(huán)境。
在IBM的云計算白皮書(shū)上,我們可以看到如下的藍云計算平臺配置情況。
下圖4演示了藍云計算的高層架構??梢钥吹?,藍云計算平臺由一個(gè)數據中心: IBM Tivoli部署管理軟件(Tivoli Provisioning Manager)、IBM Tivoli監控軟件(IBM Tivoli Monitoring)、IBM WebSphere應用服務(wù)器、IBM DB2數據庫以及一些虛擬化的組件共同組成。圖中的架構主要描述了云計算的后臺架構,并沒(méi)有涉及到前臺的用戶(hù)界面。
藍云的硬件平臺并沒(méi)有什么特殊的地方,但是藍云使用的軟件平臺相較于以前的分布式平臺具有不同的地方,主要體現在對與虛擬機的使用以及對于大規模數據處理軟 件Apache Hadoop的部署。Hadoop是網(wǎng)絡(luò )開(kāi)發(fā)人員根據Google公司公開(kāi)的資料開(kāi)發(fā)出來(lái)的類(lèi)似于Google File System的Hadoop File System以及相應的Map/Reduce編程規范?,F在也正在進(jìn)一步開(kāi)發(fā)類(lèi)似于Google的Chubby系統以及相應的分布式數據庫管理系統 BigTable。由于Hadoop是開(kāi)源的,因此可以被用戶(hù)單位直接修改,以適合應用的特殊需求。IBM的藍云產(chǎn)品則直接將Hadoop軟件集成到自己 本身的云計算平臺之上。
“藍云”中的虛擬化
從藍云的結構上我們還可以看出,在每一個(gè)節點(diǎn)上運行的軟件棧與傳統的軟件棧一個(gè)很大的不同在于藍云內部使用了虛擬化技術(shù)。虛擬化的方式在云計算中可以在兩個(gè) 級別上實(shí)現。一個(gè)級別是在硬件級別上實(shí)現虛擬化。硬件級別的虛擬化可以使用IBM p系列的服務(wù)器,獲得硬件的邏輯分區LPAR。邏輯分區的CPU資源能夠通過(guò)IBM Enterprise Workload Manager來(lái)管理。通過(guò)這樣的方式加上在實(shí)際使用過(guò)程中的資源分配策略,能夠使得相應的資源合理地分配到各個(gè)邏輯分區。P系列系統的邏輯分區最小粒度 是1/10顆中央處理器(CPU)。
虛擬化的另外一個(gè)級別可以通過(guò)軟件來(lái)獲得,在藍云計算平臺中使用了Xen虛擬化軟件。Xen也是一個(gè)開(kāi)源的虛擬化軟件,能夠在現有的Linux基礎之上運行另外一個(gè)操作系統,并通過(guò)虛擬機的方式靈活地進(jìn)行軟件部署和操作。
通過(guò)虛擬機的方式進(jìn)行云計算資源的管理具有特殊的好處。由于虛擬機是一類(lèi)特殊的軟件,能夠完全模擬硬件的執行,因此能夠在上面運行操作系統,進(jìn)而能夠保留一 整套運行環(huán)境語(yǔ)義。這樣,可以將整個(gè)執行環(huán)境通過(guò)打包的方式傳輸到其他物理節點(diǎn)上,這樣就能夠使得執行環(huán)境與物理環(huán)境隔離,方便整個(gè)應用程序模塊的部署。 總體上來(lái)說(shuō),通過(guò)將虛擬化的技術(shù)應用到云計算的平臺,可以獲得一些良好的特性。
1. 云計算的管理平臺能夠動(dòng)態(tài)地將計算平臺定位到所需要的物理平臺上,而無(wú)需停止運行在虛擬機平臺上的應用程序,這比采用虛擬化技術(shù)之前的進(jìn)程遷移方法更加靈活。
2. 能夠更加有效率地使用主機資源,將多個(gè)負載不是很重的虛擬機計算節點(diǎn)合并到同一個(gè)物理節點(diǎn)上,從而能夠關(guān)閉空閑的物理節點(diǎn),達到節約電能的目的。
3. 通過(guò)虛擬機在不同物理節點(diǎn)上的動(dòng)態(tài)遷移,能夠獲得與應用無(wú)關(guān)的負載平衡性能。由于虛擬機包含了整個(gè)虛擬化的操作系統以及應用程序環(huán)境,因此在進(jìn)行遷移的時(shí)候帶著(zhù)整個(gè)運行環(huán)境,達到了與應用無(wú)關(guān)的目的。
4. 在部署上也更加靈活,即可以將虛擬機直接部署到物理計算平臺當中。
總而言之,通過(guò)虛擬化的方式,云計算平臺能夠達到極其靈活的特性,而如果不使用虛擬化的方式則會(huì )有很多的局限。

“藍云”中的存儲結構
藍云計算平臺中的存儲體系結 構對于云計算來(lái)說(shuō)也是非常重要的,無(wú)論是操作系統,服務(wù)程序還是用戶(hù)應用程序的數據都保存在存儲體系中。云計算并不排斥任何一種有用的存儲體系結構,而是 需要跟應用程序的需求結合起來(lái)獲得最好的性能提升??傮w上來(lái)說(shuō),云計算的存儲體系結構包含類(lèi)似于Google File System的集群文件系統以及基于塊設備方式的存儲區域網(wǎng)絡(luò )SAN兩種方式。
在設計云計算平臺的存儲體 系結構的時(shí)候,不僅僅是需要考慮存儲的容量。實(shí)際上隨著(zhù)硬盤(pán)容量的不斷擴充以及硬盤(pán)價(jià)格的不斷下降,使用當前的磁盤(pán)技術(shù),可以很容易通過(guò)使用多個(gè)磁盤(pán)的方 式獲得很大的磁盤(pán)容量。相較于磁盤(pán)的容量,在云計算平臺的存儲中,磁盤(pán)數據的讀寫(xiě)速度是一個(gè)更重要的問(wèn)題。單個(gè)磁盤(pán)的速度很有可能限制應用程序對于數據的 訪(fǎng)問(wèn),因此在實(shí)際使用的過(guò)程中,需要將數據分布到多個(gè)磁盤(pán)之上,并且通過(guò)對于多個(gè)磁盤(pán)的同時(shí)讀寫(xiě)以達到提高速度的目的。在云計算平臺中,數據如何放置是一 個(gè)非常重要的問(wèn)題,在實(shí)際使用的過(guò)程中,需要將數據分配到多個(gè)節點(diǎn)的多個(gè)磁盤(pán)當中。而能夠達到這一目的的存儲技術(shù)趨勢當前有兩種方式,一種是使用類(lèi)似于 Google File System的集群文件系統,另外一種是基于塊設備的存儲區域網(wǎng)絡(luò )SAN系統。
Google 文件系統我們在前面已經(jīng)做過(guò)一定的描述。在IBM的藍云計算平臺中使用的是它的開(kāi)源實(shí)現Hadoop HDFS (Hadoop Distributed File System)。這種使用方式將磁盤(pán)附著(zhù)于節點(diǎn)的內部,并且為外部提供一個(gè)共享的分布式文件系統空間,并且在文件系統級別做冗余以提高可靠性。在合適的分布式數據處理模式下,這種方式能夠提高總體的數據處理效率。Google文件系統的這種架構與SAN系統有很大的不同。
SAN系統也是云計算平臺的另外一種存儲體系結構選擇,在藍云平臺上也有一定的體現,IBM也提供SAN的平臺能夠接入到藍云計算平臺中。圖5就是一個(gè)SAN系統的結構示意圖。
從圖5中可以看到,SAN系統是在存儲端構建存儲的網(wǎng)絡(luò ),將多個(gè)存儲設備構成一個(gè)存儲區域網(wǎng)絡(luò )。前端的主機可以通過(guò)網(wǎng)絡(luò )的方式訪(fǎng)問(wèn)后端的存儲設備。而且,由 于提供了塊設備的訪(fǎng)問(wèn)方式,與前端操作系統無(wú)關(guān)。在SAN連接方式上,可以有多種選擇。一種選擇是使用光纖網(wǎng)絡(luò ),能夠操作快速的光纖磁盤(pán),適合于對性能與 可靠性要求比較高的場(chǎng)所。另外一種選擇是使用以太網(wǎng),采取iSCSI協(xié)議,能夠運行在普通的局域網(wǎng)環(huán)境下,從而降低了成本。由于存儲區域網(wǎng)絡(luò )中的磁盤(pán)設備 并沒(méi)有與某一臺主機綁定在一起,而是采用了非常靈活的結構,因此對于主機來(lái)說(shuō)可以訪(fǎng)問(wèn)多個(gè)磁盤(pán)設備,從而能夠獲得性能的提升。在存儲區域網(wǎng)絡(luò )中,使用虛擬 化的引擎來(lái)進(jìn)行邏輯設備到物理設備的映射,管理前端主機到后端數據的讀寫(xiě)。因此虛擬化引擎是存儲區域網(wǎng)絡(luò )中非常重要的管理模塊。
SAN 系統與分布式文件系統例如Google File System并不是相互對立的系統,而是在構建集群系統的時(shí)候可供選擇的兩種方案。其中,在選擇SAN系統的時(shí)候,為了應用程序的讀寫(xiě),還需要為應用程序 提供上層的語(yǔ)義接口,此時(shí)就需要在SAN之上構建文件系統。而Google File System正好是一個(gè)分布式的文件系統,因此能夠建立在SAN系統之上??傮w來(lái)說(shuō),SAN與分布式文件系統都可以提供類(lèi)似的功能,例如對于出錯的處理 等。至于如何使用還是需要由建立在云計算平臺之上的應用程序來(lái)決定。
與Google不同的是,IBM并沒(méi) 有基于云計算提供外部可訪(fǎng)問(wèn)的網(wǎng)絡(luò )應用程序。這主要是由于IBM并不是一個(gè)網(wǎng)絡(luò )公司,而是一個(gè)IT的服務(wù)公司。當然,IBM內部以及IBM未來(lái)為客戶(hù)提供 的軟件服務(wù)會(huì )基于云計算的架構。(注: 本文受?chē)?73計劃資助,資助號: 2007CB310900以及國家自然科學(xué)基金資助,資助號90718040)

評論