2.3 云计算的关键技术
云计算的关键技术包括虚拟化技术、并行计算技术和分布式存储技术等。
2.3.1 虚拟化技术
云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化的核心软件VMM(Virtual Machine Monitor,虚拟机监视器),是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。它们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,而且同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统,同时会分配给每一台虚拟机适量的内存、CPU、网络和磁盘。
虚拟化技术有很多实现方式,如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化、全虚拟化和半虚拟化等。
1.软件虚拟化
软件虚拟化,顾名思义,就是采用纯软件的方法在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。
常见的软件虚拟化技术有QEMU,它是通过纯软件方式来仿真X86平台处理器的指令,然后解码和执行。该过程并不在物理平台上直接执行,而是通过软件模拟实现,因此往往性能比较差,但是可以在同一平台上模拟出不同架构平台的虚拟机。
VMware则采用了动态二进制翻译技术。VMM在可控的范围内,允许客户机的指令在可控的范围内直接运行。客户机指令在运行前会被VMM扫描,其中突破VMM限制的指令被动态替换为可以在物理平台上直接运行的安全指令,或者替换为对VMM的软件调用。因此其性能上比QEMU有大幅提升,但是其失去了跨平台虚拟化的能力。
2.硬件虚拟化
硬件虚拟化,简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。
例如,X86平台的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会将客户机置于一种受限模式下运行,一旦客户机试图访问硬件资源,硬件会暂停客户机的运行,将控制权交回给VMM处理。同时,VMM还可以利用硬件的虚拟化增强技术,将客户机对硬件资源的访问完全由硬件重定向到VMM指定的虚拟资源。
由于硬件虚拟化可提供全新的架构,支持操作系统直接在上面运行,无须进行二进制翻译转换,减少了性能开销,极大地简化了VMM的设计,从而使VMM可以按标准编写,通用性更好,性能更强。
需要说明的是,硬件虚拟化技术是一套解决方案,完整的情况需要CPU、主板芯片组、BIOS和软件的支持。Intel在其处理器产品线中实现了Intel VT虚拟化技术(包括Intel VT-x/d/c),AMD也同样实现了其芯片级的虚拟化技术AMD-V。
3.全虚拟化
全虚拟化(Full Virtualization)技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化技术。它在虚拟机和硬件之间加了一个软件层Hypervisor,或者叫作虚拟机管理程序或虚拟机监视器(VMM)。
全虚拟化技术几乎能让任何一款操作系统不用改动就能安装到虚拟服务器上,而它们“不知道”自己运行在虚拟化环境下。其主要缺点是,性能方面不如裸机,因为VMM需要占用一些资源,给处理器带来开销。
4.半虚拟化
半虚拟化技术是后来才出现的技术,也叫准虚拟化技术。它就是在全虚拟化的基础上,对客户操作系统进行了修改,即增加了一个专门的API。这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。因此VMM的工作负担变得非常小,因此整体的性能也有很大的提高。不过,缺点就是要修改包含该API的操作系统,对于某些不含该API的操作系统(主要是Windows)来说,就不能用这种方法。
半虚拟化技术的优点是性能高。经过半虚拟化处理的服务器可与VMM协同工作,其响应能力几乎不亚于未经过虚拟化处理的服务器。它的客户操作系统(Guest OS)集成了虚拟化方面的代码。该方法无须重新编译或引起陷阱,因为操作系统自身能够与虚拟进程进行很好的协作。
图2-3所示为虚拟化技术的实现架构。
图2-3 虚拟化技术的实现架构
2.3.2 并行计算技术
并行计算是将一个任务分解成若干个小任务并协同执行以完成求解的过程,是增强复杂问题解决能力和提升性能的有效途径。并行计算可以通过多种途径实现,包括多进程、多线程以及其他多种方式。SuperMap是通过多线程方式实现并行计算的,可充分和更加高效地利用多核计算资源,从而降低单个问题的求解时间,节省成本,也能够满足更大规模或更高精度要求的问题求解需求。
为提高计算效率,并行计算处理问题一般分为以下三步。
1)将工作分离成离散独立部分,有助于同时解决。
2)同时并及时地执行多个程序指令。
3)将处理完的结果返回主机经一定处理后显示输出。
并行计算须满足的基本条件有以下几个。
1)并行计算机。并行计算机至少包含两台或两台以上的处理机,这些处理机通过互联网相互连接,相互通信。
2)应用问题必须具有并行度。应用问题必须具有并行度是指应用可以分解为多个子任务,这些子任务可以并行地执行。将一个应用分解为多个子任务的过程,称为并行算法的设计。
3)并行编程。在并行计算机提供的并行编程环境上,具体实现并行算法,编制并行程序并运行该程序,从而达到并行求解应用问题的目的。
2.3.3 分布式存储技术
在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题。它的主要难点有以下几个方面。
1)数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了进行人工处理,每条逐一检查,如果有上百条数据,也可以考虑,但如果有成千上万条数据,甚至过亿,那就不是人工能解决的了,必须通过工具或程序进行处理。而在海量的数据中,什么情况都可能存在。例如,某条数据的格式出了问题,在程序处理时,前面还能正常处理,到了该问题数据时,程序被迫终止等。
2)对软硬件要求高,系统资源占用率高。对海量的数据进行处理,除了好的方法,最重要的就是合理使用工具,合理分配系统资源。一般情况,如果处理的数据过TB级,小型机是要考虑的,普通的计算机如果有好的方法也可以考虑,但必须升级CPU和内存,就像面对千军万马,光有勇气没有足够的兵力是很难取胜的。
3)要求有很高的处理方法和技巧。好的处理方法是长期工作经验的积累,也是个人的经验总结。没有通用的处理方法,但有通用的原理和规则。
云计算的优势就是能够快速、高效地处理海量数据。在数据爆炸的今天,这一点至关重要。为了保证数据的高可靠性,云计算通常会采用分布式存储技术,将数据存储在不同的物理设备中。这种模式不仅摆脱了硬件设备的限制,同时扩展性更好,能够快速响应用户需求的变化。
分布式存储与传统的网络存储不同。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
在当前的云计算领域,谷歌公司开发的GFS(Google File System)和Apache基金会开发的开源系统HDFS(Hadoop Distributed File System)是比较流行的两种云计算分布式存储系统。
1)GFS技术。谷歌的非开源的GFS云计算平台能满足大量用户的需求,并行地为大量用户提供服务。使得云计算的数据存储技术具有了高吞吐率和高传输率的特点。
2)HDFS技术。大部分ICT厂商,包括Yahoo、Intel的“云”计划采用的都是HDFS的数据存储技术。未来的发展将集中在超大规模的数据存储、数据加密和安全性保证,以及继续提高I/O速率等方面。