前言
为什么要写这本书
云计算对于大家并不陌生,每个公司技术部门都或多或少会接触到云。有的是使用AWS或者阿里云等公有云,有的是自建私有云,还有的公司使用混合云。
但目前市面上还没有一本书系统地介绍云计算整体的技术架构和技术实现。要么是停留在模糊的概念介绍,要么只是针对某个技术的源码分析,很难让读者系统地了解云计算。因此,笔者结合多年工作经验想和大家一起分享一下云计算的发展历程和技术实现,让更多的人了解云计算。
云计算相关的知识涉及很多方面,并没有速成的秘诀,希望这本书能够帮助大家厘清云计算的核心概念。人生如逆旅,我亦是行者。希望和每一位读者一起交流学习,砥砺前行。
由于篇幅有限,在源代码介绍部分只能介绍核心代码,后续详细代码分析会发布到个人的blog(https://chenxy.blog.csdn.net/)。关于本书的勘误可以在GitHub(https://github.com/timchenxiaoyu/bookerror)看到。
本书概要
第1章主要介绍云计算相关基础概念和分类,然后介绍云计算的关键技术和云计算优势,接着以AWS为例介绍了云计算中一些常用的服务,包括EC2、IAM等。最后比较了云计算与边缘计算、网格计算、并行计算的差别。
第2章主要介绍虚拟化和IaaS核心概念,首先介绍了虚拟化的定义和优势,然后着重介绍了IaaS平台的主要功能,包括资源管理、监控告警、计量计费等。
第3章主要介绍计算虚拟化,首先介绍CPU和内存虚拟化的实现原理,然后简单介绍各种虚拟化软件,着重以KVM为例介绍具体使用方法和优化实践,最后介绍一个云主机初始化神器cloud-init的使用和原理。
第4章主要介绍存储虚拟化,首先介绍存储虚拟化的定义和存储相关的基础知识,然后介绍存储虚拟化的分类,最后以Ceph和minio为例介绍常用的开源存储。
第5章主要介绍网络虚拟化,首先介绍网络虚拟化的定义,以及网络相关的基础知识。然后介绍虚拟网络设备,例如veth、ovs等。最后介绍软件定义网络SDN及OpenFlow协议解析。
第6章主要介绍OpenStack常用组件,首先介绍OpenStack整体架构,然后详细介绍OpenStack常用组件,包括计算组件Nova、存储组件Cinder、镜像组件Glance,以及网络组件Neutron等。
第7章主要介绍Docker,前几节主要介绍Docker基本概念,包括Docker的安装部署、常用命令,以及Dockerfile的编写等。后面主要介绍一些Docker的高级用法和Docker源码分析。最后介绍两款其他容器产品Pouch和Kata Containers。
第8章主要介绍Docker实现的内核原理,包括各种namespace和cgroup的使用,以及UnionFS、chroot和pivot_root的使用。让读者充分了解Docker底层相关知识。
第9章主要介绍Kubernetes基础概念,首先介绍Kubernetes对各种资源定义(如Pod、Deployment等),然后介绍Kubernetes编译、安装部署、运维等常用命令。
第10章主要介绍Kubernetes高级功能和源码解析。首先详细分析每个组件的工作原理和Pod生命周期管理,然后介绍Kubernetes规范中的CRI、CNI、CSI,最后针对部分Kubernetes进行源码导读。
第11章主要介绍Kubernetes的生态圈,着重介绍Prometheus、Harbor、CoreDNS等常用组件的原理和使用方式。
第12章主要介绍PaaS平台的构建和落地原理,首先介绍PaaS平台常用概念,然后从功能设计到实现原理,详细介绍PaaS平台在宜信的落地实践经验。
第13章主要介绍云原生应用,首先介绍云原生组织背景,然后介绍云原生的三个核心概念:微服务、容器化和DevOps。最后分析了当前最流行Service Mesh开源项目Istio和Envoy。
致谢
感谢妻子和父母的一路相伴,感谢宜信公司和熠青对我写书的支持,感谢各位大佬(按拼音排序:胡鹏飞、刘君、孙宏亮、向江旭)在百忙之中抽出时间提供宝贵建议,并写推荐语,感谢刘志红编辑对本书编写过程的全力支持。谢谢大家!
陈晓宇
2019年11月