雲端計算的架構

turingbooks發表於2012-02-01

IT,身為一個新興行業,在其發展歷程中向其他行業借鑑了一些先進的思想和理念,比如除了前面提到的從電力行業借鑑了公用事業這種商業模式和從豐田汽車流水線生產中總結出精益這套程式設計模式之外,還在軟體設計方面引入了架構這個在建築行業非常核心的概念。

架構,對軟體系統而言是極為重要的。因為它不僅定義了系統內部各個模組之間是如何整合和協調的,同時也對其整體表現起著非常關鍵的作用。而云,作為一個非常複雜的大型軟體系統,其中包含著許許多多的模組和元件,所以如果能夠理出其架構的話,將會非常有益。

為了讓大家對雲端計算有更深入的理解,本章將會對雲的架構進行深入剖析。除了雲的架構之外,本章還將會對雲端計算最主要和最常見的4種模式進行深入介紹。

 雲的架構

在對雲端計算進行了三年多的研究之後,我覺得雲端計算雖然涉及了很多產品與技術,表面上看起來的確有點紛繁複雜,但是雲端計算本身還是有跡可循和有理可依的,所以在個人理解的基礎上,我總結出了一套雲端計算的架構,具體請看圖2-1。

這個雲架構共分為服務和管理兩大部分。

在服務方面,主要以提供使用者基於雲的各種服務為主,共包含3個層次。其一是Software as a Service(軟體即服務),簡稱SaaS,這層的作用是將應用主要以基於Web的方式提供給客戶;其二是Platform as a Service(平臺即服務),簡稱PaaS,這層的作用是將一個應用的開發和部署平臺作為服務提供給使用者;其三是Infrastructure as a Service(基礎設施即服務),簡稱IaaS,這層的作用是將各種底層的計算(比如虛擬機器)和儲存等資源作為服務提供給使用者。從使用者角度而言,這3層服務是獨立的,因為它們提供的服務是完全不同的,而且面向的使用者也不盡相同。但從技術角度而言,雲服務的這3層是有一定依賴關係的。比如,一個SaaS層的產品和服務不僅需要用到SaaS層本身的技術,而且還依賴PaaS層所提供的開發和部署平臺或者直接部署於IaaS層所提供的計算資源上,而PaaS層的產品和服務也很有可能構建於IaaS層服務之上。

enter image description here

在管理方面,主要以雲管理層為主,它的功能是確保整個雲端計算中心能夠安全、穩定地執行,並且能夠被有效管理。

接下來,將給大家詳細介紹每個層次,其中不僅涉及它們的歷史和相關產品,而且還會討論它們的優勢和採用的技術。

SaaS

SaaS是最常見的,也是最先出現的雲端計算服務。通過SaaS這種模式,使用者只要接上網路,通過瀏覽器就能直接使用在雲上執行的應用。SaaS雲供應商負責維護和管理雲中的軟硬體設施,同時以免費或者按需使用的方式向使用者收費,所以使用者不需要顧慮類似安裝、升級和防病毒等瑣事,並且免去初期高昂的硬體投入和軟體許可證費用的支出。

1. 歷史

SaaS的前身是ASP(Application Service Provider),其概念和思想與ASP相差不大。最早的ASP廠商有Salesforce.com和Netsuite,其後還有一批企業跟隨進來。這些廠商在創業時都主要專注於線上CRM(客戶關係管理)應用,但由於那時正值網際網路泡沫破裂的時候,而且當時ASP本身的技術也並不成熟,而且還缺少定製和整合等重要功能,再加上當時欠佳的網路環境,所以ASP沒有受到市場的熱烈歡迎,從而導致大批相關廠商破產。但在2003年後,在Salesforce的帶領下,殘存的ASP企業喊出了SaaS這個口號,並隨著技術和商業這兩方面不斷成熟,Salesforce、WebEx和Zoho等國外SaaS企業得到了成功,而國內的企業(諸如用友、金算盤、金碟、阿里巴巴和八百客等)也加入到SaaS的浪潮中。

2. 相關產品

由於SaaS產品起步較早,而且開發成本低,所以在現在的市場上,SaaS產品不論是在數量還是在類別上都非常豐富。同時,也出現了多款經典產品,其中最具代表性的莫過於Google Apps、Salesforce CRM、Office Web Apps 和Zoho。

  • Google Apps。中文名為“Google 企業應用套件”,它提供企業版Gmail、Google 日曆、Google 文件和Google 協作平臺等多個線上辦公工具,而且價格低廉,使用方便,並且已經有超過兩百萬家企業購買了Google Apps服務。
  • Salesforce CRM。它是一款線上客戶管理工具,並在銷售、市場營銷、服務和合作夥伴這4個商業領域上提供完善的IT支援,還提供強大的定製和擴充套件機制,來讓使用者的業務更好地執行在Salesforce平臺上。這款產品常被業界視為SaaS產品的“開山之作”。
  • Office Web Apps。它是微軟所開發的線上版Office,提供基於Office 2010技術的簡易版Word、Excel、PowerPoint及OneNote等功能。它屬於Windows Live的一部分,並與微軟的SkyDrive雲端儲存服務有深度的整合,而且相容Firefox、Safari和Chrome等非IE系列瀏覽器。和其他線上Office相比,它的最大優勢是,由於其本身屬於Office 2010的一部分,所以在與Office文件的相容性方面遠勝其他線上Office服務。
  • Zoho。Zoho是AdventNet公司開發的一款線上辦公套件。在功能方面,它絕對是現在業界最全面的,有郵件、CRM、專案管理、Wiki、線上會議、論壇和人力資源管理等幾十個線上工具供使用者選擇。同時包括美國通用電氣在內的多家大中型企業已經開始在其內部引入Zoho的線上服務。Zoho在國內的代理商為百會。

