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