第1章 云计算概述 1
1.1 初识云计算 2
1.1.1 云计算的定义 3
1.1.2 计算模式的演进过程 6
1.1.3 云计算简史 11
1.1.4 云计算的推动力 12
1.2 云计算的公共特征与分类 14
1.2.1 云计算的公共特征 14
1.2.2 云计算的分类 15
1.2.3 与云计算有关的技术 19
1.3 云计算的三元认识论 21
1.3.1 云计算作为一种商业模式 21
1.3.2 云计算作为一种计算范式 22
1.3.3 云计算作为一种实现方式 23
1.4 云计算的开源方法论 25
1.4.1 开源定义和相关概念 25
1.4.2 开源的价值和意义 26
1.4.3 开源发展历程 27
1.4.4 开源是方法论 28
1.4.5 开源给云计算人才培养带来的挑战 30
1.5 实践:GitHub 32
1.5.1 GitHub简介 32
1.5.2 使用GitHub 33
1.5.3 GitHub界面总览 37
1.6 本章小结 38
1.7 复习材料 38
第2章 分布式计算 40
2.1 分布式计算概述 41
2.1.1 基本概念 41
2.1.2 分布式计算的原理 42
2.2 分布式计算的理论基础 42
2.2.1 ACID原则 42
2.2.2 CAP理论 43
2.2.3 BASE理论 46
2.2.4 最终一致性 46
2.2.5 一致性散列 47
2.3 分布式系统概述 50
2.3.1 分布式系统的基础知识 50
2.3.2 分布式系统的特性 51
2.3.3 分布式存储系统实例:Apache Hadoop 52
2.4 分布式系统的进阶 54
2.4.1 分布式存储系统 54
2.4.2 分布式计算系统 56
2.4.3 分布式资源管理系统 58
2.5 典型的分布式系统 60
2.5.1 网格系统 60
2.5.2 P2P系统 63
2.5.3 透明计算 66
2.5.4 区块链系统 69
2.6 本章小结 73
2.7 复习材料 73
第3章 云计算架构 75
3.1 云计算的本质 76
3.1.1 革命性概念:IT作为服务 76
3.1.2 云计算系统工程 76
3.1.3 云数据中心 77
3.1.4 云的工作负载模式 78
3.1.5 云计算的规模效应 79
3.2 云计算的架构 80
3.2.1 计算架构的进化 80
3.2.2 一般云计算架构的二维视角 83
3.3 云栈和云体 86
3.3.1 逻辑云栈 86
3.3.2 逻辑云体 89
3.3.3 一切皆为服务 90
3.4 软件定义的数据中心 90
3.4.1 数据中心的历史 91
3.4.2 继续发展的推动力 93
3.4.3 软件定义的必要性 94
3.4.4 软件定义数据中心的架构分析 95
3.4.5 软件定义数据中心的发展 97
3.5 实践:OpenStack 98
3.5.1 初识OpenStack 98
3.5.2 OpenStack组件介绍 101
3.5.3 体验使用OpenStack 101
3.6 本章小结 103
3.7 复习材料 103
第4章 虚拟化技术 104
4.1 虚拟化的定义 105
4.2 服务器虚拟化 106
4.2.1 x86架构对虚拟化的限制 107
4.2.2 全虚拟化 108
4.2.3 半虚拟化 108
4.2.4 硬件辅助虚拟化 109
4.3 商用虚拟机技术 109
4.4 新型硬件虚拟化 111
4.4.1 硬件虚拟化背景 111
4.4.2 硬件虚拟化的代表 113
4.4.3 硬件虚拟化的未来 114
4.5 实践:Xen虚拟化技术 115
4.5.1 Xen的历史 115
4.5.2 Xen功能概览 115
4.5.3 Xen实际操作 116
4.6 实践:KVM虚拟化技术 119
4.6.1 KVM简介 119
4.6.2 KVM的基本安装操作 119
4.7 轻量级虚拟化 122
4.7.1 容器技术简介 122
4.7.2 容器与虚拟机的对比 123
4.7.3 容器背后的内核知识 124
4.8 实践:Docker容器 126
4.8.1 安装Docker 126
4.8.2 运行第一个Docker容器 127
4.9 本章小结 128
4.10 复习材料 129
第5章 分布式存储 130
5.1 分布式存储的基础 131
5.1.1 基本概念 131
5.1.2 分布式存储分类 132
5.1.3 分布式存储的发展历史 133
5.2 文件存储 136
5.2.1 单机文件系统 136
5.2.2 网络文件系统 137
5.2.3 并行文件系统 137
5.2.4 分布式文件系统 138
5.2.5 高通量文件系统 138
5.3 从单机存储系统到分布式存储系统 139
5.3.1 单机存储系统 139
5.3.2 分布式存储系统 140
5.4 实践:分布式存储系统Ceph 143
5.4.1 概述 143
5.4.2 设计思想 144
5.4.3 整体架构 145
5.4.4 集群部署 146
5.5 本章小结 149
5.6 复习材料 149
第6章 云计算网络 151
6.1 基本概念 152
6.1.1 计算机网络 152
6.1.2 覆盖网络 153
6.1.3 大二层网络 154
6.1.4 租户网络 155
6.2 数据中心网络:云计算的骨架 155
6.2.1 数据中心网络拓扑 156
6.2.2 用Mininet搭建数据中心仿真环境 158
6.3 网络虚拟化 159
6.3.1 灵活控制:软件定义网络(SDN) 160
6.3.2 快速部署:网络功能虚拟化(NFV) 166
6.4 租户网络管理 169
6.4.1 网络功能即服务 169
6.4.2 OpenStack Neutron 170
6.4.3 Group-Based Policy 173
6.5 实践:用Mininet搭建OpenFlow实验环境 175
6.5.1 Mininet入门 176
6.5.2 Mininet实验 177
6.6 本章小结 178
6.7 复习材料 178
第7章 云计算安全 180
7.1 云安全概述 181
7.1.1 云计算安全挑战 181
7.1.2 云计算安全现状 183
7.1.3 云计算安全技术框架 184
7.1.4 云计算安全关键技术 185
7.2 虚拟化安全 187
7.2.1 虚拟化软件栈安全威胁 187
7.2.2 虚拟化软件栈安全防御 191
7.2.3 虚拟化安全总结 192
7.3 云存储安全 193
7.3.1 云存储的安全需求 193
7.3.2 安全云存储系统概述 194
7.3.3 安全云存储系统的一般架构 194
7.3.4 安全云存储系统的关键技术 195
7.4 云数据安全 197
7.4.1 云数据面临的安全威胁 198
7.4.2 云数据安全研究内容 198
7.4.3 云数据安全研究进展 199
7.5 实践:全同态加密算法 200
7.5.1 HElib库的调试与分析 200
7.5.2 全同态加密算法对比与分析 202
7.6 本章小结 205
7.7 复习材料 205
第8章 云原生应用的开发 206
8.1 云原生的相关概念 207
8.1.1 云原生简介 207
8.1.2 云原生的内容 208
8.1.3 云原生应用的技术手段 211
8.2 云原生应用开发实践的12要素 214
8.3 云原生应用开发 222
8.3.1 云原生应用开发的原则 222
8.3.2 云原生的落地:Kubernetes 224
8.4 实践:基于Node.js的云原生应用开发 226
8.5 本章小结 233
8.6 复习材料 233
第9章 云操作系统 234
9.1 计算机软件与操作系统 235
9.1.1 计算机软件的发展 235
9.1.2 操作系统的发展简史 236
9.1.3 操作系统的软件定义本质 238
9.2 UNIX类操作系统的发展 239
9.2.1 UNIX系统简介 239
9.2.2 UNIX家族的演化 240
9.2.3 类UNIX系统的发展 242
9.2.4 UNIX系统的展望 243
9.3 云操作系统概述 244
9.3.1 基本概念 244
9.3.2 云操作系统实例 245
9.3.3 云操作系统的挑战 246
9.3.4 新一代云操作系统的职责与功能 247
9.4 云计算编程模型与环境 248
9.4.1 云计算环境下的编程困惑 248
9.4.2 云计算编程模型 250
9.5 云操作系统的资源调度 252
9.5.1 资源调度简介 252
9.5.2 云操作系统下资源调度的挑战 253
9.5.3 云计算资源调度的策略和算法 253
9.6 实践:Mesos 256
9.6.1 Mesos架构 256
9.6.2 Mesos设计解读 258
9.6.3 在Mesos上运行Spark 259
9.6.4 Mesos实现容器编排 261
9.7 本章小结 262
9.8 复习材料 262
第10章 云端软件 264
10.1 从软件到云件 265
10.1.1 云件的基本概念 265
10.1.2 从软件到云件的变迁 266
10.1.3 云件的关键技术 270
10.1.4 云件的开发、部署和运行模式 271
10.2 云件系统的架构设计与运行原理 272
10.2.1 计算与存储分离的设计理念 272
10.2.2 基于微服务架构的云件模型 273
10.2.3 云件的系统级架构设计 276
10.3 云件的开发模式与效果 279
10.3.1 云件的开发模式 279
10.3.2 云件的效果展示 281
10.4 云件在大规模在线实训平台中的应用 282
10.4.1 实训平台提出的背景 283
10.4.2 构建基于云件系统的大数据工程实训平台 284
10.5 实践:云件应用开发实例 287
10.6 本章小结 290
10.7 复习材料 290
第11章 云计算运维 291
11.1 云服务环境的监控 292
11.1.1 云监控概述 292
11.1.2 云监控特性 292
11.1.3 云监控需求 293
11.1.4 云监控结构 295
11.1.5 关键技术 297
11.2 云监控解决方案 299
11.2.1 云监控的通用技术 299
11.2.2 容器的监控 301
11.3 智能运维 305
11.3.1 智能运维的历史 306
11.3.2 智能运维的内容 307
11.3.3 AIOps的关键场景与技术 309
11.3.4 智能运维的展望 316
11.4 实例:智能运维在大视频运维中的应用 317
11.4.1 背景介绍 317
11.4.2 人工智能技术在大视频运维系统中的应用 319
11.5 本章小结 321
11.6 复习材料 322
第12章 桌面云 323
12.1 桌面云概述 324
12.1.1 桌面云的发展历史 324
12.1.2 初识桌面云 325
12.2 桌面云架构与关键技术 327
12.2.1 传输协议 327
12.2.2 服务层 329
12.2.3 资源层 331
12.2.4 安全 332
12.2.5 桌面云面临的挑战 334
12.3 桌面云典型应用案例 334
12.3.1 桌面云在政府中的应用 335
12.3.2 桌面云在运营商中的应用 336
12.3.3 桌面云在教育中的应用 338
12.4 实践:基于OpenStack的桌面云 339
12.4.1 Windows镜像的制作 340
12.4.2 配置SPICE实现远程访问 343
12.5 本章小结 344
12.6 复习材料 344
第13章 软件开发云 345
13.1 软件开发云的概念 346
13.1.1 传统软件开发中的挑战 346
13.1.2 云计算给软件开发带来的新可能 347
13.1.3 云时代的软件开发 348
13.2 华为软件开发云服务 349
13.2.1 软件交付的趋势和挑战 349
13.2.2 初识DevCloud 350
13.2.3 DevCloud核心理念 350
13.3 DevCloud技术方案 351
13.3.1 DevCloud总体架构 351
13.3.2 DevCloud主要服务 352
13.4 实践:DevCloud实战 353
13.4.1 DevCloud登录 353
13.4.2 项目管理 353
13.4.3 代码托管 355
13.4.4 构建 358
13.4.5 测试 359
13.4.6 发布 360
13.4.7 部署 360
13.4.8 流水线 362
13.5 本章小结 363
13.6 复习材料 364
第14章 大数据与人工智能 365
14.1 初识大数据 366
14.1.1 大数据的发展背景 366
14.1.2 大数据的定义 368
14.1.3 大数据的技术 370
14.2 初识人工智能 372
14.2.1 人工智能的历史及概念 372
14.2.2 人工智能的特征与参考框架 375
14.2.3 人工智能的发展趋势 377
14.3 云计算、大数据与人工智能的关系 380
14.3.1 云计算与大数据的融合 380
14.3.2 云计算与人工智能的融合 381
14.4 本章小结 382
14.5 复习材料 382
附录 《云计算原理与实践》配套实验课程方案简介 384
参考文献 385
论文阅读 388