3. 優勢

雖然和傳統桌面軟體相比,現有的SaaS服務在功能方面還稍遜一籌,但是在其他方面還是具有一定的優勢的,下面是其中的4個方面。

  • 使用簡單。在任何時候或者任何地點,只要接上網路,使用者就能訪問這個SaaS服務,而且無需安裝、升級和維護。
  • 支援公開協議。現有的SaaS服務在公開協議(比如HTML 4/HTML5)的支援方面都做得很好,使用者只需一個瀏覽器就能使用和訪問SaaS應用。這對使用者而言非常方便。
  • 安全保障。SaaS供應商需要提供一定的安全機制,不僅要使儲存在雲端的使用者資料處於絕對安全的境地,而且也要通過一定的安全機制(比如HTTPS等)來確保與使用者之間通訊的安全。
  • 初始成本低。使用SaaS服務時,不僅無需在使用前購買昂貴的許可證,而且幾乎所有的SaaS供應商都允許免費試用。

4. 技術

由於SaaS層離普通使用者非常近,所以大家對SaaS層用到的大多數技術都耳熟能詳。下面列出了其中最主要的5種技術。

  • HTML。它是標準的Web頁面技術,現在主要以HTML 4為主。但是即將推出的HTML5會在很多方面推動Web頁面的發展,比如視訊和本地儲存等。
     JavaScript。一種用於Web頁面的動態語言,通過JavaScript,能夠極大地豐富Web頁面的功能。最流行的JavaScript框架有jQuery和Prototype。
  • CSS。主要用於控制Web頁面的外觀,而且能使頁面的內容與其表現形式之間進行優雅地分離。
  • Flash。業界最常用的RIA(Rich Internet Applications,富因特網應用)技術,能夠在現階段提供HTML等技術所無法提供的基於Web的富應用,而且在使用者體驗方面也非常不錯。
  • Silverlight。來自微軟的RIA技術。雖然它現在的市場佔有率稍遜於Flash,但由於它可以使用C#來進行程式設計,所以對開發者非常友好。

由於通用且學習成本較低,大多數雲端計算產品都會傾向於HTML、JavaScript和CSS這對黃金組合,但是在HTML5被大家廣泛接受之前,RIA技術在使用者體驗方面還是具有一定優勢的,所以Flash和Silverlight也將會有一定的用武之地,比如VMware vCloud就採用了基於Flash的Flex技術,而微軟的雲端計算產品肯定會在今後大量使用Silverlight技術。

 PaaS

通過PaaS這種模式,使用者可以在一個提供SDK(Software Development Kit,軟體開發工具包)、文件、測試環境和部署環境等在內的開發平臺上非常方便地編寫和部署應用,而且不論是在部署還是在執行的時候,使用者都無需為伺服器、作業系統、網路和儲存等資源的運維操心。 PaaS在整合率上非常驚人,比如一臺執行Google App Engine的伺服器能夠支撐成千上萬個應用,也就是說,PaaS是非常經濟的。PaaS主要面對的使用者是開發人員。

1. 歷史

PaaS是雲服務這3層之中出現最晚的。業界第一個PaaS平臺誕生在2007年,是Salesforce的Force.com,通過這個平臺,不僅能使用Salesforce提供的完善的開發工具和框架來輕鬆地開發應用,而且能把應用直接部署到Salesforce的基礎設施上,從而能利用其強大的多租戶系統。接著,在2008年4月,Google推出了Google App Engine,從而將PaaS所支援的範圍從線上商業應用擴充套件到普通的Web應用,也使得越來越多的人開始熟悉和使用功能強大的PaaS服務。

2. 相關產品

和SaaS產品百花齊放相比,PaaS產品主要以少而精為主,其中比較著名的產品有:Force.com、Google App Engine、Windows Azure Platform和Heroku。

  • Force.com。就像上面所說的那樣,Force.com是業界第一個PaaS平臺,它主要通過提供完善的開發環境和強健的基礎設施等來幫助企業和第三方供應商交付健壯的、可靠的和可伸縮的線上應用。還有,Force.com本身是基於Salesforce著名的多租戶架構的。
  • Google App Engine。Google App Engine提供Google的基礎設施來讓大家部署應用,還提供一整套開發工具和SDK來加速應用的開發,並提供大量免費額度來節省使用者的開支。
  • Windows Azure Platform。它是微軟推出的PaaS產品,執行在微軟資料中心的伺服器和網路基礎設施上,通過公共網際網路來對外提供服務。它由具有高擴充套件性的雲作業系統、資料儲存網路和相關服務組成,而且服務都是通過物理或虛擬的Windows Server 2008例項提供的。還有,它附帶的Windows Azure SDK提供了一整套開發、部署和管理Windows Azure雲服務所需要的工具和API。
  • Heroku。它是一個用於部署Ruby On Rails應用的PaaS平臺,並且其底層基於Amazon EC2的IaaS服務,在Ruby程式設計師中有非常好的口碑。

