本文原載於InfoQ中文站,版權全部,原文爲從技術角度剖析雲計算的架構,如需轉載,請務必附帶本聲明,謝謝。
在這裏也要稍微謝謝InfoQ霍主編,若是不是他的堅持,這篇文章也不會像如今這樣成熟,還有,InfoQ自己也是一個比較高端的技術網站,爲Java、.NET、Ruby、SOA、敏捷、架構等領域提供及時而有深度的資訊、高端技術大會如QCon、免費迷你書下載如《架構師》等,你們若是沒去過的話,請點擊此!
在寫
《剖析雲計算》(編者注:InfoQ中文站隨後推出該Minibook)一書的時候,我發現雖然雲計算自己有三層之分,也就是SaaS,PaaS和IaaS,但這種分層自己主要是從用戶體驗的角度來而言,好比,SaaS主要將應用做爲服務提供給客戶,IaaS是主要是將虛擬機等資源做爲服務提供給用戶。而本文將從技術角度來分析和總結雲計算的架構。
綜述
基於對現有的一些雲計算產品的分析和我我的的一些經驗,總結出一套雲計算的架構,具體請看下圖:
圖1. 雲計算的架構
這套架構主要可分爲四層,其中有三層是橫向的,分別是顯示層、中間件層和基礎設施層,經過這三層技術可以提供很是豐富的雲計算能力和友好的用戶界面,還有一層是縱向的,稱爲管理層,是爲了更好地管理和維護橫向的三層而存在的。接下來將一個個地給你們介紹每一個層次的做用和屬於這個層次的主要技術。
顯示層
這層主要是用於以友好的方式展示用戶所需的內容,並會利用到下面中間件層提供的多種服務,主要有五種技術:
- HTML:標準的Web頁面技術,如今主要以HTML4爲主,可是將要推出的HTML5會在不少方面推進Web頁面的發展,好比視頻和本地存儲等方面。
- JavaScript:一種用於Web頁面的動態語言,經過JavaScript,可以極大地豐富Web頁面的功能,最流行的JS框架有jQuery和Prototype。
- CSS:主要用於控制Web頁面的外觀,並且能使頁面的內容與其表現形式之間進行優雅地分離。
- Flash:業界最經常使用的RIA(Rich Internet Applications)技術,可以在現階段提供HTML等技術所沒法提供的基於Web的富應用,並且在用戶體驗方面,很是不錯。
- Silverlight:來自業界巨擎微軟的RIA技術,雖然其如今市場佔有率稍遜於Flash,但因爲其可使用C#來進行編程,因此對開發者很是友好。
在顯示層,大多數雲計算產品都比較傾向HTML,、JavaScript和CSS這對黃金組合,可是Flash和Silverlight等RIA技術也有必定的用武之地,好比VMware vCloud就採用了基於Flash的Flex技術,而微軟的雲計算產品確定會在從此使用到Silverlight。
中間件層
這層是承上啓下的,它在下面的基礎設施層所提供資源的基礎上提供了多種服務,好比緩存服務和REST服務等,並且這些服務便可用於支撐顯示層,也能夠直接讓用戶調用,並主要有五種技術:
- REST:經過REST技術,可以很是方便和優雅地將中間件層所支撐的部分服務提供給調用者。
- 多租戶:就是能讓一個單獨的應用實例能夠爲多個組織服務,並且保持良好的隔離性和安全性,而且經過這種技術,能有效地下降應用的購置和維護成本。
- 並行處理:爲了處理海量的數據,須要利用龐大的X86集羣進行規模巨大的並行處理,Google的MapReduce是這方面的表明之做。
- 應用服務器:在原有的應用服務器的基礎上爲雲計算作了必定程度的優化,好比用於Google App Engine的Jetty應用服務器。
- 分佈式緩存:經過分佈式緩存技術,不只能有效地下降對後臺服務器的壓力,並且還能加快相應的反應速度,最著名的分佈式緩存例子莫過於Memcached。
對於不少PaaS平臺,好比用於部署Ruby應用的Heroku雲平臺,應用服務器和分佈式緩存都是必備的,同時REST技術也經常使用於對外的接口,多租戶技術則主要用於SaaS應用的後臺,好比用於支撐Salesforce的Sales Cloud等應用的Force.com多租戶內核,而並行處理技術常被做爲單獨的服務推出,好比Amazon的Elastic MapReduce。
基礎設施層
這層做用是爲給上面的中間件層或者用戶準備其所需的計算和存儲等資源,主要有四種技術:
- 虛擬化:也能夠理解它爲基礎設施層的「多租戶」,由於經過虛擬化技術,可以在一個物理服務器上生成多個虛擬機,而且能在這些虛擬機之間能實現全面的隔離,這樣不只能減低服務器的購置成本,並且還能同時下降服務器的運維成本,成熟的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)等。關於分佈式存儲和NoSQL,它們已經被普遍用於雲平臺的後端,好比Google App Engine的Datastore就是基於BigTable和GFS這兩個技術之上的,而Amazon則推出基於NoSQL技術的Simple DB。
管理層
這層是爲橫向的三層服務的,並給這三層提供多種管理和維護等方面的技術,主要有下面這六個方面:
- 賬號管理:經過良好的賬號管理技術,可以在安全的條件下方便用戶地登陸,並方便管理員對賬號的管理。
- SLA監控:對各個層次運行的虛擬機,服務和應用等進行性能方面的監控,以使它們都能在知足預先設定的SLA(Service Level Agreement)的狀況下運行。
- 計費管理:也就是對每一個用戶所消耗的資源等進行統計,來準確地向用戶索取費用。
- 安全管理:對數據,應用和賬號等IT資源採起全面地保護,使其免受犯罪分子和惡意程序的侵害。
- 負載均衡:經過將流量分發給一個應用或者服務的多個實例來應對突發狀況。
- 運維管理:主要是使運維操做盡量地專業和自動化,從而下降雲計算中心的運維成本。
如今的雲計算產品在賬號管理,計費管理和負載均衡這三個方面大都表現地不錯,在這方面最突出的例子就是Amazon 的EC2,但惋惜的是,大多數產品在SLA監控,安全管理和運維管理等方面還有所欠缺。
舉例
接下來,將以Salesforce的Sales Cloud和Google的App Engine這兩個著名的雲計算產品爲例,來幫助你們理解本文所提到的雲計算架構:
Salesforce Sales Cloud
也就是以前的Salesforce CRM(客戶關係管理),屬於雲計算中的SaaS層,主要是經過在雲中部署可定製化的CRM應用,來讓企業用戶在很低初始投入的狀況下使用上CRM,而且可根據自身的流程來進行靈活地定製,並且只需接入網絡就能使用。下圖爲其在技術層面上大體的架構:
圖2. Salesforce Sales Cloud
採用的主要技術:
- 顯示層:基於HTML、JavaScript和CSS這對黃金組合。
- 中間件層:在此層,Salesforce引入了多租戶內核和爲支撐此內核運行而通過定製的應用服務器。
- 基礎設施層:雖然在後端仍是使用在企業環境中很常見的Oracle數據庫,可是其爲了支撐上層的多租戶內核作了不少的優化。
- 管理層:在安全管理方面,Salesforce提供了多層保護,並支持SSL加密等技術,除此以外,其還在賬號管理、計費管理和負載均衡這三方面有不錯地支持。
Google App Engine
App Engine屬於雲計算中的PaaS層,其主要提供一個平臺,來讓用戶在Google強大的基礎設施上部署和運行應用程序,同時App Engine會根據應用所承受的負載來對應用所需的資源進行調整,並免去用戶對應用和服務器等的維護工做,並且支持Java和Python這兩種語言。因爲App Engine屬於PaaS平臺,因此關於顯示層的技術選擇由應用的自身須要而定,與App Engine無關,關於App Engine在技術層面上大體的架構,具體請看下圖:
圖3. Google App Engine
採用的主要技術:
- 中間件層:既有通過定製化的應用服務器,好比上面已經提到過的Jetty,也提供基於Memcached的分佈式緩存服務。
- 基礎設施層: 在分佈式存儲GFS的基礎上提供了NoSQL數據庫BigTable來對應用的數據進行持久化。
- 管理層:因爲App Engine是基於Google強大的分佈式基礎設施,使其在運維管理技術方面很是出色,同時其計費管理能作到很是細粒度的API級計費,並且App Engine在賬號管理和負載均衡這兩方面都有很是好地支持。
雖然用一張這樣簡單的圖和兩個簡短的例子來描述龐大的雲計算總體架構的確是略顯寒酸,可是應該能讓你們從技術角度對雲計算的架構有一個大體的瞭解。