雲計算:前端
雲計算(cloud computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。狹義雲計算指IT基礎設施的交付和使用模式,指經過網絡以按需、易擴展的方式得到所需資源;廣義雲計算指服務的交付和使用模式,指經過網絡以按需、易擴展的方式得到所需服務。這種服務能夠是IT和軟件、互聯網相關,也但是其餘服務。它意味着計算能力也可做爲一種商品經過互聯網進行流通。web
雲計算平臺:算法
雲計算平臺[1]能夠劃分爲3類:以數據存儲爲主的存儲型雲平臺數據庫
雲平臺編程
,以數據處理爲主的計算型雲平臺以及計算和數據存儲處理兼顧的綜合雲計算平臺。[1]後端
Amazon、google、IBM、microsoft雲計算主要平臺:
Amazon的EC2
Google的App Engine
IBM的Blue Cloud
microsoft的Azure緩存
1、Amazon的彈性計算雲安全
Amazon將本身的彈性計算雲創建在公司內部的大規模集羣計算的平臺上,而用戶能夠經過彈性計算雲的網絡界面去操做在雲計算平臺上運行的各個實例(instance)。用戶使用實例的付費方式由用戶的使用情況決定,即用戶只需爲本身所使用的計算平臺實例付費,運行結束後計費也隨之結束。這裏所說的實例便是由用戶控制的完整的虛擬機運行實例。經過這種方式,用戶沒必要本身去創建雲計算平臺,節省了設備與維護費用性能優化
亞馬遜是互聯網上最大的在線零售商,可是同時也爲獨立開發人員以及開發商提供雲計算服務平臺。亞馬遜將他們的雲計算平臺稱爲彈性計算雲(Elastic Compute Cloud,EC2),它是最先提供遠程雲計算平臺服務的公司。服務器
Amazon EC2 (Elastic Compute Cloud)是一個讓用戶能夠租用雲電腦運行所需應用的系統。EC2藉由提供web服務的方式讓用戶能夠彈性地運行本身的Amazon機器鏡像文件,用戶將能夠在這個虛擬機上運行任何本身想要的軟件或應用程序。
用戶能夠隨時建立、運行、終止本身的虛擬服務器,使用多少時間算多少錢,也所以這個系統是"彈性"使用的。EC2讓用戶能夠控制運行虛擬服務器的主機地理位置,這可讓延遲還有備援性最高。例如,爲了讓系統維護時間最短,用戶能夠在每一個時區都運行本身的虛擬服務器。Amazon以Amazon Web Services (AWS)的品牌提供EC2的服務。
EC2的主要特性:
(1)靈活性:可自行配置運行的實例類型、數量,還能夠選擇實例運行的地理位置。能夠根據用戶的需求隨時改變實例的使用數量。
(2)低成本:按小時計費
(3)安全性:SSH、可配置的防火牆機制、監控等
(4)易用性:用戶能夠根據Amazon提供的模塊自由構建本身的應用程序,同時EC2還會對用戶的服務請求自動進行負載平衡
(5)容錯性:彈性IP
2、Google 的雲計算平臺
Google的硬件條件優點,大型的數據中心、搜索引擎的支柱應用,促進Google雲計算迅速發展。Google的雲計算主要由MapReduce、Google文件系統(GFS)、BigTable組成。它們是Google內部雲計算基礎平臺的3個主要部分。Google 還構建其餘雲計算組件,包括一個領域描述語言以及分佈式鎖服務機制等。Sawzall是一種創建在MapReduce基礎上的領域語言,專門用於大規模的信息處理。Chubby是一個高可用、分佈式數據鎖服務,當有機器失效時,Chubby使用Paxos算法來保證備份。
(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。
3、IBM「藍雲」計算平臺
「藍雲」解決方案是由IBM雲計算中心開發的企業級雲計算解決方案。該解決方案能夠對企業現有的基礎架構進行整合,經過虛擬化技術和自動化技術,構建企業本身擁有的雲計算中心,實現企業硬件資源和軟件資源的統一管理、統一分配、統一部署、統一監控和統一備份,打破應用對資源的獨佔,從而幫助企業實現雲計算理念。
IBM在2007年11月15日推出了藍雲計算平臺,爲客戶帶來即買即用的雲計算平臺。它包括一系列的雲計算產品,使得計算不只僅侷限在本地機器或遠程服務器農場(即服務器集羣),經過架構一個分佈式、可全球訪問的資源結構,使得數據中心在相似於互聯網的環境下運行計算。「藍雲」創建在IBM大規模計算領域的專業技術基礎上,基於由IBM軟件、系統技術和服務支持的開放標準和開源軟件。簡單地說,「藍雲」基於IBM Almaden研究中心(Almaden Research Center)的雲基礎架構,包括Xen和PowerVM虛擬化、Linux操做系統映像以及Hadoop文件系統與並行構建。「藍雲」由IBM Tivoli軟件支持,經過管理服務器來確保基於需求的最佳性能。這包括經過可以跨越多服務器實時分配資源的軟件,爲客戶帶來一種無縫體驗,加速性能並確保在最苛刻環境下的穩定性。藍雲計算平臺由一個數據中心: IBM Tivoli部署管理軟件(Tivoli Provisioning Manager)、IBM Tivoli監控軟件(IBM Tivoli Monitoring)、IBM WebSphere應用服務器、IBM DB2數據庫以及一些虛擬化的組件共同組成。
藍雲的硬件平臺並無什麼特殊的地方,可是藍雲使用的軟件平臺相較於之前的分佈式平臺具備不一樣的地方,主要體如今對與虛擬機的使用以及對於大規模數據處理軟件Apache Hadoop的部署。
(1)「藍雲」中的虛擬化
虛擬化的方式在雲計算中能夠在兩個級別上實現。一個級別是在硬件級別上實現虛擬化。硬件級別的虛擬化可使用IBM p系列的服務器,得到硬件的邏輯分區LPAR。邏輯分區的CPU資源可以經過IBM Enterprise Workload Manager來管理。經過這樣的方式加上在實際使用過程當中的資源分配策略,可以使得相應的資源合理地分配到各個邏輯分區。P系列系統的邏輯分區最小粒度是1/10顆中央處理器(CPU)。
虛擬化的另一個級別能夠經過軟件來得到,在藍雲計算平臺中使用了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將來爲客戶提供的軟件服務會基於雲計算的架構。
4、 微軟雲計算平臺:Windows Azure
Windows Azure是微軟基於雲計算的操做系統,和Azure Services Platform同樣,是微軟「軟件和服務」技術的名稱。Windows Azure的主要目標是爲開發者提供一個平臺,幫助開發可運行在雲服務器、數據中心、Web和PC上的應用程序。雲計算的開發者能使用微軟全球數據中心的儲存、計算能力和網絡基礎服務。Azure服務平臺包括瞭如下主要組件:Windows Azure;Microsoft SQL數據庫服務,Microsoft .Net服務;用於分享、儲存和同步文件的Live服務;針對商業的Microsoft SharePoint和Microsoft Dynamics CRM服務。
The Azure Services Platform (Azure)是一個互聯網級的運行於微軟數據中心繫統上的雲計算服務平臺,它提供操做系統和能夠單獨或者一塊兒使用的開發者服務。Azure是一種靈活和支持互操做的平臺,它能夠被用來建立雲中運行的應用或者經過基於雲的特性來增強現有應用。它開放式的架構給開發者提供了Web應用、互聯設備的應用、我的電腦、服務器、或者提供最優在線複雜解決方案的選擇。
Windows Azure以雲技術爲核心,提供了軟件+服務的計算方法。它是Azure服務平臺的基礎。Azure用於幫助開發者開發能夠跨越雲端和專業數據中心的下一代應用程序,在PC、Web和手機等各類終端間創造完美的用戶體驗。
Azure可以將處於雲端的開發者我的能力,同微軟全球數據中心網絡託管的服務,好比存儲、計算和網絡基礎設施服務,緊密結合起來。這樣,開發者就能夠在「雲端」和「客戶端」同時部署應用,使得企業與用戶都能共享資源。
Windows Azure是專爲在微軟建設的數據中心管理全部服務器,網絡以及存儲資源所開發的一種特殊版本Windows Server操做系統,它具備針對數據中心架構的自我管理(autonomous)機能,能夠自動監控劃分在數據中心數個不一樣的分區(微軟將這些分區稱爲Fault Domain)的全部服務器與存儲資源,自動更新補丁,自動運行虛擬機部署與鏡像備份(Snapshot Backup)等能力,Windows Azure被安裝在數據中心的全部服務器中,而且定時和中控軟件:WindowsAzure Fabric Controller進行溝通,接收指令以及回傳運行狀態數據等等,系統管理人員只要經過Windows Azure Fabric Controller就可以掌握全部服務器的運行狀態,Fabric Controller自己是融合了不少微軟系統管理技術的總成,包含對虛擬機的管理(System Center Virtual Machine Manager),對做業環境的管理(System Center Operation Manager),以及對軟件部署的管理(System Center Configuration Manager)等,在Fabric Controller中被髮揮得淋漓盡致,如此纔可以達成經過Fabric Controller來管理在數據中心中全部服務器的能力。
Azure服務平臺的設計目標是用來幫開發者更容易地建立web和互聯設備的應用程序。它提供了最大限度的靈活性、選擇和使用現有技術鏈接用戶和客戶的控制。Windows Azure服務平臺如今已經包含以下功能:網站、虛擬機、雲服務、移動應用服務、大數據支持以及媒體功能的支持。
(1)網站
容許使用 ASP.NET、PHP 或 Node.js 構建,並使用 FTP、Git 或 TFS 進行快速部署。支持 SQL Database、Caching、CDN及Storage。
(2)Virtual Machines
在Windows Azure上您能夠輕鬆部署並運行 Windows Server 和 Linux 虛擬機。遷移應用程序和基礎結構,而無需更改現有代碼。支持 Windows Virtual Machines、Linux Virtual Machines、Storage、Virtual Network、 Identity等功能。
(3)Cloud Services
是Windows Azure 中的企業級雲平臺,使用富平臺即服務 (PaaS) 環境建立高度可用的且可無限縮放的應用程序和服務。支持多層方案、自動化部署和靈活縮放。支持Cloud Services、SQL Database、Caching、Business Analytics、Service Bus、Identity
(4)Mobile 服務
是Windows Azure提供的移動應用程序的完整後端解決方案,加速鏈接的客戶端應用程序開發。在幾分鐘內併入結構化存儲、用戶身份驗證和推送通知。支持SQL Database、Mobile 服務。
(5)大型數據處理
Windows Azure 提供的海量數據處理能力,能夠從數據中獲取可執行洞察力,利用徹底兼容的企業準備就緒 Hadoop 服務。PaaS 產品/服務提供了簡單的管理,並與 Active Directory 和 System Center 集成。支持Hadoop、Business Analytics、Storage、SQL Database、及在線商店 Marketplace。
(6)Media 媒體支持
支持插入、編碼、保護、流式處理,能夠在雲中建立、管理和分發媒體。此 PaaS 產品/服務提供從編碼到內容保護再到流式處理和分析支持的全部內容。支持CDN及Storage存儲。