3. 優勢

和現有的基於本地的開發和部署環境相比,PaaS平臺主要有下面這6方面的優勢。

  • 開發環境友好。通過提供SDK和IDE(Integrated Development Environment,整合開發環境)等工具來讓使用者不僅能在本地方便地進行應用的開發和測試,而且能進行遠端部署。
  • 服務豐富。PaaS平臺會以API的形式將各種各樣的服務提供給上層的應用。
  • 管理和監控精細。PaaS能夠提供應用層的管理和監控,比如能夠觀察應用執行的情況和具體數值[比如吞吐量(Throughput)和響應時間(Response Time)等]來更好地衡量應用的執行狀態,還能通過精確計量應用所消耗的資源來更好地計費。
  • 伸縮性強。PaaS平臺會自動調整資源來幫助執行於其上的應用更好地應對突發流量。
  • 多住戶(Multi-Tenant)機制。許多PaaS平臺都自帶多住戶機制,不僅能更經濟地支撐龐大的使用者規模,而且能提供一定的可定製性以滿足使用者的特殊需求。
  • 整合率高。PaaS平臺的整合率非常高,比如Google App Engine能在一臺伺服器上承載成千上萬個應用。

4. 技術

與SaaS層所採用的技術不同的是,PaaS層的技術比較多樣,下面是常見的5種。

  • REST。通過REST(Representational State Transfer,表述性狀態轉移)技術,能夠非常方便和優雅地將中介軟體層所支撐的部分服務提供給呼叫者。
  • 多租戶。它能讓一個單獨的應用例項可以為多個組織服務,而且能保持良好的隔離性和安全性。通過這種技術,能有效地降低應用的購置和維護成本。
  • 並行處理。為了處理海量資料,需要利用龐大的x86叢集進行規模巨大的並行處理,Google的MapReduce是這方面的代表之作。
  • 應用伺服器。在原有應用伺服器的基礎上為雲端計算作了一定程度的優化,比如用於Google App Engine的Jetty應用伺服器。
  • 分散式快取。通過這種技術,不僅能有效降低對後臺伺服器的壓力,而且還能加快相應的反應速度。最著名的分散式快取的例子莫過於Memcached。

對於很多PaaS平臺,比如用於部署Ruby應用的Heroku雲平臺,應用伺服器和分散式快取都是必備的, REST技術常用於對外的介面,多租戶技術則主要用於SaaS應用的後臺(比如用於支撐Salesforce的CRM等應用的Force.com多租戶核心),而並行處理技術常被作為單獨的服務推出(比如Amazon的Elastic MapReduce)。

 IaaS

通過IaaS這種模式,使用者可以從供應商那裡獲得他所需要的計算或者儲存等資源來裝載相關應用,並只需為其所租用的那部分資源付費,而這些煩瑣的管理工作則交給IaaS供應商來負責。

1. 歷史
和SaaS一樣,類似IaaS的想法其實已經出現很久了,比如過去的IDC(Internet Data Center,網際網路資料中心)和VPS(Virtual Private Server,虛擬專用伺服器)等,但由於技術、效能、價格和使用等方面的缺失,這些服務並沒有被大中型企業廣泛採用。但在2006年年底,Amazon 釋出了EC2(Elastic Compute Cloud,靈活計算雲)這個IaaS雲服務。由於EC2在技術和效能等多方面的優勢,這類技術終於被業界廣泛認可和接受,其中就包括部分大型企業,比如著名的紐約時報。

2. 相關產品
最具代表性的IaaS產品有:Amazon EC2、IBM Blue Cloud、Cisco UCS和Joyent。

  • Amazon EC2。EC2主要以提供不同規格的計算資源(也就是虛擬機器)為主。它基於著名的開源虛擬化技術Xen。通過Amazon的各種優化和創新, EC2不論在效能上還是在穩定性上都已經滿足企業級的需求。而且它還提供完善的API和Web管理介面來方便使用者使用。
  • IBM Blue Cloud。“藍雲”解決方案是由IBM雲端計算中心開發的業界第一個,同時也是在技術上比較領先的企業級雲端計算解決方案。該解決方案可以對企業現有的基礎架構進行整合,通過虛擬化技術和自動化管理技術來構建企業自己的雲端計算中心,並實現對企業硬體資源和軟體資源的統一管理、統一分配、統一部署、統一監控和統一備份,也打破了應用對資源的獨佔,從而幫助企業能享受到雲端計算所帶來的諸多優越性。
  • Cisco UCS。它是下一代資料中心平臺,在一個緊密結合的系統中整合了計算、網路、儲存與虛擬化功能。該系統包含一個低延時、無丟包和支援萬兆乙太網的統一網路陣列以及多臺企業級x86架構刀鋒伺服器等裝置,並在一個統一的管理域中管理所有資源。使用者可以通過在UCS上安裝VMWare vSphere來支撐多達幾千臺虛擬機器的執行。通過Cisco UCS,能夠讓企業快速在本地資料中心搭建基於虛擬化技術的雲環境。
  • Joyent。它提供基於Open Solaris技術的IaaS服務。其IaaS服務中最核心的是Joyent SmartMachine。與大多數的IaaS服務不同的是,它並不是將底層硬體按照預計的額度直接分配給虛擬機器,而是維護了一個大的資源池,讓虛擬機器上層的應用直接呼叫資源,並且這個資源池也有公平排程的功能,這樣做的好處是優化資源的調配,並且易於應對流量突發情況,同時使用人員也無需過多關注作業系統級管理和運維。

