近年来,云计算发展势头突飞猛进,其快速发展的动力离不开背后的发展逻辑与规律,同时,也正是这些逻辑和规律,又将云计算产业推向了未来。那么,我们是否可以透过云计算发展的内在逻辑,一定程度地预测云计算未来发展的趋势?
近日,在 InfoQ 的技术公开课中,来自京东的 IaaS 产品负责人,云计算产品技术专家刘俊辉,带来了《云计算效能与虚拟化技术》的分享,深度解读了云计算的发展逻辑、计算虚拟化技术的演进以及计算资源的发展趋势。
云计算的价值逻辑
从历史上看,任何一个新技术的出现都对社会造成深远的影响,我们经历了三个大规模的“技术革命”:第一个是农业革命,即农业第一次以规模化、专业化的方式为我们提供食物;第二个是工业革命,工业产品的价值第一次超过了农业的产品价值;第三个革命就是信息革命,也是我们所处的阶段,意味着我们所生产的信息价值会超过工业产品价值。
身处信息革命的进程中,我们该如何处理这些数据?只有计算能力以指数的方式来增长,才能处理指数级增长的信息。摩尔定律在过去几十年,一直按照这样的趋势发展,最近由于 CPU 的发展遇到了瓶颈,摩尔定律也走到了它的终点。
与此同时,越来越多的数据处理任务由云计算服务来提供,计算能力增长的任务也落在了云计算服务的肩膀上。对于云厂商而言,想要实现可持续的云计算服务,首先要实现性能的持续提升和成本的持续下降,而云计算效能增长的两个驱动力,一方面体现在专业化技术能力,即云计算任务优化的专业软件、硬件;另一个方面体现在资源的利用率,提升资源利用率的方式包括池化的计算资源、标准化的资源形态。
虚拟化技术是实现云计算价值的最核心的技术,它的技术也包括方方面面,云计算最主要的是计算资源、存储资源、网络资源虚拟化。同时,由于云计算的发展,虚拟化技术也推动硬件厂商专门提供了对于虚拟化技术的支持。比如从 CPU 角度来说,它提供了硬件虚拟化的技术,如超线程、虚拟化的全线运行环境;从存储和网络的角度来说,它虚拟化成多个硬件向计算机来提供硬件资源。
此外,智能网卡 /DPU 也是虚拟化技术中最领先的一种,它实际上是数据中心虚拟化技术的集成。
实现云计算价值的核心技术 - 虚拟化
说到虚拟化技术,可能会有一种不太直观的感觉,但如果要说虚拟内存,相信很多开发者朋友都非常熟悉。作为一种虚拟化技术,虚拟内存的特点主要体现在以下几个方面:
- “独立”资源空间:每一个进程均有自己的内存空间,隔离性有所保证;
- 接口保持不变:无论是申请、释放还是访问,内存方式不变;
- 与物理资源解耦:虚拟内存容量不同于物理内存,虚拟内存与物理资源是解耦的,虚拟内存的容量和物理内存的容量没有必然关系;
- 由操作系统、CPU 协同实现。
总结来说,虚拟化是一种技术方法,通过抽象层将一组(硬件)资源以多个实例的方式呈现,虚拟化技术的任务是保证接口不变,另外,需要做到比较好的隔离性,包括横向安全隔离、纵向安全隔离以及性能隔离。虚拟化技术的常见应用包括以下几类:如以 VMware、VirtualBox、KVM 为代表的虚拟化服务器;以网盘为代表的虚拟存储;以 V** 为代表的虚拟网络。
从虚拟化的发展趋势来看,为什么越来越多的用户开始使用虚拟化的资源?
首先,它具备一致的资源呈现,屏蔽了硬件的差异,与硬件解耦;其次是能够实现资源的复用,提升了资源的利用率,还能够提升资源的灵活性与敏捷性;此外,它还提供了更多的可用性保证手段。
虚拟化技术的实现原理
计算虚拟化有两种方式,一种是将一台物理服务器虚拟成多个虚拟服务器,这样可以得到一致形态的虚拟服务器;另外可以将多台物理服务器虚拟成一个虚拟服务器。在这种方式下,可以用多台物理服务器提供一个性能非常高的虚拟服务器,但技术实现的难度是非常高的,同时需要物理服务器之间的互联网络。
虚拟化的工作是由软件和硬件共同协调实现的,实现虚拟化任务的软件是 Hypervisor(虚拟机管理程序),且 Hypervisor 本身是物理机运行的另外一个程序,每个虚拟服务器都是一个独立的进程,而虚拟服务器中的每个 vCPU 都是一个线程,就是。所以整个 Hypervisor 和虚拟服务器都是物理服务器上的负载,都运行在物理服务器的 CPU,消耗 CPU 的资源。
虚拟化资源实际上需要和物理资源提供相同的接口,所以每一个虚拟服务器都有自己的虚拟 CPU/ 内存、虚拟硬盘设备、虚拟网络设备以及键盘、显示控制台等其它虚拟硬件设备。
计算虚拟化的基本实现原理
每个虚拟机都是一个独立的进程,虚拟机中的每个 vCPU 都是一个线程。Hypervisor 要完成的两个关键任务分别是指令仿真和设备仿真,其中指令仿真有特权指令执行,需要由物理服务器的操作系统进行截获,然后进行相应的处理。 在 CPU 的发展过程中,对于虚拟化提供了大量的支持,各个新一代的 CPU 都可以实现对于相同指令架构虚拟化硬件的辅助作用,充分利用了 CPU 硬件虚拟化能力,达到了极低的虚拟化损耗。
第二个大任务就是进行设备仿真。因为虚拟机同时也要访问外部设备,主要存储资源和网络资源,但存储资源和网络资源不能直接访问硬件设备,除非给其中一个虚拟机进行独享。这就需要 Hypervisor 在执行虚拟机程序时,如果遇到 IO 执行的指令,将这个指令翻译成宿主机、物理服务器和操作系统的其他指令。
除了上述提到的指令仿真和设备仿真之外,计算虚拟机的其它关键任务还包括安全隔离、高可用、成本效率、性能等方面。
存储虚拟化
在虚拟机里仿真出一个存储设备——云硬盘,它实现的原理就是在物理服务器上有 QEMU 模块,它负责来接 Hypervisor 和 Hypervisor 截获 IO 的指令, IO 指令就会传递到 QEMU ,然后需要对接云硬盘的客户端,在京东云叫 ZBS,由这个客户端真正来实现数据的读写,并在云硬盘的分布式服务集群里实现。
这样的分布式集群,首先实现了每一块云硬盘上的数据,这样一来,每块硬盘发生故障都不会对虚拟出来的云硬盘造成任何的影响。另外,由于读取是分散在整个集群中,即使有一个客户对云硬盘的访问是非常密集的,但分散在整个集群,访问性能就能够平均了,所以整个集群可以为单独硬盘提供非常高的访问性能,同时又保证了数据的可靠性。
除了硬盘仿真与硬盘虚拟化,安全问题同样是备受关注的话题,必须要保证不同的云硬盘,客户端只能访问到自己的数据,不能访问到别人的数据,否则会造成数据的泄漏。另外,服务高可用的性能可以将故障屏蔽不影响客户的读写,也是虚拟化带来的一个好处。
网络虚拟化:网络连接
对于网络连接,它的实现方式和存储有点类似,QEMU 来仿真一个硬件设备,这个硬件设备在虚拟机中和其它网卡没有任何区别,对于虚拟机来说,它的操作是使用这块网卡接收和发送数据。在背后,是由软件交换机 OVS 来真正提供网络连接和数据发送功能,并且由 SDN 的控制器来控制。虚拟网络的连接和其它虚拟化技术一样,都要实现安全隔离。另外要实现高可用、吞吐量、时延和抖动。
网络虚拟化:网络设备
对于网络设备的虚拟化,云上虚拟的网络设备有很多,最常使用的就是负载均衡、V**网关、专线网关、NAT 网关等等。
网络设备是由虚拟机或者容器来承载的,所以它本身就是云上的一个用户。虚拟网络还可以由流表来实现一个分布式网络的负载均衡,无须实体资源。网络设备虚拟化需要实现的目标也包括安全隔离、高可用、弹性、性能以及成本等等。
软件虚拟化架构的挑战
虚拟化产品和技术都提到了软件的实现,这在历史上是一个非常有效的方式,因为它可以快速实现虚拟化能力。但云计算是一个专业产品和技术的提供者,用软件来实现虚拟化能力带来了非常大的问题。
首先,由于是软件实现,它会占用计算资源;另外,虽然软件实现做到了安全隔离,但毕竟和虚拟机是同样运行在 CPU 上的程序,当这个程序有漏洞的时候,有可能造成虚拟机进程非法访问整个宿主机上的软件进程,或者通过旁路入侵到其它虚拟机。
还有一点,如果一个用户需要使用整个物理服务器,他就没有办法运行在上面,因为整个物理服务器是交付给用户使用的,软件实现的存储和网络虚拟化无法提供给用户来使用,那么作为解决这样问题最领先的技术是什么呢?
京东云“京刚”虚拟化引擎
现在各大云厂商都投入了巨大资源来开发软硬一体的虚拟化平台,比如,从前用软件实现的设备仿真工作,由智能网卡来提供。在京东云,我们投入巨大资源实现了“京刚”虚拟化引擎,它上面有一个高度集成的智能芯片,芯片里使用了硬件编程的方式,集成了京东云自主研发的网络和存储协议栈。京刚智能网卡(DPU)向上提供标准的硬件接口,这一整套的芯片、金刚智能网卡,加上全套的虚拟化协议栈和管理软件,就构成了京东云“京刚”虚拟化引擎。
“京刚”智能网卡虚拟化引擎提供的京东云云主机,给云计算技术上了一个新的台阶,可以为广大的开发者、企业用户提供高效、低成本的云计算资源。
下一代云计算产品技术预测
下一代云计算的产品和技术会以怎样的方式来呈现?首先到来的浪潮是函数计算,它和容器相比提供了更小、更灵活的计算单元,可以充分利用物理服务器。但由于函数计算还没有被大规模推广和使用,所以它的挑战在于需要被重构或优化,变得像使用容器一样简单。
其次,从专业化的角度考虑,容器已经成为了首选的运行环境,函数计算的底层计算单位也是由容器支撑的。在当前来看,容器仍然是一种形态的进程,是以经过包装的进程方式来运行的,容器并没有为新的功能做更进一步的优化,比如容器的安全隔离、网络性能。云计算技术发展的潜在方向就是硬件和软件协同,提升容器的安全性和网络性能。
最后,更长期的发展就是分布式云,现在很多私有化部署的计算资源,实际上是未被共享和开发的,有很多资源被闲置,且没有办法被使用。而分布式云就是要释放闲置的计算资源,使其能够以标准化的接口呈现出来,供大家使用。
但分布式云的发展也面临挑战,比如,如何能有高速、廉价、无处不在的网络连接能力,使这些资源被开放出来,以及如何用一种标准的产品形态和管理平台,保证数据的安全。然而,上述提到的这些挑战都需要软件和硬件一起协同才能达到的,所以这是一个非常远期的目标,但它是一个终极目标。