一、首先簡單介紹雲計算
對雲計算的定義有多種說法。對於到底什么是雲計算,至少可以找到100種解釋。
現階段廣為接受的是美國國家標准與技術研究院定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的交互。
通俗解釋:雲計算的“雲“就是存在於互聯網上的服務器集群上的資源,它包括硬件資源(服務器、存儲器、CPU等)和軟件資源(如應用軟件、集成開發環境等),本地計算機只需要通過互聯網發送一個需求信息,遠端就會有成千上萬的計算機為你提供需要的資源並將結果返回到本地計算機,這樣,本地計算機幾乎不需要做什么,所有的處理都在雲計算提供商所提供的計算機群來完成。
雲計算是全新的基於互聯網的超級計算理念和模式,實現雲計算需要多種技術結合,並且需要用軟件實現將硬件資源進行虛擬化管理和調度,形成一個巨大的虛擬化資源池,把存儲於個人電腦、移動設備和其他設備上的大量信息和處理器資源集中在一起,協同工作。
二、通用的雲計算體系結構
用戶可通過雲用戶端從列表中選擇所需的服務,其請求通過管理系統調度相應的資源,並通過部署工具分發請求、配置Web應用

雲用戶端:提供雲用戶請求服務的交互界面,也是用戶使用雲的入口,用戶通過Web瀏覽器可以注冊、登錄及定制服務、配置和管理用戶。打開應用實例與本地操作桌面系統一樣。
服務目錄:雲用戶在取得相應權限(付費或其他限制)后可以選擇或定制的服務列表,也可以對已有服務進行退訂的操作,在雲用戶端界面生成相應的圖標或列表的形式展示相關的服務。
管理系統和部署工具:提供管理和服務,能管理雲用戶,能對用戶授權、認證、登錄進行管理,並可以管理可用計算資源和服務,接收用戶發送的請求,根據用戶請求並轉發到相應的相應程序,調度資源智能地部署資源和應用,動態地部署、配置和回收資源。
監控:監控和計量雲系統資源的使用情況,以便做出迅速反應,完成節點同步配置、負載均衡配置和資源監控,確保資源能順利分配給合適的用戶。
服務器集群:虛擬的或物理的服務器,由管理系統管理,負責高並發量的用戶請求處理、大運算量計算處理、用戶Web應用服務,雲數據存儲時采用相應數據切割算法采用並行方式上傳和下載大容量數據。
三、雲計算服務體系結構
在雲計算中,根據其服務集合所提供的服務類型,整個雲計算服務集合被划分成4個層次:應用層、平台層、基礎設施層和虛擬化層。這4個層次每一層都對應着一個子服務集合。
雲計算的服務層次是根據服務類型來划分,與大家熟悉的計算機網絡體系結構中層次的划分不同。在計算機網絡中每個層次都實現一定的功能,層與層之間有一定關聯。而雲計算體系結構中的層次是可以分割的,即某一層次可以單獨完成一項用戶的請求而不需要其他層次為其提供必要的服務和支持
軟件即服務(SaaS)。它是一種通過Internet提供軟件的模式,用戶無需購買軟件,而是向提供商租用基於Web的軟件,來管理企業經營活動。在這種模式下,客戶不再像傳統模式那樣花費大量投資用於硬件、軟件、人員,而只需要支出一定的租賃服務費用,通過互聯網便可以享受到相應的硬件、軟件和維護服務,享有軟件使用權和不斷升級,這是網絡應用最具效益的營運模式。
平台即服務(PasS)。PaaS實際上是指將軟件研發的平台作為一種服務。提供開發環境、服務器平台、硬件資源等服務給用戶,用戶可以在服務提供商的基礎架構基礎上開發開發程序並通過互聯網和其服務器傳給其他用戶。
PaaS能給客戶帶來更高性能、更個性化的服務,也是SaaS今后發展的趨勢,一個SaaS軟件也能給客戶在互聯網上提供開發(自定義)、測試、在線部署應用程序的功能,那么這就叫提供平台服務PaaS
基礎設施即服務(IaaS)。消費者通過Internet可以從完善的計算機基礎設施獲得服務。
硬件即服務結合Paas提供硬件服務,包括服務器集群及硬件檢測等服務。
四、實例:Google的雲計算
Google的雲計算平台能實現大規模分布式計算和應用服務程序,平台包括MapReduce分布式處理技術、Hadoop框架、分布式的文件系統GFS、結構化的BigTable存儲系統以及Google其他的雲計算支撐要素。
MapReduce是Google開發的Java、Python、C++編程工具,用於大規模數據集(大於1TB)的並行運算,也是雲計算的核心技術,一種分布式運算技術,也是簡化的分布式編程模式,適合用來處理大量數據的分布式運算,用於解決問題的程序開發模型,也是開發人員拆解問題的方法。
MapReduce模式的思想是將要執行的問題拆解成Map(映射)和Reduce(化簡)的方式,先通過Map程序將數據切割成不相關的區塊,分配(調度)給大量計算機處理達到分布運算的效果,再通過Reduce程序將結果匯整,輸出開發者需要的結果。
在Google發表MapReduce后,2004年開源社群用Java搭建出一套Hadoop框架,用於實現MapReduce 算法,能夠把應用程序分割成許多很小的工作單元,每個單元可以在任何集群節點上執行或重復執行。
此外,Hadoop 還提供一個分布式文件系統GFS,是一個可擴展、結構化、具備日志的分布式文件系統,支持大型、分布式大數據量的讀寫操作,其容錯性較強。
而分布式數據庫(BigTable)是一個有序、稀疏、多維度的映射表,有良好的伸縮性和高可用性,用來將數據存儲或部署到各個計算節點上。
Google雲計算執行過程
如圖所示的Google雲計算執行過程包括以下步驟。
(1)將要執行的MPI程序復制到Hadoop框架中的Master和每一台Worker機器中。
(2)Master選擇由哪些Worker機器來執行Map程序與Reduce程序。
(3)分配所有的數據區塊到執行Map程序的Worker機器中進行Map(切割成小塊數據)。
(4)將Map后的結果存入Worker機器。
(5)執行Reduce程序的Worker機器,遠程讀取每一份Map結果,進行混合、匯整與排序,同時執行Reduce程序。
(6)將結果輸出給用戶(開發者)。