3. 優勢

與傳統的企業資料中心相比,IaaS服務在很多方面都存在一定的優勢,下面是最明顯的5個。
- 免維護。主要的維護工作都由IaaS雲供應商負責,所以使用者不必操心。
- 非常經濟。首先免去了使用者前期的硬體購置成本,而且由於IaaS雲大都採用虛擬化技術,所以應用和伺服器的整合率普遍在10(也就是一臺伺服器執行10個應用)以上,這樣能有效降低使用成本。
- 開放標準。雖然很多IaaS平臺都存在一定的私有功能,但是由於OVF等應用釋出協議的誕生,IaaS在跨平臺方面穩步前進,這樣應用能在多個IaaS雲上靈活地遷移,而不會被固定在某個企業資料中心內。
- 支援的應用。因為IaaS主要是提供虛擬機器,而且普通的虛擬機器能支援多種作業系統,所以IaaS所支援應用的範圍非常廣泛。
- 伸縮性強。IaaS雲只需幾分鐘就能給使用者提供一個新的計算資源,而傳統的企業資料中心則往往需要幾周時間,並且計算資源可以根據使用者需求來調整其資源的大小。

4. 技術

IaaS所採用的技術都是一些比較底層的,其中有4種技術是比較常用的。

  • 虛擬化。也可以將它理解為基礎設施層的“多租戶”。因為通過虛擬化技術,能夠在一個物理伺服器上生成多個虛擬機器,並且能在這些虛擬機器之間實現全面的隔離,這樣不僅能降低伺服器的購置成本,而且還能降低伺服器的運維成本。成熟的x86虛擬化技術有VMware的ESX和開源的Xen。
  • 分散式儲存。為了承載海量的資料,同時也要保證這些資料的可管理性,所以需要一整套分散式儲存系統。在這方面,Google的GFS是典範之作。
  • 關係型資料庫。基本上是在原有的關係型資料庫的基礎上作了擴充套件和管理等方面的優化,使其在雲中更適應。
  • NoSQL。為了滿足一些關聯式資料庫所無法滿足的目標,比如支撐海量資料等,一些公司特地設計一批不是基於關係模型的資料庫,比如Google的BigTable和Facebook的Cassandra等。

現在大多數的IaaS服務都是基於Xen的,比如Amazon的EC2等,但VMware也推出了基於ESX技術的vCloud,同時業界也有幾個基於關係型資料庫的雲服務,比如Amazon的RDS(Relational Database Service,關係型資料庫服務)和Windows Azure SDS(SQL Data Services,SQL資料服務)等。關於分散式儲存和NoSQL,它們已經被廣泛用於雲平臺的後端,比如Google App Engine的Datastore就是基於BigTable和GFS這兩個技術,而Amazon推出的Simple DB則基於NoSQL技術。

 雲管理層

雖然和前面雲服務的3層相比,熟悉雲管理層的人非常少,但是它確實是雲最核心的部分,就好像一個公司離不開其董事會的管理一樣。與過去的資料中心相比,雲最大的優勢在於雲管理的優越性。雲管理層也是前面3層雲服務的基礎,併為這3層提供多種管理和維護等方面的功能和技術。如圖2-2所示,雲管理層共有9個模組,這9個模組可分為3層,它們分別是使用者層、機制層和檢測層。

enter image description here

1. 使用者層

顧名思義,這層主要面向使用雲的使用者,並通過多種功能來更好地為使用者服務,共包括4個模組:使用者管理、客戶支援、服務管理和計費管理。

  • 使用者管理
    對於任何系統而言,對於使用者的管理都是必需的,雲也是如此。雲方面的使用者管理主要有3種功能。其一是賬號管理,包括對使用者身份及其訪問許可權進行有效地管理,還包括對使用者組的管理;其二是單點登入,英文為“Single Sign On”,其意義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統,這個機制可以極大地方便使用者在雲服務之間進行切換;其三是配置管理,對與使用者相關的配置資訊進行記錄、管理和跟蹤,配置資訊包括虛擬機器的部署、配置和應用的設定資訊等。
  • 客戶支援
    好的使用者體驗對於雲而言也是非常關鍵的,所以幫助使用者解決疑難問題的客戶支援是必需的,並且需要建設一整套完善的客戶支援系統,以確保問題能按照其嚴重程度或者優先順序來依次進行解決,而不是一視同仁。這樣,能提升客戶支援的效率和效果。
  • 計費管理
    利用底層監控系統所採集的資料來對每個使用者所使用的資源(比如所消耗CPU的時間和網路頻寬等)和服務(比如呼叫某個付費API的次數)進行統計,來準確地向使用者索取費用,並提供完善和詳細的報表。
  • 服務管理
    大多數雲都在一定程度上遵守SOA(Service-Oriented Architecture,面向服務的架構)的設計規範。SOA的意思是將應用不同的功能拆分為多個服務,並通過定義良好的介面和契約來將這些服務連線起來,這樣做的好處是能使整個系統鬆耦合,從而使整個系統能夠通過不斷演化來更好地為客戶服務。而一個普通的雲也同樣由許許多多的服務組成,比如部署虛擬機器的服務、啟動或者關閉虛擬機器的服務等,而管理好這些服務對於雲而言是非常關鍵的。服務管理主要有下面這5個功能。
  • 管理介面。提供完善的關於服務的Web管理介面和API介面。
  • 自定義服務。能讓使用者對服務進行自定義和擴充套件。
  • 服務排程。配備強健的機制來負責服務的排程,以使服務能在合理的時間內被系統呼叫和處理。
  • 監控服務。利用底層的監控系統來觀測服務實際的執行情況。
  • 流程管理。提供一個工具來讓使用者將多個服務整合為一個流程,並對它進行管理以提升執行效率。

