在寫《剖析云計算》(編者注:InfoQ中文站近期會推出該書電子版)一書的時候,我發(fā)現(xiàn)雖然云計算本身有三層之分,也就是SaaS,PaaS和IaaS,但這種分層本身主要是從用戶體驗的角度來而言,比如,SaaS主要將應用作為服務提供給客戶,IaaS是主要是將虛擬機等資源作為服務提供給用戶。而本文將從技術(shù)角度來分析和總結(jié)云計算的架構(gòu)。
綜述
基于對現(xiàn)有的一些云計算產(chǎn)品的分析和我個人的一些經(jīng)驗,總結(jié)出一套云計算的架構(gòu),具體請看下圖:
這套架構(gòu)主要可分為四層,其中有三層是橫向的,分別是顯示層、中間件層和基礎設施層,通過這三層技術(shù)能夠提供非常豐富的云計算能力和友好的用戶界面,還有一層是縱向的,稱為管理層,是為了更好地管理和維護橫向的三層而存在的。接下來將一個個地給大家介紹每個層次的作用和屬于這個層次的主要技術(shù)。
顯示層
這層主要是用于以友好的方式展現(xiàn)用戶所需的內(nèi)容,并會利用到下面中間件層提供的多種服務,主要有五種技術(shù):
- HTML:標準的Web頁面技術(shù),現(xiàn)在主要以HTML4為主,但是將要推出的HTML5會在很多方面推動 Web頁面的發(fā)展,比如視頻和本地存儲等方面。
- JavaScript:一種用于Web頁面的動態(tài)語言,通過JavaScript,能夠極大地豐富Web頁面的功能,最流行的JS框架有jQuery和Prototype。
- CSS:主要用于控制Web頁面的外觀,而且能使頁面的內(nèi)容與其表現(xiàn)形式之間進行優(yōu)雅地分離。
- Flash:業(yè)界最常用的RIA(Rich Internet Applications)技術(shù),能夠在現(xiàn)階段提供HTML等技術(shù)所無法提供的基于Web的富應用,而且在用戶體驗方面,非常不錯。
- Silverlight:來自業(yè)界巨擎微軟的RIA技術(shù),雖然其現(xiàn)在市場占有率稍遜于Flash,但由于其可以使用C#來進行編程,所以對開發(fā)者非常友好。
在顯示層,大多數(shù)云計算產(chǎn)品都比較傾向HTML、JavaScript和CSS這對黃金組合,但是Flash和Silverlight等RIA技術(shù)也有一定的用武之地,比如VMware vCloud就采用了基于Flash的Flex技術(shù),而微軟的云計算產(chǎn)品肯定會在今后使用到Silverlight。
中間件層
這層是承上啟下的,它在下面的基礎設施層所提供資源的基礎上提供了多種服務,比如緩存服務和REST服務等,而且這些服務即可用于支撐顯示層,也可以直接讓用戶調(diào)用,并主要有五種技術(shù):
- REST:通過REST技術(shù),能夠非常方便和優(yōu)雅地將中間件層所支撐的部分服務提供給調(diào)用者。
- 多租戶:就是能讓一個單獨的應用實例可以為多個組織服務,而且保持良好的隔離性和安全性,并且通過這種技術(shù),能有效地降低應用的購置和維護成本。
- 并行處理:為了處理海量的數(shù)據(jù),需要利用龐大的X86集群進行規(guī)模巨大的并行處理,Google的MapReduce是這方面的代表之作。
- 應用服務器:在原有的應用服務器的基礎上為云計算做了一定程度的優(yōu)化,比如用于Google App Engine的Jetty應用服務器。
- 分布式緩存:通過分布式緩存技術(shù),不僅能有效地降低對后臺服務器的壓力,而且還能加快相應的反應速度,最著名的分布式緩存例子莫過于Memcached。
對于很多PaaS平臺,比如用于部署Ruby應用的Heroku云平臺,應用服務器和分布式緩存都是必備的,同時REST技術(shù)也常用于對外的接口,多租戶技術(shù)則主要用于SaaS應用的后臺,比如用于支撐Salesforce的Sales Cloud等應用的Force.com多租戶內(nèi)核,而并行處理技術(shù)常被作為單獨的服務推出,比如Amazon的Elastic MapReduce。
基礎設施層
這層作用是為給上面的中間件層或者用戶準備其所需的計算和存儲等資源,主要有四種技術(shù):
- 虛擬化:也可以理解它為基礎設施層的“多租戶”,因為通過虛擬化技術(shù),能夠在一個物理服務器上生成多個虛擬機,并且能在這些虛擬機之間能實現(xiàn)全面的隔離,這樣不僅能減低服務器的購置成本,而且還能同時降低服務器的運維成本,成熟的X86虛擬化技術(shù)有VMware的ESX和開源的Xen。
- 分布式存儲:為了承載海量的數(shù)據(jù),同時也要保證這些數(shù)據(jù)的可管理性,所以需要一整套分布式的存儲系統(tǒng),在這方面,Google的GFS是典范之作。
- 關(guān)系型數(shù)據(jù)庫:基本是在原有的關(guān)系型數(shù)據(jù)庫的基礎上做了擴展和管理等方面的優(yōu)化,使其在云中更適應。
- NoSQL:為了滿足一些關(guān)系數(shù)據(jù)庫所無法滿足的目標,比如支撐海量的數(shù)據(jù)等,一些公司特地設計一批不是基于關(guān)系模型的數(shù)據(jù)庫,比如Google的BigTable和Facebook的Cassandra等。
現(xiàn)在大多數(shù)的IaaS服務都是基于Xen的,比如Amazon的EC2等,但VMware也推出了基于ESX技術(shù)的vCloud,同時業(yè)界也有幾個基于關(guān)系型數(shù)據(jù)庫的云服務,比如Amazon的RDS(Relational Database Service)和Windows Azure SDS(SQL Data Services)等。關(guān)于分布式存儲和NoSQL,它們已經(jīng)被廣泛用于云平臺的后端,比如Google App Engine的Datastore就是基于BigTable和GFS這兩個技術(shù)之上的,而Amazon則推出基于NoSQL技術(shù)的Simple DB。
管理層
這層是為橫向的三層服務的,并給這三層提供多種管理和維護等方面的技術(shù),主要有下面這六個方面:
- 賬號管理:通過良好的賬號管理技術(shù),能夠在安全的條件下方便用戶地登錄,并方便管理員對賬號的管理。
- SLA監(jiān)控:對各個層次運行的虛擬機,服務和應用等進行性能方面的監(jiān)控,以使它們都能在滿足預先設定的 SLA(Service Level Agreement)的情況下運行。
- 計費管理:也就是對每個用戶所消耗的資源等進行統(tǒng)計,來準確地向用戶索取費用。
- 安全管理:對數(shù)據(jù),應用和賬號等IT資源采取全面地保護,使其免受犯罪分子和惡意程序的侵害。
- 負載均衡:通過將流量分發(fā)給一個應用或者服務的多個實例來應對突發(fā)情況,
- 運維管理:主要是使運維操作盡可能地專業(yè)和自動化,從而降低云計算中心的運維成本。
現(xiàn)在的云計算產(chǎn)品在賬號管理,計費管理和負載均衡這三個方面大都表現(xiàn)地不錯,在這方面最突出的例子就是Amazon 的EC2,但可惜的是,大多數(shù)產(chǎn)品在SLA監(jiān)控,安全管理和運維管理等方面還有所欠缺。
舉例
接下來,將以Salesforce的Sales Cloud和Google的App Engine這兩個著名的云計算產(chǎn)品為例,來幫助大家理解本文所提到的云計算架構(gòu):
Salesforce Sales Cloud
也就是之前的Salesforce CRM(客戶關(guān)系管理),屬于云計算中的SaaS層,主要是通過在云中部署可定制化的CRM應用,來讓企業(yè)用戶在很低初始投入的情況下使用上CRM,并且可根據(jù)自身的流程來進行靈活地定制,而且只需接入網(wǎng)絡就能使用。下圖為其在技術(shù)層面上大致的架構(gòu):
圖2:Salesforce Sales Cloud
采用的主要技術(shù):
- 顯示層:基于HTML、JavaScript和CSS這對黃金組合。
- 中間件層:在此層,Salesforce引入了多租戶內(nèi)核和為支撐此內(nèi)核運行而經(jīng)過定制的應用服務器。
- 基礎設施層:雖然在后端還是使用在企業(yè)環(huán)境中很常見的Oracle數(shù)據(jù)庫,但是其為了支撐上層的多租戶內(nèi)核做了很多的優(yōu)化。
- 管理層:在安全管理方面,Salesforce提供了多層保護,并支持SSL加密等技術(shù),除此之外,其還在賬號管理、計費管理和負載均衡這三方面有不錯地支持。
Google App Engine
App Engine屬于云計算中的PaaS層,其主要提供一個平臺,來讓用戶在Google強大的基礎設施上部署和運行應用程序,同時App Engine會根據(jù)應用所承受的負載來對應用所需的資源進行調(diào)整,并免去用戶對應用和服務器等的維護工作,而且支持Java和Python這兩種語言。由于App Engine屬于PaaS平臺,所以關(guān)于顯示層的技術(shù)選擇由應用的自身需要而定,與App Engine無關(guān),關(guān)于App Engine在技術(shù)層面上大致的架構(gòu),具體請看下圖:
采用的主要技術(shù):
- 中間件層:既有經(jīng)過定制化的應用服務器,比如上面已經(jīng)提到過的Jetty,也提供基于Memcached的分布式緩存服務。
- 基礎設施層: 在分布式存儲GFS的基礎上提供了NoSQL數(shù)據(jù)庫BigTable來對應用的數(shù)據(jù)進行持久化。
- 管理層:由于App Engine是基于Google強大的分布式基礎設施,使其在運維管理技術(shù)方面非常出色,同時其計費管理能做到非常細粒度的API級計費,而且App Engine在賬號管理和負載均衡這兩方面都有非常好地支持。
雖然用一張這樣簡單的圖和兩個簡短的例子來描述龐大的云計算整體架構(gòu)的確是略顯寒酸,但是應該能讓大家從技術(shù)角度對云計算的架構(gòu)有一個大致的了解。