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