2. 機制層

這層主要提供各種用於管理雲的機制。通過這些機制,能讓雲端計算中心內部的管理更自動化、更安全和更環保。和使用者層一樣,該層也包括4個模組:運維管理、資源管理、安全管理和容災支援。

  • 運維管理
    雲的執行是否出色,往往取決於其運維繫統的強健和自動化程度。而和運維管理相關的功能主要包括3個方面。首先是自動維護:運維操作應儘可能地專業和自動化,從而降低雲端計算中心的運維成本。其次是能源管理:它包括自動關閉閒置的資源,根據負載來調節CPU的頻率以降低功耗並提供關於資料中心整體功耗的統計圖與機房溫度的分佈圖等來提升能源的管理,並相應地降低浪費。還有就是事件監控:它是通過對在資料中心發生的各項事件進行監控,以確保在雲中發生的任何異常事件都會被管理系統捕捉到。
  • 資源管理
    這個模組和物理節點的管理相關,比如伺服器、儲存裝置和網路裝置等,它涉及下面這3個功能。其一是資源池:通過使用資源池這種資源抽象方法,能將具有龐大數量的物理資源集中到一個虛擬池中,以便於管理。其二是自動部署:也就是將資源從建立到使用的整個流程自動化。其三是資源排程:它將不僅能更好地利用系統資源,而且能自動調整雲中資源來幫助執行於其上的應用更好地應對突發流量,從而起到負載均衡的作用。
  • 安全管理
    安全管理是對資料、應用和賬號等IT資源採取全面保護,使其免受犯罪分子和惡意程式的侵害,並保證雲基礎設施及其提供的資源能被合法地訪問和使用。主要包括下面這7種機制。
  • 訪問授權。為多個服務提供集中的訪問控制,以確保應用和資料只能被有授權的使用者訪問。
  • 安全策略。實現基於角色或者規則的一整套安全策略,而且還允許系統能模擬策略發生變更的情況以提升安全策略的健壯性。
  • 安全審計。對安全相關的事件進行全面審計,以檢測是不是存在任何隱患。
  • 物理安全。根據職責限定每個雲管理人員不同的許可權,比如門禁等。
  • 網路隔離。使用VPN(Virtual Private Network,虛擬專用網路)、SSL(Secure Sockets Layer,安全套接層)和VLAN(Virtual Local Area Network,虛擬區域網)等技術來確保網路的隔離和安全。
  • 資料加密。這個機制能確保即使資料被竊取,也不會被非法分子利用。相關的機制有:對稱加密和公鑰加密等。
  • 資料備份。由於資料完整性對雲端計算而言是基本要求,所以除了通過上面這些機制來確保資料不會被沒有許可權的人訪問之外,還需要對資料進行備份,以避免由於磁碟損壞或者管理不當導致資料丟失的情況,所以需要完善的備份服務來滿足每個使用者不同的備份策略。
  • 容災支援
    在容災方面,主要涉及兩個層面。其一是資料中心級別。如果資料中心的外部環境出現了類似斷電、火災、地震或者網路中斷等嚴重的事故,將很有可能導致整個資料中心不可用,這就需要在異地建立一個備份資料中心來保證整個雲服務持續執行。這個備份資料中心會實時或者非同步地與主資料中心進行同步,當主資料中心發生問題的時候,備份資料中心會自動接管在主資料中心中執行的服務。其二是物理節點級別。系統需要檢測每個物理節點的執行情況,如果一個物理節點出現問題,系統會試圖恢復它或者將其遮蔽,以確保相關雲服務正常執行。

3. 檢測層
這層比較簡單,主要監控這個雲端計算中心的方方面面,並採集相關資料,以供使用者層和機制層使用。

  • 監控系統
    全面監控雲端計算的執行主要涉及3個層面。其一是物理資源層面,主要監控物理資源的執行狀況,比如CPU使用率、記憶體利用率和網路頻寬利用率等。其二是虛擬資源層面,主要監控虛擬機器的CPU使用率和記憶體利用率等。其三是應用層面,主要記錄應用每次請求的響應時間(Response Time)和吞吐量(Throughput),以判斷它們是否滿足預先設定的SLA(Service Level Agreement,服務級別協議)。

 架構示例

