在详细介绍计算产品的基础技术之前,我们回顾一下云计算的发展和演进过程, 梳理一下技术架构,方便读者看到技术发展的脉络。
虚拟化技术诞生于1974 年,当时就清楚地定义出Hypervisor 的功能,以及高效的虚拟化计算体系架构的设计原则。随后在Intel 等芯片和系统厂商的产品中,虚拟化技术快速发展并不断演进。1998 年成立的VMWare 公司在20 多年的发展中成为赢利最好的以虚拟化技术为核心的公司。
但是虚拟化技术成为云计算基础技术,还是在2008 年之后的事。其根本原因是包括AWS 和阿里云在内的多个云服务提供商证明了云计算是可行并且赢利丰厚的业务。商业模式的成功反过来推动了虚拟化技术的快速发展,再加上要做到弹性资源管理、多租户弹性部署和安全隔离。软件虚拟化方案Xen 和KVM 相继成熟;近年更有第3 章 计算产品和技术53
神龙(阿里云)和Nitro(AWS)等硬件虚拟化技术快速发展;在云原生计算方面基于Kubernetes 的容器服务则成为主流。
这里需要强调的是,弹性对于云计算非常重要。在云计算兴起之前,硬件的自行采购和IDC 机房租用是主流的IT 基础设施构建方式。网络、服务器、IDC 硬件和基础软件、应用软件相关的采购和适配,以及后期的运维都是用户的极大负担。一旦IT 基础设施部署投入生产,就很难改动和升级。而基于虚拟化的云计算可以提供用户需要的弹性:支持按需付费、弹性扩容、动态快速升级和迁移、智能可靠性保障。用户可以专注于业务,从弹性计算中得到巨大的实质收益。
虚拟化技术对计算资源进行了封装和管理。在基于通用CPU 计算平台的物理机上,常见的形态有虚拟机和容器,我们一般称之为实例。云计算的核心是解决CPU、内存和I/O 的高效虚拟化方法、容器的隔离和编排,以及升级、迁移等问题。随着人工智能的发展,GPU、FPGA 等资源也逐渐可以被这些实例高效访问,甚至这些资源本身也能够被虚拟化,成为可以提供给多租户使用的实例。由于GPU、FPGA 等异构计算资源使用的场景比较有针对性,所以软件、硬件支持的虚拟化技术相对于通用CPU 更多地体现了业务和用户的需求。
在对硬件虚拟化时,为了给用户提供更多样、更方便、更高效、更安全的计算服务,有两个重要方向。其一,在用户一侧,云服务提供商提供垂直型的计算服务或者某种辅助,比如函数计算服务(用户不必管理复杂的虚拟化实例)、超算服务(针对用户的超算型业务,从架构到软件提供高效的框架并优化)、异构计算开发和部署优化等增值服务(比如给开发者提供基于云的FPGA,或者提供面向用户人工智能应用的优化服务)。其二,在云服务提供商一侧,通过软件和硬件协同设计优化整体性能, 并且提供物理IT 资源无法提供的服务(比如后面介绍的弹性裸金属,兼具物理机的性能和虚拟机的弹性),同时通过把不同功能的计算组件解耦(比如计算和存储分离、OverLay 和UnderLay 网络分离)来实现更高的资源使用效率,并且提高独立演进和优化的效率。和计算相关的服务将在本章后面提及,和存储、网络相关的内容在本书中有单独的章节介绍。
近年,云进入繁荣期,计算作为IaaS 层的基础服务,其本身非常重要,同时是很多其他业务的入口(如存储和VPC 等IaaS 业务,以及PaaS、SaaS 业务),因此, 计算技术是很好的突破点。