該學習筆記取自《云計算原理及實戰》一書,關于具體描述可以查閱原本書籍。
云計算被視為“革命性的計算模型”,因為它通過互聯網自由流通使超級計算能力成為可能。
2006年8月,在圣何塞舉辦的SES(捜索引擎戰略)大會上,時任谷歌(Google)公司首席執行官(CEO)的施密特(Eric Schmidt)在回答一個有關互聯網的問題時提出了“云計算”這個概念。在施密特態度鮮明地提出“云計算”一詞的幾周后,亞馬遜(Amazon)公司推出了EC2計算云服務。云計算自此出現,從此之后各種有關“云計算”的概念層出不窮,“云計算”開始流行。
云計算的理論和嘗試已經有多年歷史,從J2EE和.net架構,到“按需計算”(On-demand computing)、“效能計算”(Utility computing)、“軟件即服務”(Software as a service)等新理念、新模式,其實都可看作是對云計算的不同解讀或云計算發展的不同階段。
在流量和服務器數量都高速增長的情況下,“一個能夠與網頁增長速度保持同步的系統”必不可少,這也是谷歌三篇有關分布式的論文(分別為Google File System分布式存儲系統、MapReducefen分布式處理技術和BigTable分布式數據庫)之所以具有重要指導意義的原因:一切均出自實踐。
業界有一種很流行的說法,將云計算模式比喻為發電廠集中供電的模式。也就是說,通過云計算,用戶可以不必去購買新的服務器,更不用去部署軟件,就可以得到應用環境或者應用本身。
1.1.1 云計算的定義
由于云計算是一個概念,而不是指某項具體的技術或標準,于是不同的人從不同的角度出發就會有不同的理解。
1.分析師和分析機構對云計算的理解
早期的美林證券(Merrill Lynch)認為,云計算是通過互聯網從集中的服務器交付個人應用(E-mail、文檔處理和演示文稿)和商業應用(銷售管理、客戶服務和財務管理)。
《信息周刊》(Information Week)的定義則更加寬泛:云計算是一個環境,其中任何的IT資源都可以以服務的形式提供。
《華爾街日報》(The Wall street Journal)認為云計算使企業可以通過互聯網從超大數據中心獲得計算能力、存儲空間、軟件應用和數據。
2.不同IT廠商對云計算的理解
IBM 公司認為,云計算是一種計算風格,其基礎是用公共或私有網絡實現服務、軟件及處理能力的交付,也是一種實現基礎設施共享的方式,利用資源池將公共或私有網絡連接在一起為用戶提供IT服務。
Google公司的前CEO施密特認為,云計算把計算和數據分布在大量的分布式計算機上,這使計算力和存儲獲得了很強的可擴展能力,并使用戶可通過多種接入方式(例如計算機、手機等)方便地接入網絡獲得應用和服務。
Google公司前全球副總裁李開復認為,整個互聯網就是一片美麗的云彩,網民們需要在“云”中方便地連接任何設備、訪問任何信息、自由地創建內容、與朋友分享。
微軟的提法一直是“云 + 端”。微軟認為,未來的計算模式是云端計算,而不是單純的云計算。這里的“端”是指客戶端,也就是說云計算一定要有客戶端來配合。微軟公司前全球資深副總裁張亞勤博士認為:“從經濟學角度來說,帶寬、存儲和計算不會是免費的,消費者需要找到符合他們需要的模式,因而端的計算一定是存在的。
3.學術界對云計算的理解
“網格計算之父”伊安·福斯特(Ian Foster)認為,云計算是一種大規模分布式計算的模式,其推動力來自規模化所帶來的經濟性。他認為云計算的幾個關鍵點是:大規模可擴展性;可以被封裝成一個抽象的實體,并提供不同的服務水平給外部用戶使用;由規模化帶來的經濟性;服務可以被動態配置(通過虛擬化或者其他途徑),按需交付。
來自加州大學伯克利分校的一篇技術報告指出,云計算既是指透過互聯網交付的應用,也是指在數據中心中提供這些服務的硬件和系統軟件。
自維基百科(Wikipedia)的定義基本涵蓋了各個方面的看法:“云計算是一種計算模式,在這種模式下,動態可擴展而且通常是虛擬化的資源通過互聯網以服務的形式提供出來。
曾在IBM任職的朱近之在《智慧的云計算:物聯網的平臺》定義如下:“云計算是一種計算模式:把 IT 資源、數據和應用作為服務通過網絡提供給用戶。在計算機流程圖中,互聯網常以一個云狀圖案來表示,用來表示對復雜基礎設施的一種抽象。云計算正是對復雜的計算基礎設施的一個抽象。
美國國家標準技術學院(NIST)給云計算提供的定義:“云計算是一種模型,這個模型可以方便地通過網絡訪問一個可配置的計算資源(例如網絡、服務器、存儲設備、應用程序以及服務等)的公共集。這些資源可以被快速提供并發布,同時最小化管理成本以及服務供應商的干預。”上述定義應該算是比較清晰和恰當的,也是本書所采用的定義。
從計算發生的地方來看,最簡單地回答是:云計算將軟件的運行從平常情況下的個人計算機 (或桌面計算機)搬到了云端,也就是位于某個“神秘”地理位置上的服務器或服務器集群上。
從資源供應的形式來看,云計算是一種服務計算,即所有的IT資源,包括硬件、軟件、架構都被當作一種服務來銷售并收取費用。對于云計算來說,其提供的主要服務是三種:基礎設施即服務(IaaS),提供硬件資源,類似于傳統模式下的CPU、存儲器和 I/O;平臺即服務(PaaS),提供軟件運行的環境,類似于傳統編程模式下的操作系統和編程框架;軟件即服務(SaaS),提供應用軟件功能,類似于傳統模式下的應用軟件。
云計算將一切資源作為服務,按照所用即所付的方式進行消費正是主機時代的特征。在主機時代,所有用戶通過顯示終端和網線與主機連接,按照消費的CPU時間和存儲容量進行計費。所不同的是,在主機模式下,計算發生在一臺主機上;在云計算下,計算發生在服務器集群或者數據中心。 概括來說,云計算是各種虛擬化、效用計算、服務計算、網格計算、自動計算等概念的混合演進并集大成之結果。
1.1.2 計算模式的演進過程
下圖從計算模式的角度展現了云計算的發展。
1.主機系統與集中計算
1964 年,世界上第一臺大型主機System/360誕生,引發了計算機和商業領域里的一場革命。大型主機的一個特點就是資源集中,計算、存儲集中,這是集中計算模式的典型代表。主機的用戶大都采用終端的模式與主機連接,本地不進行數據的處理和存儲,也不需要進行諸如補丁管理、防火墻保護和病毒防范等措施。
云計算與主機計算一個重要的區別是其面向的用戶群體不同。主機計算的用戶通常是大型機構,并為關鍵應用所準備,如人口普查、消費統計、ERP、財務交易等;而云計算則面向普羅大眾,可以運行各種各樣的大、中、小型應用程序。
2.效用計算
主機的購買成本高昂,一些用戶只能租用,而不是購買。于是有人提出了效用計算的概念,目標是把服務器及存儲系統打包給用戶使用,按照用戶實際使用的資源量對用戶進行計費。效用計算中的關鍵技術就是資源使用計量,它保證了按使用付費的準確性。此種計算范式的最大優勢是用戶無須提前付費,也無須將IT資源買斷。
3.客戶機/服務器模式
從服務的訪問模式上看,云計算確實有**客戶機/服務器模式(Client/Server)**的影子:客戶通過某種設備與遠處的云端聯系在一起,使用運行在云端的應用軟件所提供的服務。不過,在這種形似的背后,云計算提供的這個“遠程服務器”具有無限的計算能力、無限的存儲容量,且從來不會崩潰,幾乎沒有什么軟件不能運行在其上。
4.集群計算
服務器集群計算是用緊密耦合的一組計算機來達到單個目的,而云計算是根據用戶需要提供不同支持來達到不同的目的。此外,服務器集群計算是有限度的分布式計算,其面臨的挑戰不如云計算所面臨的分布式計算復雜。另外,集群計算并不考慮交互式的終端用戶,而云計算恰恰需要考慮。顯然,云計算包含了服務器集群計算的元素。
5.服務計算
服務計算也稱為面向服務的計算,其更為準確的名稱是軟件即服務(SaaS)。服務計算與云計算仍然存在重要區別。首先,雖然服務計算一般在互聯網上實現,但服務計算不一定必須在云中提供,單臺服務器、小規模服務器集群、有限范圍的網絡平臺就可以提供服務計算;其次,服務計算一般僅限于軟件即服務,而云計算將服務的概念推廣到了硬件和運行環境,囊括了基礎設施即服務、平臺即服務的概念。
6.個人計算機與桌面計算
個人計算機具備自己獨立的存儲空間和處理能力,雖然性能有限,但是對于個人用戶來說,在一段時間內也夠用了。個人計算機可以完成絕大部分的個人計算需求,這種模式也叫桌面計算。
在互聯網出現之前,軟件和操作系統的銷售模式都是授權(License)模式,也就是通過軟盤或者光盤,將軟件代碼復制到計算機之上,而每一次復制,都需要向軟件開發商付費。升級的過程有時會很煩瑣。對于一個大型企業來講,它的IT部門可能需要管理上百種軟件、上千個版本、上萬臺計算機,每個版本的軟件都需要維護,包括問題追蹤、補丁管理、版本升級和數據備份等,這絕非一項簡單的工作。
7.分布式計算
個人計算機沒有解決數據共享和信息交換的問題,于是出現了網絡——局域網及后來的互聯網。網絡把大量分布在不同地理位置的計算機連接在一起,有個人計算機,也有服務器。
分布式計算依賴于分布式系統。分布式系統由通過網絡連接的多臺計算機組成。每臺計算機都擁有獨立的處理器及內存。這些計算機互相協作,共同完成一個目標或者計算任務。
8.網格計算
計算機的一個主要功能就是復雜科學計算,而這一領域的主宰就是超級計算機。以超級計算機為中心的計算模式存在明顯不足:造價極高,通常只有一些國家級的部門(如航天、氣象和軍工等部門)才有能力配置這樣的設備。隨著人們越來越需要數據處理能力更強大的計算機,人們開始尋找一種造價低廉而數據處理能力超強的計算模式,最終科學家們找到了答案,那就是網格計算。
它是伴隨著互聯網而迅速發展起來的、專門針對復雜科學計算的新型計算模式。這種計算模式利用互聯網把分散在不同地理位置的計算機組織成一臺“虛擬的超級計算機”,其中每一臺參與計算的計算機就是一個“節點”,而整個計算是由成千上萬個“節點”組成的“一堆網格”,所以這種計算方式叫網格計算。為了進行一項計算,網格計算首先把要計算的數據分割成若干“小片”,然后將這些小片分發給分布的每臺計算機。每臺計算機執行它所分配到的任務片段,待任務計算結束后將計算結果返回給計算任務的總控節點。
網格計算其核心是試圖去解決一個巨大的單一的計算問題,這就限制了它的應用場景。在非科研領域,只有有限的用戶需要用到巨型的計算資源。從某種程度來看,網格要做的很多事情也是云計算要做的事情,但網格計算卻不能算是云計算。首先,網格計算主要針對科學計算和仿真,而云計算則是通用的。其次,網格不考慮交互式終端用戶,而云計算要考慮。
9.SaaS
SaaS全稱為Software as a service,中文譯為“軟件即服務”,它是一種通過Internet來提供軟件的模式,廠商將應用軟件統一部署在自己的服務器上,客戶可以根據自己的實際需求,通過互聯網向廠商訂購所需的軟件應用服務,按定購的服務多少和時間長短向廠商支付費用,并通過互聯網獲得廠商提供的服務。
10.云計算的出現
縱觀計算模式的演變歷史,可以總結為:集中─分散─集中。云計算提供的基本服務有三種:一是硬件資源服務;二是運行環境服務;三是應用軟件服務。那么用戶也可用至少三種方式來使用云平臺:一是利用云計算(平臺)來保存數據(使用云環境所提供的硬件資源);二是在云計算平臺上運行程序(使用云環境的運行環境);三是使用云平臺上面的應用服務(使用云上布置的應用軟件服務,如地圖、搜索、郵件等)。
云計算至少有以下四個優勢:按需供應的無限計算資源;無須事先花錢就能使用的IT架構;基于短期的按需付費的資源使用;單機難以提供的事務處理環境。
真正的云計算服務同時滿足以下三個條件:
① 服務應該是隨時隨地可接入。用戶可以在任何時間、任何地點,通過任何可以連接網絡的設備來使用服務,而無須考慮應用程序的安裝問題,也無須關心這些服務的實現細節。
② 服務應永遠在線。偶發問題可能出現,但一個真正的云計算服務應時刻保證其可用性和可靠性,即保證隨時可通過網絡的接入,并正常提供服務。
③ 服務擁有足夠大的用戶群。這就是所謂的“多租賃”,由一個基礎平臺向多個用戶提供服務的“租賃”。雖然沒有明確的數量來進行劃分,但只是針對少數用戶的服務,即使用云計算相關的技術來支撐其基礎系統架構,也不應該歸為云計算服務。因為只有龐大的用戶群,才會產生海量數據訪問壓力,這是云計算出現的最根本原因,也是云計算服務區別其他互聯網服務的標志之一。
1.1.3 云計算簡史
20世紀60年代,“人工智能之父”約翰·麥卡錫(John McCarty)曾經說過:“計算資源可能在未來成為一種公用設施”。這應該是最早發表過的與云計算相關的表述。
1966 年,道格拉斯·帕克希爾(Douglas Parkhill)出版了《計算機效用的挑戰》一書。該書已經描述了云計算,只不過沒有用“云計算”這個名詞。“云”這個詞源自電信產業。
1999年美國易安信公司(EMC)提出了數據撥號音的設想。
亞馬遜公司在 2005 年在其內部首先實施了亞馬遜 Web 服務(AWS)效用計算模式。之后,亞馬遜公司決定將自己的云計算提供給外部的客戶,并在 2006 年開始將 AWS 作為效用計算向外部客戶提供。圖 1.5所示為云計算發展歷史中的重大事件。
1.1.4 云計算的推動力
云計算的出現是由多種因素促成,具有一定的必然性,具有決定性因素如下:網絡帶寬的提升、技術成熟度、移動互聯網的發展、數據中心的演變、經濟因素、大數據、提高資源利用率節能降耗、降低信息系統的維護成本、提升 IT 資產的安全態勢、提升信息系統的災備能力。推動云計算出現和發展的動力就是節省、靈活、方便、彈性、無限、按用量計費。