在現實的IT環境中,有許多雲端計算產品都符合本章所講述的架構,其中比較知名的有Salesforce CRM和Google App Engine。為了幫助大家進一步理解雲的架構,本節將以這兩個著名的雲端計算產品為例來進行介紹。

1. Salesforce CRM

首先,從使用者角度而言,Salesforce CRM屬於SaaS層服務,主要通過在雲中部署可定製化的CRM應用,來讓企業使用者在初始投入很低的情況下使用CRM,並且可根據自身的流程來靈活地定製,而且使用者只需接入網際網路就能使用。從技術角度而言,Salesforce CRM像很多SaaS產品一樣,不僅用到SaaS層的技術,而且還用到PaaS層、IaaS層和雲管理層的技術。圖2-3為Salesforce CRM在技術層面上大致的架構。

enter image description here

Salesforce CRM採用的主要技術包括以下幾種。

  • SaaS層。基於HTML、JavaScript和CSS這個黃金組合。
  • PaaS層。在此層,Salesforce引入了多租戶核心和為支撐此核心執行而定製的應用伺服器。
  • IaaS層。雖然在後端還是使用在企業環境中很常見的Oracle資料庫,但是它為了支撐上層的多租戶核心作了很多優化。
  • 雲管理層。Salesforce不僅在使用者管理、計費管理、監控系統和資源管理這4個方面有不錯的支援,而且在安全管理方面,它更是提供了多層保護,並支援SSL加密技術等。

2. Google App Engine

像前文介紹的那樣,Google App Engine是一款PaaS服務,它主要提供一個平臺來讓使用者在Google強大的基礎設施上部署和執行應用程式,同時App Engine會根據應用所承受的負載來對應用所需的資源進行調整,並免去使用者對應用和伺服器等的維護工作,而且支援Java和Python這兩種語言。在技術上,由於App Engine屬於PaaS平臺,所以關於顯示層的技術選擇由應用的自身需求而定,而與App Engine無關。App Engine本身的設計主要集中在PaaS層、IaaS層和雲管理層。關於App Engine在技術層面上大致的架構,具體請看圖2-4。

enter image description here

Google App Engine採用的主要技術有以下幾種。

  • PaaS層。既有經過定製化的應用伺服器,比如上面已經提到過的Jetty,也有基於Memcached的分散式快取服務。
  • IaaS層。在分散式儲存GFS的基礎上提供了NoSQL資料庫BigTable來持久化應用的資料。
  • 雲管理層。由於App Engine基於Google強大的分散式基礎設施,所以它在運維管理技術方面非常出色,同時其計費管理能做到非常細粒度的API級計費,而且App Engine在監控系統和資源管理這兩方面都有非常好的支援。

 雲的4種模式

雖然從技術或者架構角度看,雲端計算都是比較單一的,但是在實際情況下,為了適應使用者不同的需求,它會演變為不同的模式。在NIST(National Institute of Standards and Technology,美國國家標準技術研究院)的名為“The NIST Definition of Cloud Computing”的這篇關於雲端計算概念的著名文件中,共定義了雲的4種模式,它們分別是:公有云、私有云、混合雲和行業雲。接下來,將詳細介紹每種模式的概念、構建方式、優勢、不足之處及其對未來的展望等。

 公有云

公有云是現在最主流也就是最受歡迎的雲端計算模式。它是一種對公眾開放的雲服務,能支援數目龐大的請求,而且因為規模的優勢,其成本偏低。公有云由雲供應商執行,為終端使用者提供各種各樣的IT資源。雲供應商負責從應用程式、軟體執行環境到物理基礎設施等IT資源的安全、管理、部署和維護。在使用IT資源時,使用者只需為其所使用的資源付費,無需任何前期投入,所以非常經濟,而且在公有云中,使用者不清楚與其共享和使用資源的還有其他哪些使用者,整個平臺是如何實現的,甚至無法控制實際的物理設施,所以雲服務提供商能保證其所提供的資源具備安全和可靠等非功能性需求。

許多IT巨頭都推出了它們自己的公有云服務,包括Amazon的AWS、微軟的Windows Azure Platform、Google的Google Apps與Google App Engine等,一些過去著名的VPS和IDC廠商也推出了它們自己的公有云服務,比如Rackspace的Rackspace Cloud和國內世紀互聯的CloudEx雲快線等。

