雲計算:
雲計算平臺:
Amazon、google、IBM、microsoft雲計算主要平臺:
Amazon的EC2
Google的App Engine
IBM的Blue Cloud
microsoft的Azure
一、Amazon的彈性計算雲
Amazon EC2 (Elastic Compute Cloud)是一個讓用戶可以租用雲電腦運行所需應用的系統。EC2藉由提供web服務的方式讓用戶可以彈性地運行自己的Amazon機器鏡像文件,用戶將可以在這個虛擬機上運行任何自己想要的軟件或應用程序。
用戶可以隨時創建、運行、終止自己的虛擬服務器,使用多少時間算多少錢,也因此這個系統是"彈性"使用的。EC2讓用戶可以控制運行虛擬服務器的主機地理位置,這可以讓延遲還有備援性最高。例如,爲了讓系統維護時間最短,用戶可以在每個時區都運行自己的虛擬服務器。Amazon以Amazon Web Services (AWS)的品牌提供EC2的服務。
二、Google 的雲計算平臺
(1)Google File System 文件系統
爲了滿足Google迅速增長的數據處理需求,Google設計並實現了Google文件系統(GFS,Google File System)。GFS與過去的分佈式文件系統擁有許多相同的目標,例如性能、可伸縮性、可靠性以及可用性。然而,它的設計還受到Google應用負載和技術環境的影響。主要體現在以下四個方面:
1. 集羣中的節點失效是一種常態,而不是一種異常。由於參與運算與處理的節點數目非常龐大,通常會使用上千個節點進行共同計算,因此,每時每刻總會有節點處在失效狀態。需要通過軟件程序模塊,監視系統的動態運行狀況,偵測錯誤,並且將容錯以及自動恢復系統集成在系統中。
2. Google系統中的文件大小與通常文件系統中的文件大小概念不一樣,文件大小通常以G字節計。另外文件系統中的文件含義與通常文件不同,一個大文件可能包含大量數目的通常意義上的小文件。所以,設計預期和參數,例如I/O操作和塊尺寸都要重新考慮。
3. Google文件系統中的文件讀寫模式和傳統的文件系統不同。在Google應用(如搜索)中對大部分文件的修改,不是覆蓋原有數據,而是在文件尾追加新數據。對文件的隨機寫是幾乎不存在的。對於這類巨大文件的訪問模式,客戶端對數據塊緩存失去了意義,追加操作成爲性能優化和原子性(把一個事務看做是一個程序。它要麼被完整地執行,要麼完全不執行)保證的焦點。
4. 文件系統的某些具體操作不再透明,而且需要應用程序的協助完成,應用程序和文件系統API的協同設計提高了整個系統的靈活性。例如,放鬆了對GFS一致性模型的要求,這樣不用加重應用程序的負擔,就大大簡化了文件系統的設計。還引入了原子性的追加操作,這樣多個客戶端同時進行追加的時候,就不需要額外的同步操作了。
(2)MapReduce分佈式編程環境
爲了讓內部非分佈式系統方向背景的員工能夠有機會將應用程序建立在大規模的集羣基礎之上,Google還設計並實現了一套大規模數據處理的編程規範Map/Reduce系統。這樣,非分佈式專業的程序編寫人員也能夠爲大規模的集羣編寫應用程序而不用去顧慮集羣的可靠性、可擴展性等問題。應用程序編寫人員只需要將精力放在應用程序本身,而關於集羣的處理問題則交由平臺來處理。
Map/Reduce通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算,用戶只需要提供自己的Map函數以及Reduce函數就可以在集羣上進行大規模的分佈式數據處理。
(3)分佈式大規模數據庫管理系統BigTable
構建於上述兩項基礎之上的第三個雲計算平臺就是Google關於將數據庫系統擴展到分佈式平臺上的BigTable系統。很多應用程序對於數據的組織還是非常有規則的。一般來說,數據庫對於處理格式化的數據還是非常方便的,但是由於關係數據庫很強的一致性要求,很難將其擴展到很大的規模。爲了處理Google內部大量的格式化以及半格式化數據,Google構建了弱一致性要求的大規模數據庫系統BigTable。
三、IBM“藍雲”計算平臺
“藍雲”解決方案是由IBM雲計算中心開發的企業級雲計算解決方案。該解決方案可以對企業現有的基礎架構進行整合,通過虛擬化技術和自動化技術,構建企業自己擁有的雲計算中心,實現企業硬件資源和軟件資源的統一管理、統一分配、統一部署、統一監控和統一備份,打破應用對資源的獨佔,從而幫助企業實現雲計算理念。
(1)“藍雲”中的虛擬化
虛擬化的另外一個級別可以通過軟件來獲得,在藍雲計算平臺中使用了Xen虛擬化軟件。Xen也是一個開源的虛擬化軟件,能夠在現有的Linux基礎之上運行另外一個操作系統,並通過虛擬機的方式靈活地進行軟件部署和操作。
通過虛擬機的方式進行雲計算資源的管理具有特殊的好處。由於虛擬機是一類特殊的軟件,能夠完全模擬硬件的執行,因此能夠在上面運行操作系統,進而能夠保留一整套運行環境語義。這樣,可以將整個執行環境通過打包的方式傳輸到其他物理節點上,這樣就能夠使得執行環境與物理環境隔離,方便整個應用程序模塊的部署。總體上來說,通過將虛擬化的技術應用到雲計算的平臺,可以獲得一些良好的特性:
1. 雲計算的管理平臺能夠動態地將計算平臺定位到所需要的物理平臺上,而無需停止運行在虛擬機平臺上的應用程序,這比採用虛擬化技術之前的進程遷移方法更加靈活。
2. 能夠更加有效率地使用主機資源,將多個負載不是很重的虛擬機計算節點合併到同一個物理節點上,從而能夠關閉空閒的物理節點,達到節約電能的目的。
3. 通過虛擬機在不同物理節點上的動態遷移,能夠獲得與應用無關的負載平衡性能。由於虛擬機包含了整個虛擬化的操作系統以及應用程序環境,因此在進行遷移的時候帶着整個運行環境,達到了與應用無關的目的。
4. 在部署上也更加靈活,即可以將虛擬機直接部署到物理計算平臺當中。
(2)“藍雲”中的存儲結構
藍雲計算平臺中的存儲體系結構對於雲計算來說也是非常重要的,無論是操作系統,服務程序還是用戶應用程序的數據都保存在存儲體系中。雲計算並不排斥任何一種有用的存儲體系結構,而是需要跟應用程序的需求結合起來獲得最好的性能提升。總體上來說,雲計算的存儲體系結構包含類似於Google File System的集羣文件系統以及基於塊設備方式的存儲區域網絡SAN兩種方式。
在設計雲計算平臺的存儲體系結構的時候,不僅僅是需要考慮存儲的容量。實際上隨着硬盤容量的不斷擴充以及硬盤價格的不斷下降,使用當前的磁盤技術,可以很容易通過使用多個磁盤的方式獲得很大的磁盤容量。相較於磁盤的容量,在雲計算平臺的存儲中,磁盤數據的讀寫速度是一個更重要的問題。單個磁盤的速度很有可能限制應用程序對於數據的訪問,因此在實際使用的過程中,需要將數據分佈到多個磁盤之上,並且通過對於多個磁盤的同時讀寫以達到提高速度的目的。在雲計算平臺中,數據如何放置是一個非常重要的問題,在實際使用的過程中,需要將數據分配到多個節點的多個磁盤當中。而能夠達到這一目的的存儲技術趨勢當前有兩種方式,一種是使用類似於Google File System的集羣文件系統,另外一種是基於塊設備的存儲區域網絡SAN系統。
Google文件系統在前面已經做過一定的描述。在IBM的藍雲計算平臺中使用的是它的開源實現Hadoop HDFS (Hadoop Distributed File System)。這種使用方式將磁盤附着於節點的內部,並且爲外部提供一個共享的分佈式文件系統空間,並且在文件系統級別做冗餘以提高可靠性。在合適的分佈式數據處理模式下,這種方式能夠提高總體的數據處理效率。Google文件系統的這種架構與SAN系統有很大的不同。
SAN系統也是雲計算平臺的另外一種存儲體系結構選擇,在藍雲平臺上也有一定的體現,IBM也提供SAN的平臺能夠接入到藍雲計算平臺中。
SAN系統是在存儲端構建存儲的網絡,將多個存儲設備構成一個存儲區域網絡。前端的主機可以通過網絡的方式訪問後端的存儲設備。而且,由於提供了塊設備的訪問方式,與前端操作系統無關。在SAN連接方式上,可以有多種選擇。一種選擇是使用光纖網絡,能夠操作快速的光纖磁盤,適合於對性能與可靠性要求比較高的場所。另外一種選擇是使用以太網,採取iSCSI協議,能夠運行在普通的局域網環境下,從而降低了成本。由於存儲區域網絡中的磁盤設備並沒有與某一臺主機綁定在一起,而是採用了非常靈活的結構,因此對於主機來說可以訪問多個磁盤設備,從而能夠獲得性能的提升。在存儲區域網絡中,使用虛擬化的引擎來進行邏輯設備到物理設備的映射,管理前端主機到後端數據的讀寫。因此虛擬化引擎是存儲區域網絡中非常重要的管理模塊。
SAN系統與分佈式文件系統例如Google File System並不是相互對立的系統,而是在構建集羣系統的時候可供選擇的兩種方案。其中,在選擇SAN系統的時候,爲了應用程序的讀寫,還需要爲應用程序提供上層的語義接口,此時就需要在SAN之上構建文件系統。而Google File System正好是一個分佈式的文件系統,因此能夠建立在SAN系統之上。總體來說,SAN與分佈式文件系統都可以提供類似的功能,例如對於出錯的處理等。至於如何使用還是需要由建立在雲計算平臺之上的應用程序來決定。
與Google不同的是,IBM並沒有基於雲計算提供外部可訪問的網絡應用程序。這主要是由於IBM並不是一個網絡公司,而是一個IT的服務公司。當然,IBM內部以及IBM未來爲客戶提供的軟件服務會基於雲計算的架構。
四、
The Azure Services Platform (Azure)是一個互聯網級的運行於微軟數據中心繫統上的雲計算服務平臺,它提供操作系統和可以單獨或者一起使用的開發者服務。Azure是一種靈活和支持互操作的平臺,它可以被用來創建雲中運行的應用或者通過基於雲的特性來加強現有應用。它開放式的架構給開發者提供了Web應用、互聯設備的應用、個人電腦、服務器、或者提供最優在線複雜解決方案的選擇。
Windows Azure以雲技術爲核心,提供了軟件+服務的計算方法。它是Azure服務平臺的基礎。Azure用於幫助開發者開發可以跨越雲端和專業數據中心的下一代應用程序,在PC、Web和手機等各種終端間創造完美的用戶體驗。
Azure能夠將處於雲端的開發者個人能力,同微軟全球數據中心網絡託管的服務,比如存儲、計算和網絡基礎設施服務,緊密結合起來。這樣,開發者就可以在“雲端”和“客戶端”同時部署應用,使得企業與用戶都能共享資源。
允許使用 ASP.NET、PHP 或 Node.js 構建,並使用 FTP、Git 或 TFS 進行快速部署。支持 SQL Database、Caching、CDN及Storage。
在Windows Azure上您可以輕鬆部署並運行 Windows Server 和 Linux 虛擬機。遷移應用程序和基礎結構,而無需更改現有代碼。支持 Windows Virtual Machines、Linux Virtual Machines、Storage、Virtual Network、 Identity等功能。
是Windows Azure 中的企業級雲平臺,使用富平臺即服務 (PaaS) 環境創建高度可用的且可無限縮放的應用程序和服務。支持多層方案、自動化部署和靈活縮放。支持Cloud Services、SQL Database、Caching、Business Analytics、Service Bus、Identity
是Windows Azure提供的移動應用程序的完整後端解決方案,加速連接的客戶端應用程序開發。在幾分鐘內併入結構化存儲、用戶身份驗證和推送通知。支持SQL Database、Mobile 服務。
Windows Azure 提供的海量數據處理能力,可以從數據中獲取可執行洞察力,利用完全兼容的企業準備就緒 Hadoop 服務。PaaS 產品/服務提供了簡單的管理,並與 Active Directory 和 System Center 集成。支持Hadoop、Business Analytics、Storage、SQL Database、及在線商店 Marketplace。
支持插入、編碼、保護、流式處理,可以在雲中創建、管理和分發媒體。此 PaaS 產品/服務提供從編碼到內容保護再到流式處理和分析支持的所有內容。支持CDN及Storage存儲。