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

圖2. Salesforce Sales Cloud
采用的主要技術(shù):
- 顯示層:基于HTML、JavaScript和CSS這對黃金組合。
- 中間件層:在此層,Salesforce引入了多租戶內(nèi)核和為支撐此內(nèi)核運(yùn)行而經(jīng)過定制的應(yīng)用服務(wù)器。
- 基礎(chǔ)設(shè)施層:雖然在后端還是使用在企業(yè)環(huán)境中很常見的Oracle數(shù)據(jù)庫,但是其為了支撐上層的多租戶內(nèi)核做了很多的優(yōu)化。
- 管理層:在安全管理方面,Salesforce提供了多層保護(hù),并支持SSL加密等技術(shù),除此之外,其還在帳號(hào)管理、計(jì)費(fèi)管理和負(fù)載均衡這三方面有不錯(cuò)地支持。
Google App Engine
App Engine屬于云計(jì)算中的PaaS層,其主要提供一個(gè)平臺(tái),來讓用戶在Google強(qiáng)大的基礎(chǔ)設(shè)施上部署和運(yùn)行應(yīng)用程序,同時(shí)App Engine會(huì)根據(jù)應(yīng)用所承受的負(fù)載來對應(yīng)用所需的資源進(jìn)行調(diào)整,并免去用戶對應(yīng)用和服務(wù)器等的維護(hù)工作,而且支持Java和Python這兩種語言。由于App Engine屬于PaaS平臺(tái),所以關(guān)于顯示層的技術(shù)選擇由應(yīng)用的自身需要而定,與App Engine無關(guān),關(guān)于App Engine在技術(shù)層面上大致的架構(gòu),具體請看下圖:

圖3. Google App Engine
采用的主要技術(shù):
- 中間件層:既有經(jīng)過定制化的應(yīng)用服務(wù)器,比如上面已經(jīng)提到過的Jetty,也提供基于Memcached的分布式緩存服務(wù)。
- 基礎(chǔ)設(shè)施層: 在分布式存儲(chǔ)GFS的基礎(chǔ)上提供了NoSQL數(shù)據(jù)庫BigTable來對應(yīng)用的數(shù)據(jù)進(jìn)行持久化。
- 管理層:由于App Engine是基于Google強(qiáng)大的分布式基礎(chǔ)設(shè)施,使其在運(yùn)維管理技術(shù)方面非常出色,同時(shí)其計(jì)費(fèi)管理能做到非常細(xì)粒度的API級(jí)計(jì)費(fèi),而且App Engine在帳號(hào)管理和負(fù)載均衡這兩方面都有非常好地支持。
雖然用一張這樣簡單的圖和兩個(gè)簡短的例子來描述龐大的云計(jì)算整體架構(gòu)的確是略顯寒酸,但是應(yīng)該能讓大家從技術(shù)角度對云計(jì)算的架構(gòu)有一個(gè)大致的了解。