1. 構建方式
在構建方式方面,現在主要有3種方法。其一是獨自構建:雲供應商利用自身優秀的工程師團隊和開源的軟體資源,購買大量零部件來構建伺服器、作業系統,乃至整個雲端計算中心。這種獨自構建的好處是,能為自己的需求作最大限度的優化,但是需要一個非常專業的工程師團隊,所以業界這樣做的基本上只有Google一家。其二是聯合構建:雲供應商在構建的時候,在部分軟硬體上選擇商業產品,而其他方面則會選擇自建。聯合構建的好處是避免自己的團隊涉足一些不熟悉的領域,而在自己所擅長的領域上大膽創新。這方面最明顯的例子莫過於微軟。在硬體方面,它並沒有像Google那樣選擇自建,而是採購了HP和戴爾的伺服器,但是在其擅長的軟體方面選擇了自主研發,比如採用了Windows Server 2008、IIS伺服器和.NET框架。其三是購買商業解決方案。由於有一部分雲供應商在建設雲之前缺乏相關的技術積累,所以會穩妥地購買比較成熟的商業解決方案。這樣購買商業解決方案的做法雖然很難提升雲供應商自身的競爭力,但是在風險方面和前兩種構建方式相比,它更穩妥。在這方面,無錫的雲端計算中心是一個不錯的典範。由於無錫購買了IBM的Blue Cloud雲端計算解決方案,所以在半年左右的時間內就能向其整個高新技術園區開放公有云服務,而且在這之前,無錫基本上沒有任何與雲端計算相關的技術儲備。

2. 優勢

公有云在許多方面都有其優越性,下面是其中的4個方面。

  • 規模大。因為公有云的公開性,它能聚集來自於整個社會並且規模龐大的工作負載,從而產生巨大的規模效應。比如,能降低每個負載的執行成本或者為海量的工作負載作更多優化。
  • 價格低廉。由於對使用者而言,公有云完全是按需使用的,無需任何前期投入,所以與其他模式相比,公有云在初始成本方面有非常大的優勢。而且就像上面提到的那樣,隨著公有云的規模不斷增大,它將不僅使雲供應商受益,而且也會相應地降低使用者的開支。
  • 靈活。對使用者而言,公有云在容量方面幾乎是無限的。就算使用者所需求的量近乎瘋狂,公有云也能非常快地滿足。
  • 功能全面。公有云在功能方面非常豐富。比如,支援多種主流的作業系統和成千上萬個應用。

3. 不足之處

另外,公有云也有一些不足之處。

  • 缺乏信任。雖然在安全技術方面,公有云有很好的支援,但是由於其儲存資料的地方並不是在企業本地,所以企業會不可避免地擔憂資料的安全性。
  • 不支援遺留環境。由於現在公有云技術基本上都是基於x86架構的,在作業系統上普遍以Linux或者Windows為主,所以對於大多數遺留環境沒有很好地支援,比如基於大型機的Cobol應用。

4. 對未來的展望

由於公有云在規模和功能等方面的優勢,它會受到絕大多數使用者的歡迎。從長期而言,公有云將像公共電廠那樣毋庸置疑會成為雲端計算最主流甚至是唯一的模式,因為在規模、價格和功能等方面的潛力實在太大了。但是在短期之內,因為信任和遺留等方面的不足會降低公有云對企業的吸引力,特別是大型企業。

 私有云

關於雲端計算,雖然人們談論最多的莫過於以Amazon EC2和Google App Engine為代表的公有云,但是對許多大中型企業而言,因為很多限制和條款,它們在短時間內很難大規模地採用公有云技術,可是它們也期盼雲所帶來的便利,所以引出了私有云這一雲端計算模式。私有云主要為企業內部提供雲服務,不對公眾開放,在企業的防火牆內工作,並且企業IT人員能對其資料、安全性和服務質量進行有效地控制。與傳統的企業資料中心相比,私有云可以支援動態靈活的基礎設施,降低IT架構的複雜度,使各種IT資源得以整合和標準化。
在私有云界,主要有兩大聯盟:其一是IBM與其合作伙伴,主要推廣的解決方案有IBM Blue Cloud和IBM CloudBurst;其二是由VMware、Cisco和EMC組成的VCE聯盟,它們主推的是Cisco UCS和vBlock。在實際的例子方面,已經建設成功的私有云有采用IBM Blue Cloud技術的中化雲端計算中心和採用Cisco UCS技術的Tutor Perini雲端計算中心。

1. 構建方式

建立私有云的方式主要有兩種。首先是獨自構建,通過使用諸如Enomaly和Eucalyptus等軟體將現有硬體整合成一個雲。這比較適合預算少或者希望重用現有硬體的企業。其次是購買商業解決方案。通過購買Cisco的UCS和IBM的Blue Cloud等方案來一步到位,這比較適合那些有實力的企業和機構。

2. 優勢

由於私有云主要在企業資料中心內部執行,並且由企業的IT團隊來進行管理,所以這種模式在下面這5個方面有出色的表現。

  • 資料安全。雖然每個公有云的供應商都對外宣稱,其服務在各方面都非常安全,特別是在資料管理方面,但是對企業而言,特別是大型企業而言,和業務相關的資料是其生命線,是不能受到任何形式的威脅和侵犯的,而且需要嚴格地控制和監視這些資料的儲存方式和位置。所以短期而言,大型企業是不會將其關鍵應用部署到公有云上的。而私有云在這方面是非常有優勢的,因為它一般都構築在防火牆內,企業會比較放心。
  • 服務質量(SLA)。因為私有云一般在企業內部,而不是在某一個遙遠的資料中心中,所以當公司員工訪問那些基於私有云的應用時,它的服務質量應該會非常穩定,不會受到遠端網路偶然發生異常的影響。
  • 充分利用現有硬體資源。每個公司,特別是大公司,都會存在很多低利用率的硬體資源,可以通過一些私有云解決方案或者相關軟體,讓它們重獲“新生”。
  • 支援定製和遺留應用。現有公有云所支援應用的範圍都偏主流,偏x86,對一些定製化程度高的應用和遺留應用就很有可能束手無策,但是這些往往都屬於一個企業最核心的應用,比如大型機、Unix等平臺的應用。在這個時刻,私有云可以說是一個不錯的選擇。
  • 不影響現有IT管理的流程。對大型企業而言,流程是其管理的核心,如果沒有完善的流程,企業將會成為一盤散沙。實際情況是,不僅企業內部和業務有關的流程非常多,而且IT部門的自身流程也不少,而且大多都不可或缺,比如那些和Sarbanes-Oxley相關的流程。在這方面,私有云的適應性比公有云好很多,因為IT部門能完全控制私有云,這樣他們有能力使私有云比公有云更好地與現有流程進行整合。

