本書從云基礎知識、云應用編程和云平臺三個方面,介紹云計算的起源、發展、核心技術、編程技巧和實際應用,基于Aneka平臺詳細講解并行計算、高吞吐量計算和數據密集型計算的范式。此外,還涉及亞馬遜Web服務、谷歌AppEngine和微軟Azure三大云平臺,以及云計算在科學、工程、游戲、社交等領域的最新應用。
《深入理解云計算:基本原理和應用程序編程技術》特色:
·詳細解析虛擬化云計算環境中應用程序的設計和實現方法。
·提供實驗和測試的真實云系統環境——Aneka云平臺。
·展示豐富的云應用實例,涉及科學、商業、能效等眾多方面。
·配套網站提供多種免費教輔資源。
譯者序
MasteringCloudComputing:FoundationsandApplicationsProgramming
云計算是在傳統計算機科學基礎上發展起來的新興技術。隨著移動設備的大量普及、網絡與計算成本的大幅降低以及用戶計算需求的不斷提升,傳統的PC計算模式必將向以云數據中心為核心的云計算模式轉移。同時,云計算技術所提供的強大的計算能力、低廉的成本以及按需服務的模式將會從根本上推動計算密集型應用的進一步發展,以及全球計算能力的全方位釋放。
由于涉及計算機科學領域的專業知識和技術,所以對普通研發人員而言,云計算技術頗有些陽春白雪的意味。究其根源,云計算技術是學術研究與工程開發的集合體。一方面,研究人員在有好的想法或者概念的情況下,需要一個良好的云計算模型與原型系統來驗證所提出的方法;另一方面,工程人員則由于專業背景知識的缺乏,而很難進入真正的云計算技術開發領域。
作為云計算技術領域的先驅者和領導者,本書作者——澳大利亞墨爾本大學計算機科學系著名教授RajkumarBuyya,長期從事網格計算及云計算技術研究,研究成果得到學術界與工業界的廣泛認可。本書集成了Buyya教授在云計算領域多年的研究成果,從云計算基礎、應用平臺和編程技術三個方面,利用11個章節詳細介紹云計算技術的起源、發展、核心技術及其范式、典型云計算平臺以及編程技巧等重要內容。本書內容豐富、深入淺出,并包含配套習題,適合不同層次的云計算技術研發人員使用。同時,本書清晰的思路、嚴謹的技術框架和詳盡的實例講解也使其成為適用于計算機相關學科本科生及研究生教學的不可多得的優秀教材。
參與本書翻譯工作的人員均多年從事云項目相關工作,對云計算前沿問題的研究及教學都有較深刻的理解。本書前言、第1~4章及索引由劉麗(北京科技大學自動化學院副教授)翻譯,第5~8章由米振強(北京科技大學計算機與通信工程學院講師)翻譯,第9~11章由熊曾剛(湖北工程學院計算機與信息科學學院教授)翻譯,全書由劉麗統稿。北京科技大學的研究生張淼、翟穎奇、夏毓嫻、徐安琪、謝翔、潘夢圓、李萌、何苗、陸源等同學協助進行資料收集,并參與了部分章節的初稿翻譯工作。
感謝機械工業出版社引進此書并為本書的出版付出大量努力,使IT從業人員和計算機相關專業學生從中受益。特別感謝本書作者RajkumarBuyya教授對翻譯過程中遇到的問題進行解答。
需要說明的是,本書翻譯工作和云計算研究工作得到以下項目的資助和支持:國家自然科學基金項目“互聯云環境中基于效用模型的跨云協同服務優化研究(No.61370132)”、“大數據環境下基于視覺主題模型的視覺數據分類方法研究(No.61370092)”、“互聯云環境下面向數據中心的服務資源分配與調度機制研究(No.61472033)”,國家高技術研究發展計劃(863計劃)項目“城市多模式數據系統互聯技術與支撐環境(No.2013AA01A601)”,以及湖北省自然科學基金項目“云計算環境下內容語義信任度量與評估方法研究
(No.2013CFC005)”和湖北省高等學校優秀中青年科技創新團隊計劃項目“云計算環境下智能信息處理技術研究(No.T201410)”。
由于譯者對云計算相關變革性技術的理解有待加深,而且許多新出現的專業術語還沒有公認的譯法,所以在翻譯過程中難免出現一些不夠清楚的表述,若有不妥之處,懇請廣大讀者批評指正,電子郵箱liuli@ustb.edu.cn。
劉麗
2015年1月
前言
MasteringCloudComputing:FoundationsandApplicationsProgramming
隨著互聯網與Web技術的快速發展和普及,以及手持計算機、移動設備、傳感器設備功能的不斷強大,人與人之間的交互方式、商業行為以及獲取和提供服務的模式都在發生變化。低成本的計算與通信驅動了從單一計算方式向以數據中心為核心的計算方式的轉變。盡管并行與分布式計算在IT行業已經存在多年,但其新的形式——多核和云計算為IT行業帶來了徹底的變革。這種發展趨勢將促使IT行業從PC應用開發模式轉變為支持數百萬用戶同時使用軟件的云數據中心模式。
計算向商業服務模式變革,這種計算服務類似于傳統的公共基礎設施服務,如水、電、煤氣和電話。因此IT服務被當作與水、電、煤氣和電話一樣的“計算公共基礎設施”,通過共有傳輸網絡來交付使用并計費。在這種計算環境下,用戶按需獲取服務,而不管該服務由哪里提供。一些計算模式已經提出交付這種效用計算服務的構想,云計算是最新出現的實現這一目標的計算模式。
云計算如今已成為IT行業的又一個流行術語。眾多IT廠商承諾提供存儲、計算及應用托管服務,其服務范圍涵蓋幾大洲,并能提供基于服務等級協議(ServiceLevelAgreement,SLA)的服務性能保障和運行時間承諾。云服務模式允許用戶基于訂閱方式訪問基礎設施、平臺及應用,也就是通常所說的基礎設施即服務(IaaS)、平臺即服務(PaaS)、軟件即服務(SaaS)。這種服務模式大大降低了計算和應用的成本,但是要實現應用和服務開發及交付的一致性、可擴展性、可靠性是極其復雜的。
已有一些云計算技術和云平臺產品,如谷歌AppEngine、微軟Azure和ManjrasoftAneka。谷歌AppEngine利用大量IT基礎設施為托管的Web應用提供可擴展的運行環境。微軟Azure為在云計算環境中開發和部署應用提供了大量Windows服務實例。ManjrasoftAneka能夠靈活地創建云應用并將其部署在各種基礎設施上,如亞馬遜公共云EC2。
隨著應用開發從PC向云數據中心遷移,需要大量掌握云計算技能的人員。面對這一挑戰,大學教育在培養下一代IT專業人員方面發揮了重要作用,幫助學生學習和掌握新的相關技術與工具。這樣,大學需要以較小的投入建立云計算教學環境,而ManjrasoftAneka比較適合建立這種云應用平臺,它允許用戶利用已有計算機網絡組建私有云/企業云,提供軟件開發工具包(SDK),支持多種編程模型(如線程、任務、MapReduce)的應用編程接口(API),支持在多核服務器、私有云、公共云等不同基礎設施上無縫地部署和執行應用。
如今,專業開發人員需要創建云應用和服務。云計算研究人員、從業者以及供應商努力讓用戶了解云計算的好處并充分利用其潛在能力。然而,由于云計算是一種新興的計算范式,所以對于云計算的精確定義,不同的云計算專家會給出不同的答案。因此,盡管現在比以往更好地實現了真正的效用計算,但是,與云計算服務方交互的復雜性使得對于云計算的認可和應用還只限于領域專家。本書旨在用簡單的方式向讀者講解云計算基礎知識、技術及編程技能,讓更多普通程序員和軟件工程師能輕松地開發云應用程序。
本書結構
本書介紹云計算的基本原理及相關范式,闡述云計算架構模型中虛擬化技術的概念,并展示包括Aneka云計算應用平臺在內的著名云計算技術產品,詳細講解并行計算、高吞吐量計算和數據密集型計算的范式,以及如何將這些范式應用于云應用程序開發。本書還研究了來自科學界、工程界、游戲和社交網絡領域的多個應用案例,闡述了各應用案例的架構以及云計算技術的應用方式。這些案例研究有助于讀者對云計算原理的理解。最后,本書詳細闡述了許多源于云計算快速應用的開放性研究問題和機遇,我們希望這有助于激發讀者在未來的研發過程中解決這些問題。
全書分為三部分,共11章:
第一部分基礎
第1章導論
第2章并行計算與分布式計算原理
第3章虛擬化
第4章云計算架構
第二部分云應用編程與Aneka平臺
第5章Aneka:云應用平臺
第6章并行計算:線程編程
第7章高吞吐量計算:任務編程
第8章數據密集型計算:MapReduce編程
第三部分工業云平臺與新進展
第9章工業云平臺
第10章云應用
第11章云計算高級主題
本書將引導讀者進入云計算領域,從理論基礎講解開始,讓學生和專業人員通過在Aneka平臺上實際開發云應用程序來理解和掌握相關概念。第三部分介紹業界其他云技術和解決方案(亞馬遜Web服務、谷歌AppEngine和微軟Azure)及其實際應用,闡述云計算的發展趨勢和發展前景。
讀者對象
由于云計算迅速崛起為一種主流計算模式,所以必須深入理解其核心概念和特性,并掌握如何設計和實現云計算的應用程序與系統。這是如今的軟件架構師、工程師和開發人員應具有的基本技能,因為多數應用都將被遷移到云環境。隨著技術的成熟,具備此技能尤其重要。本書涵蓋云計算的起源、理論和實際開發技術,讀者對象更廣泛,可作為研究生、IT從業者、開發人員、工程師等設計和實現云計算解決方案的參考書。此外,書中最后關于相關研究的展望更加吸引云計算領域的研究人員探究其將帶來的新挑戰。
云計算正在不斷獲取相當可觀的商業利益且發展勢頭強勁,本書為云計算領域做出了非常適時的貢獻。本書主要針對研究生和IT專家,例如系統架構師、軟件工程師、應用程序員等。在未來的20年里,云計算將是對科學研究和社會生活產生重大影響的五大新興技術之一,因此認真理解和掌握本書的知識將幫助讀者置身IT領域的前沿。
用書指南:理論、實驗室、項目
鑒于云計算范式的重要性及其在業界的快速崛起,教育機構應該更新其課程體系,增加云計算或相關領域的一門或多門專業課程,例如“并行計算”和“分布式系統”。我們建議大學設置面向本科生或研究生的云計算專業,及計算科學學士和相關碩士學位,相信此書將是該專業的優秀教材。如果學生已經了解并行和分布式計算的概念,可以跳過第2章。
對于想用云計算豐富其課程體系的學校,建議分別在兩個學期開設兩門課程:“云計算基礎課程”和“云計算高級課程”。本書第1~6章適用于云計算基礎課程,第7~11章適用于云計算高級課程。
除了理論學習以外,我們強烈推薦實驗室使用本書,書中給出了很多實驗指導。實驗練習和作業題包括數學函數的并行執行、大量數據排序的并行處理、圖像處理和數據挖掘。在Aneka云軟件系統上,學校很容易利用已有的Windows系統的計算機局域網絡搭建私有云(企業云)計算環境。學生可利用此環境學習各種云應用編程模型和接口的實例并在Aneka平臺上實現,如第6章的線程編程、第7章的任務編程、第8章的MapReduce編程。章后編程習題可作為實驗作業讓學生自己編寫程序實現。
學生也可以在其本科畢業設計中開發處理實際問題的云應用程序。例如,學生可以協助其他科學領域或工程領域(比如生命醫學科學、機械科學)的研究人員,利用云計算強大的計算能力開發符合實際需求的應用。請閱讀并學習第10章的各種應用案例。
MasteringCloudComputing:FoundationsandApplicationsProgramming
出版者的話
譯者序
前言
致謝
第一部分基礎
第1章導論2
1.1云計算簡介2
1.1.1云計算構想3
1.1.2云計算定義4
1.1.3進一步了解云計算6
1.1.4云計算參考模型7
1.1.5特性和優勢9
1.1.6面臨的挑戰10
1.2云計算起源10
1.2.1分布式系統11
1.2.2虛擬化12
1.2.3Web2.013
1.2.4面向服務的計算14
1.2.5效用計算15
1.3構建云計算環境16
1.3.1應用程序開發16
1.3.2基礎設施和系統開發16
1.3.3云計算平臺和技術17
本章小結18
習題19
第2章并行計算與分布式計算原理20
2.1計算時代20
2.2并行計算與分布式計算21
2.3并行計算基本要素21
2.3.1什么是并行處理21
2.3.2并行處理硬件架構22
2.3.3并行編程方法25
2.3.4并行性的級別25
2.3.5注意事項26
2.4分布式計算基本要素26
2.4.1通用概念和定義27
2.4.2分布式系統組件27
2.4.3分布式計算架構模式28
2.4.4進程間通信模型35
2.5分布式計算技術37
2.5.1遠程過程調用37
2.5.2分布式對象框架38
2.5.3面向服務的計算42
本章小結48
習題48
第3章虛擬化50
3.1簡介50
3.2虛擬化環境特點51
3.2.1更強的安全性52
3.2.2執行管理53
3.2.3可移植性54
3.3虛擬化技術分類54
3.3.1執行虛擬化54
3.3.2其他類型的虛擬化61
3.4虛擬化和云計算62
3.5虛擬化的利與弊64
3.5.1虛擬化技術的優點64
3.5.2虛擬化技術的缺點64
3.6技術實例66
3.6.1Xen:半虛擬化66
3.6.2VMware:完全虛擬化67
3.6.3微軟Hyper-V72
本章小結75
習題75
第4章云計算架構76
4.1簡介76
4.2云計算參考模型76
4.2.1架構76
4.2.2基礎設施即服務和硬件即服務78
4.2.3平臺即服務80
4.2.4軟件即服務83
4.3云的種類85
4.3.1公共云85
4.3.2私有云86
4.3.3混合云88
4.3.4社區云90
4.4云計算經濟特性91
4.5云計算面臨的挑戰93
4.5.1云計算定義93
4.5.2云計算互操作性和標準93
4.5.3可擴展性和容錯性94
4.5.4安全、可信和隱私94
4.5.5組織方面95
本章小結95
習題95
第二部分云應用編程與Aneka平臺
第5章Aneka:云應用平臺98
5.1框架概述98
5.2Aneka容器結構100
5.2.1Aneka平臺基礎:平臺抽象層101
5.2.2構造服務101
5.2.3基礎服務103
5.2.4應用服務105
5.3構建Aneka云平臺106
5.3.1基礎設施組織107
5.3.2邏輯組織107
5.3.3私有云部署模式109
5.3.4公共云部署模式110
5.3.5混合云部署模式111
5.4云編程和云管理112
5.4.1AnekaSDK112
5.4.2管理工具115
本章小結116
習題116
第6章并行計算:線程編程117
6.1單機并行計算簡介117
6.2線程編程應用118
6.2.1什么是線程119
6.2.2線程API120
6.2.3線程并行計算技術121
6.3Aneka多線程方式130
6.3.1線程編程模型簡介131
6.3.2Aneka線程和普通線程132
6.4Aneka線程編程應用135
6.4.1Aneka線程應用模型135
6.4.2域分解:矩陣乘法136
6.4.3功能分解:Sine、Cosine、Tangent142
本章小結147
習題148
第7章高吞吐量計算:任務編程149
7.1任務計算149
7.1.1任務特性150
7.1.2計算類別150
7.1.3任務計算框架151
7.2基于任務的應用模型152
7.2.1高度并行應用153
7.2.2參數化應用153
7.2.3消息傳遞接口應用155
7.2.4具有任務依賴性的
工作流應用156
7.3基于任務的Aneka編程159
7.3.1任務編程模型159
7.3.2用任務模型開發應用160
7.3.3開發參數化應用174
7.3.4管理工作流176
本章小結178
習題179
第8章數據密集型計算:MapReduce編程181
8.1什么是數據密集型計算181
8.1.1數據密集型計算特性182
8.1.2未來的挑戰182
8.1.3歷史背景183
8.2數據密集型計算技術186
8.2.1存儲系統186
8.2.2編程平臺193
8.3AnekaMapReduce編程199
8.3.1MapReduce編程模型簡介199
8.3.2應用實例216
本章小結226
習題226
第三部分工業云平臺與新進展
第9章工業云平臺228
9.1亞馬遜Web服務228
9.1.1計算服務229
9.1.2存儲服務232
9.1.3通信服務239
9.1.4其他服務240
9.1.5總結241
9.2谷歌AppEngine241
9.2.1架構和核心概念241
9.2.2應用程序生命周期245
9.2.3成本模型247
9.2.4結論247
9.3微軟Azure248
9.3.1Azure核心概念248
9.3.2SQLAzure252
9.3.3WindowsAzure平臺設備253
9.3.4結論253
本章小結254
習題254
第10章云應用256
10.1科學應用256
10.1.1醫療保健:云心電圖分析256
10.1.2生物學:蛋白質結構預測257
10.1.3生物學:基因表達數據用于癌癥診斷分析258
10.1.4地球科學:衛星圖像處理259
10.2商業和消費應用260
10.2.1CRM和ERP260
10.2.2效率型應用262
10.2.3社交網絡265
10.2.4媒體應用265
10.2.5多人在線游戲268
本章小結269
習題269
第11章云計算高級主題270
11.1云能效270
11.2基于市場的云管理273
11.2.1面向市場的云計算273
11.2.2MOCC參考模型274
11.2.3支持MOCC的技術和實現278
11.2.4結論282
11.3云聯盟和互聯云282
11.3.1特性和定義282
11.3.2云聯盟棧283
11.3.3關注點288
11.3.4云聯盟技術301
11.3.5結論304
11.4第三方云服務304
11.4.1MetaCDN304
11.4.2SpotCloud306
本章小結307
習題307
參考文獻309
索引317