1.4 云计算涉及的关键技术
云计算的概念不仅仅局限于计算,实际上直接称为“云”更加合适,云的本质是网络为用户提供按需即取(Service on Demand)的服务,包括提供计算能力、存储能力以及网络能力的各种服务的组合。各种基于云的服务则都需要相应的技术来提供支撑,下面就列举了云计算涉及的一些关键技术。
1.虚拟化技术
在计算机中,虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间不可切割的障碍,使得用户可以使用比原本组态更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。
在实际的生产环境中,虚拟化技术主要用来解决高性能物理硬件产能过剩和老旧硬件产能过低的重组和重用,透明化底层物理硬件,从而最大化利用物理硬件。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时运行,而通过虚拟化技术,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者虚拟主机上;超线程技术只是单CPU模拟双CPU以平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
2.分布式处理技术
分布式处理和并行处理是为了提高并行处理速度所采用的两种不同的体系架构。
并行处理是利用多个功能部件或多个处理器同时工作来提高系统性能或可靠性的计算机系统,这种系统至少包含指令级或指令级以上的并行。
分布式处理则是将不同地点或具有不同功能,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调完成大规模信息处理任务的计算机系统。
分布式系统是建立在网络之上的软件系统,具有高度的内聚性和透明性。以分布式数据库为例,内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统;透明性是指每一个数据库分布节点对用户的应用来说都是透明的,即看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户无须知道关系是否分割、有无副本、数据存放于哪个站点以及事务在哪个站点上执行等。
为了达到互操作性,用户需要一个标准的分布式计算环境,在这个环境里,所有系统和资源都可用。
DCE(分布式计算环境)是OSF(开放系统基金会)开发的分布式计算技术的工业标准集,提供了保护和控制数据访问的安全服务、名字服务,以及高度可伸缩的模型,主要用于组织极为分散的用户、服务和数据。DCE可在所有主要的计算平台上运行,并设计成支持异型硬件和软件环境下的分布式应用。
CAP理论是由Eric Brewer提出的分布式系统中最为重要的理论之一:
Consistency:(强)一致性,事务保障,ACID模型。
Availiablity:(高)可用性,冗余以避免单点,至少做到柔性可用(服务降级)。
Partitiontolerance:(高)可扩展性(分区容错性),一般要求系统能够自动按需扩展,比如HBase。
CAP三个因素最多只能满足两个,不可能三者兼顾。对于分布式系统来说,分区容错性是基本要求,所以必然要放弃一致性。对于大型网站来说,分区容错性和可用性的要求更高,所以一般都会选择适当放弃一致性。对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也是传统数据库的扩展能力有限的原因。
在CAP三者中,“可扩展性”是分布式系统的特有性质。分布式系统的设计初衷就是利用集群多机的能力处理单机无法解决的问题。当需要扩展系统性能时,一种做法是优化系统的性能或者升级硬件(scale-up),另一种做法就是“简单”地增加机器来扩展系统的规模(scale-out)。好的分布式系统总在追求“线性扩展性”,即性能可以随集群数量增长而线性增长。
可用性和可扩展性一般是相关联的,可扩展性好的系统,其可用性一般会比较高,因为有多个服务(数据)节点,不是整体的单点。所以分布式系统的所有问题基本都是在一致性与可用性和可扩展性这两者之间的一个协调和平衡。对于没有状态的系统,不存在一致性问题,根据CAP原理,它们的可用性和分区容错性都是很高的,简单地添加机器就可以实现线性扩展。而对于有状态的系统,则需要根据业务需求和特性在CAP三者中牺牲其中之一。一般来说,交易系统类的业务对一致性的要求比较高,一般会采用ACID模型来保证数据的强一致性,所以其可用性和扩展性就比较差。而其他大多数业务系统一般不需要保证强一致性,只要最终一致就可以了,因此它们一般采用BASE模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。
3.海量数据存储技术
为了保证高可用、高可靠和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。
另外,云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。因此,云计算的数据存储必须具有高吞吐率和高传输率的特点。
云计算系统中广泛使用的数据存储系统是Google的GFS和Hadoop团队开发的GFS的开源实现HDFS。
GFS即Google文件系统(Google File System),是一个可扩展的分布式文件系统,用于大型的、分布式的对大量数据进行访问的应用。GFS的设计思想不同于传统的文件系统,它是针对大规模数据处理和Google应用特性而设计的。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。
GFS由一个Master和大量块服务器构成。Master存放文件系统的所有元数据,包括名字空间、存取控制、文件分块信息、文件块的位置信息等。GFS中的文件被切分为64MB的块进行存储。
GFS采用冗余存储的方式来保证数据的可靠性,每份数据在系统中保存3个以上的备份。为了保证数据的一致性,对于数据的所有修改需要在所有备份上进行,并用版本号的方式来确保所有备份处于一致的状态。
客户端不通过Master读取数据,以免大量读操作使得Master成为系统瓶颈。客户端从Master获取目标数据块的位置信息后,直接与块服务器交互并进行读操作。
GFS将写操作控制信号和数据流分开,即客户端在获取Master的写授权后,将数据传输给所有的数据副本,在所有数据副本都收到修改的数据后,客户端才发出写请求控制信号。在所有数据副本更新完数据后,由主副本向客户端发出写操作完成控制信号。当然,云计算的海量数据存储技术并不是只有GFS,其他IT厂商,包括微软、Hadoop开发团队也在开发相应的数据管理工具。其本质上是通过一种分布式数据存储技术,以及与之相关的虚拟化技术,对上层屏蔽具体的物理存储器的位置、信息等。在快速的数据定位、数据安全性、数据可靠性以及底层设备内存储数据量的均衡等方面仍需要继续研究完善。
Ceph是云计算分布式存储中另一个明星项目,由Sage Weil于2004年发起。Ceph是典型的分布式文件系统,它面向错误设计,假设大规模存储(PB级存储)故障是常见现象而不是例外情况,可轻松扩展到数PB级容量,支持多种工作负载,高性能并且具备高可靠性。
作为分布式文件系统,Ceph能够在维护POSIX兼容性的同时加入复制和容错功能。自2010年3月底开始,用户可以在Linux内核(从2.6.34版本开始)中找到Ceph的身影。作为Linux的文件系统备选之一,Ceph.ko已经集成到Linux内核之中。2016年,Ceph官方认为其已经具备生产环境应用能力。
同时,Ceph也是统一存储系统,支持三种接口:
Object:有原生的API,而且也兼容Swift和S3的API。
Block:支持精简配置、快照、克隆。
File:POSIX接口,支持快照。
目前Inktank公司负责Ceph的开发,但Ceph是开源的,遵循LGPL。Inktank还积极整合Ceph与其他云计算和大数据平台,目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop、Docker等。
4.海量数据管理技术
云计算需要对分布的、海量的数据进行处理、分析,因此,数据管理技术必须能够高效地管理大量的数据。云计算系统中的数据管理技术主要是Google的BT(Big Table)数据管理技术和Hadoop团队开发的开源数据管理模块HBase。由于云数据存储管理形式不同于传统的RDBMS数据管理方式,如何在规模巨大的分布式数据中找到特定的数据是云计算数据管理技术所必须解决的问题。同时,由于管理形式的不同,造成传统的SQL数据库接口无法直接移植到云管理系统中来,目前一些研究关注于为云数据管理提供RDBMS和SQL的接口,如基于Hadoop的子项目HBase和Hive等。另外,在云数据管理方面,如何保证数据安全性和数据访问高效性也是研究关注的重点问题之一。
5.编程方式
云计算提供了分布式计算模式,客观上要求必须有分布式编程模式。云计算采用了一种思想简洁的分布式并行编程模型Map-Reduce。Map-Reduce是一种编程模型和任务调度模型,主要用于数据集的并行运算和并行任务的调度处理。在该模式下,用户只需要自行编写Map函数和Reduce函数即可进行并行计算。其中,Map函数中定义各节点上分块数据的处理方法,而Reduce函数定义中间结果的保存方法以及最终结果的归纳方法。
6.云计算平台管理技术
云计算资源规模庞大,服务器数量众多并分布在不同的地点,且同时运行着数百种应用,因此如何有效地管理这些服务器并保证整个系统提供不间断的服务是一个巨大的挑战。云计算系统的平台管理技术能够使大量服务器协同工作并方便地进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化手段实现大规模系统的可靠运营。