3. 不足之處

另外,私有云也有其不足之處,主要是成本開支高。因為建立私用雲需要很高的初始成本,特別是如果需要購買大廠家的解決方案時更是如此;其次,由於需要在企業內部維護一隻專業的雲端計算團隊,所以其持續運營成本也同樣偏高。

4. 對未來的展望

在將來很長一段時間內,私有云將成為大中型企業最認可的雲模式,而且將極大地增強企業內部的IT能力,並使整個IT服務圍繞著業務展開,從而更好地為業務服務。

 混合雲

混合雲雖然不如前面的公有云和私有云常用,但已經有類似的產品和服務出現。顧名思義,混合雲是把公有云和私有云結合到一起的方式,即它是讓使用者在私有云的私密性和公有云靈活的低廉之間做一定權衡的模式。比如,企業可以將非關鍵的應用部署到公有云上來降低成本,而將安全性要求很高、非常關鍵的核心應用部署到完全私密的私有云上。

現在混合雲的例子非常少,最相關的就是Amazon VPC(Virtual Private Cloud,虛擬私有云)和VMware vCloud了。比如,通過Amazon VPC服務能將Amazon EC2的部分計算能力接入到企業的防火牆內。

1. 構建方式
混合雲的構建方式有兩種。其一是外包企業的資料中心。企業搭建了一個資料中心,但具體維護和管理工作都外包給專業的雲供應商,或者邀請專業的雲供應商直接在廠區內搭建專供本企業使用的雲端計算中心,並在建成之後,負責今後的維護工作。其二是購買私有云服務。通過購買Amazon等雲供應商的私有云服務,能將一些公有云納入到企業的防火牆內,並且在這些計算資源和其他公有云資源之間進行隔離,同時獲得極大的控制權,也免去了維護之苦。

2. 優勢

通過使用混合雲,企業可以享受接近私有云的私密性和接近公有云的成本,並且能快速接入大量位於公有云的計算能力,以備不時之需。

3. 不足之處

現在可供選擇的混合雲產品較少,而且在私密性方面不如私有云好,在成本方面也不如公有云低,並且操作起來較複雜。

4. 對未來的展望

混合雲比較適合那些想嘗雲端計算的企業和麵對突發流量但不願將企業IT業務都遷移至公有云的企業。雖然混合雲不是長久之計,但是它應該也會有一定的市場空間,並且也將會有一些廠商推出類似的產品。

 行業雲

行業雲雖然較少提及,但是有一定的潛力,主要指的是專門為某個行業的業務設計的雲,並且開放給多個同屬於這個行業的企業。

雖然行業雲現在還沒有一個成熟的例子,但盛大的開放平臺頗具行業雲的潛質,因為它能將其整個雲平臺共享給多個小型遊戲開發團隊,這樣這些小型團隊只需負責遊戲的創意和開發即可,其他和遊戲相關的煩瑣的運維可轉交給盛大的開放平臺來負責。

1. 構建方式
在構建方式方面,行業雲主要有兩種方式。其一是獨自構建:某個行業的領導企業自主建立一個行業雲,並與其他同行業的公司分享。其二是聯合構建:多個同型別的企業可以聯合建設和共享一個雲端計算中心,或者邀請外部的供應商來參於其中。

2. 優勢

能為行業的業務作專門的優化。和其他的雲端計算模式相比,這不僅能進一步方便使用者,而且能進一步降低成本。

3. 不足之處

缺點是支援的範圍較小,只支援某個行業,同時建設成本較高。

4. 對未來的展望

行業雲非常適合那些業務需求比較相似,而且對成本非常關注的行業。雖然現在還沒有非常好的示例,但是對部分行業應該存在一定的吸引力,比如上面提到的遊戲業。

本章主要在技術層面(特別是在雲端計算的架構方面)對雲端計算進行了詳細描述,並且介紹了SaaS、PaaS和IaaS這3個雲服務層,以及作為雲端計算中心“大腦”的雲管理層,同時也討論了公有云、私有云、混合雲和行業雲這4種主要的雲端計算模式。下面將進入本書第二部分。在第二部分中,將深入剖析多個頂尖雲端計算產品的實現和架構,還會詳細介紹系統虛擬化和雲端計算安全這兩個非常重要的技術。

摘自《雲端計算核心技術剖析


相關文章