云計算和存儲將物理資源(例如處理器和存儲)轉(zhuǎn)換成 Internet 上可伸縮,、可共享的資源(“作為服務(wù)”的計算和存儲),。雖然虛擬化不是一個新概念,但是通過服務(wù)器虛擬化實現(xiàn)的物理系統(tǒng)共享,,的確能使資源的可伸縮性大得多,,效率也高得多。云計算使用戶可以訪問大規(guī)模計算和存儲資源,,而且他們不必知道那些資源的位置及其是如何配置的,。正如您預期的一樣,Linuxreg;在此扮演著極為重要的角色,。探索云計算,,了解其中的奧秘。
最近,,沒有哪家技術(shù)性網(wǎng)站不提到所謂的云計算(cloud computing)的,。云計算其實就是以服務(wù)的形式提供計算資源(計算機和存儲),。這又涉及到以一種簡單、透明的方式動態(tài)地將服務(wù)延伸到更多的計算機和存儲的能力,。所有這些都類似于效用計算(utility computing)背后的思想,。在效用計算中,計算資源被看作一種計量服務(wù),,就像更傳統(tǒng)的公共設(shè)施(例如水或電)一樣,。它們的區(qū)別不在于這些思想背后的目標,而在于組合到一起,、使這些思想成為現(xiàn)實的現(xiàn)有技術(shù),。
云計算背后最重要的概念之一就是可伸縮性,而實現(xiàn)它的關(guān)鍵則是虛擬化(virtualization),。虛擬化在一臺共享計算機上*多個操作系統(tǒng)和應用程序,,以便更好地利用服務(wù)器。虛擬化還允許在線遷移,,因此,,當一個服務(wù)器超載時,可以將一個操作系統(tǒng)的一個實例(以及它的應用程序)遷移到一個新的,、不那么繁忙的服務(wù)器上,。
從外部看,云計算只是將計算和存儲資源從企業(yè)遷出,,并遷入到云中,。用戶定義資源需求(例如計算和廣域網(wǎng)、帶寬需求),,云提供者在它的基礎(chǔ)設(shè)施中虛擬地裝配這些組件,。
云計算在 Internet 中遷移資源
云計算的目標是使這些資源比您自己所能提供和管理的資源更廉價。云計算除了降低成本外,,還有更大的靈活性和可伸縮性,。云計算提供者可以輕松地擴展虛擬環(huán)境,以通過提供者的虛擬基礎(chǔ)設(shè)施提供更大的帶寬或計算資源,。
云計算在環(huán)保方面的優(yōu)勢是,,它可以在不同的應用程序之間虛擬化和共享資源,以提高服務(wù)器的利用率,。下圖顯示了一個例子,。在這個例子中,不同的應用程序使用了 3個獨立的平臺,,每個應用程序都在它自己的服務(wù)器上運行,。在云中,可以在多個操作系統(tǒng)和應用程序之間共享(虛擬化)服務(wù)器,從而減少服務(wù)器的數(shù)量,。更少的服務(wù)器意味著需要更少的空間(減少數(shù)據(jù)中心占用的空間)和更少用于制冷的電力(減少碳足跡),。
虛擬化和資源使用
現(xiàn)在讓我們來探索一下,Linux 和開源社區(qū)如何為云計算領(lǐng)域做出貢獻,。您可能已經(jīng)猜到,,Linux 和開放源代碼扮演著極其重要的角色,。
Software-as-a-Service
SaaS 就是以服務(wù)的形式訪問 Internet 上的軟件,。一種早期的 SaaS 方法是 Application Service Provider(ASP)。ASP 提供對 Internet 上存放或交付的軟件的訂閱,。ASP 交付軟件,,并根據(jù)軟件的使用收費。這樣一來,,您就不必購買軟件,,只需隨需租用軟件。
SaaS 的另一個方面是在 Internet 上使用遠程執(zhí)行的軟件,。這種軟件可以是本地應用程序所使用的服務(wù)(并定義為 Web服務(wù)),,也可以是通過 Web 瀏覽器看到的遠程應用程序。遠程應用程序服務(wù)的一個例子是 Google Apps,,它通過一個標準的 Web瀏覽器提供一些企業(yè)應用,。要遠程地執(zhí)行應用程序,通常需要依賴于一個應用服務(wù)器來公布所需的服務(wù),。應用服務(wù)器 是一個軟件框架,,它公布軟件服務(wù)的API(例如事務(wù)管理或數(shù)據(jù)庫訪問)。具體的例子有 Red Hat JBoss Application Server,、Apache Geronimo 和 IBMreg; WebSpherereg; Application Server 等,。另外還有很多其他的應用服務(wù)器,參考資料 小節(jié)給出了一份詳細的列表,。
SaaS 的另一個最近的例子是 Google 的 Chrome 瀏覽器,。這個瀏覽器是作為新桌面的理想環(huán)境,除了具有傳統(tǒng)的 Web 瀏覽體驗外,,還可以通過它來(以本地或遠程方式)交付應用程序,。(要了解更多信息,請參閱 參考資料),。
Platform-as-a-Service
PaaS 可描述為一個完整的虛擬平臺,,它包括一個或多個服務(wù)器(在一組物理服務(wù)器上虛擬而成)、操作系統(tǒng)以及特定的應用程序(例如用于基于Web 的應用程序的 Apache 和 MySQL),。在某些情況下,,這些平臺可以預先定義和選擇。而在另一些情況下,,可以提供一個 VM鏡像,,該鏡像包含所有的特定于用戶的應用程序,。
PaaS 一個有趣的例子是 Google App Engine。App Engine 是一個服務(wù),,通過它可以在 Google的可伸縮性極佳的架構(gòu)上部署 Web 應用程序,。App Engine 為可通過 Internet 引用的 Python應用程序提供一個沙盒(將來還會支持更多的語言)。除了支持用戶認證,、鏡像操作和電子郵件發(fā)送外,,App Engine 還提供了 PythonAPI,用于持久地存儲和管理數(shù)據(jù)(使用 Google Query Language 或 GQL),。Web應用程序運行時所在的沙盒將限制對底層操作系統(tǒng)的訪問,。雖然 App Engine 限制了應用程序可用的功能,但是它支持有用的 Web服務(wù)的構(gòu)造,。請參閱 參考資料 小節(jié),,了解更多信息。
注意: 在一定的帶寬和存儲約束范圍內(nèi),,在 App Engine 中部署應用程序是免費的,。但是,如果要用 App Engine 構(gòu)建生產(chǎn) Web 站點,,則需要*估使用費,。
PaaS 的另一個例子是 10gen,它既是一個云平臺,,又是一個可下載的開放源代碼包,,可用于創(chuàng)建您自己的私有云。10gen 是類似于App Engine 的一個軟件棧,,它提供與 App Engine 類似的功能 — 但有一些不同之處,。通過 10gen,可以使用 Python以及 JavaScript. 和 Ruby編程語言開發(fā)應用程序,。該平臺還使用沙盒概念隔離應用程序,,并且使用它們自己的應用服務(wù)器的許多計算機(當然,是在 Linux上構(gòu)建)提供一個可靠的環(huán)境,。 Infrastructure-as-a-Service
IaaS 是以服務(wù)的形式交付計算機基礎(chǔ)設(shè)施,。這一層與 PaaS 的不同之處在于,只提供虛擬硬件,,而沒有軟件棧,。客戶提供一個 VM鏡像,,該鏡像在一個或多個虛擬服務(wù)器上被調(diào)用,。IaaS 是作為服務(wù)的計算的最原始的形式(除了對物理基礎(chǔ)設(shè)施的訪問)。最著名的商業(yè) IaaS提供程序是 Amazon Elastic Compute Cloud(EC2)。在 EC2 中,,可以指定一個特定的VM(操作系統(tǒng)和應用程序集),,然后將應用程序部署到它上面,或者提供要在服務(wù)器上執(zhí)行的 VM 鏡像,。然后,,只需根據(jù)計算時間、存儲和網(wǎng)絡(luò)帶寬付費,。
Eucalyptus 項目(Elastic Utility Computing Architecturefor Linking Your Programs To Useful Systems)是 Amazon EC2的一個開源實現(xiàn),,它與商業(yè)服務(wù)接口兼容。和 EC2 一樣,,Eucalyptus 依賴于 Linux 和 Xen進行操作系統(tǒng)虛擬化,。Eucalyptus 是加利福尼亞大學(SantaBarbara)為進行云計算研究而開發(fā)的。您可以從該大學的網(wǎng)站上下載它(見 參考資料),,或者通過 Eucalyptus PublicCloud 體驗它,不過后者有一些限制,。
另一個 EC2 風格的 IaaS 是 Enomalism 云計算平臺,。Enomalism 是一個開放源代碼項目,它提供了一個功能類似于 EC2 的云計算框架,。Enomalism 基于 Linux,,同時支持 Xen 和 Kernel Virtual Machine(KVM)。與其他純 IaaS 解決方案不同的是,,Enomalism 提供了一個基于 TurboGears Web 應用程序框架和 Python 的軟件棧,。