云计算架构及其技术研究
2015-09-09薛博召
薛博召
摘要:云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源,国内外知名的大企业都在进行云计算架构的相关研究。谷歌、亚马逊、阿里巴巴均在部署并架构自己的云计算平台,云服务无疑将成为IT企业未来的主要赢利模式之一。该文主要对云计算的架构技术进行分析、研究,以便为企业构建可靠、高效的云服务平台提供技术参考。
关键词:云计算;云计算架构;云计算服务;
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)03-0072-02
目前“云计算”的定义有很多,对于到底什么是云计算,至少可以找到100种解释。云计算技术可以把大量零散的低运算能力单元集中起来,形成强大的运算能力,甚至可以达到每秒10万亿次的运算水平,如此强大的计算能力可以用来模拟核爆炸、预测气候变化和市场发展趋势。从易用性的角度,用户无需了解云计算内部的实现原理和方式,可以通过台式机、笔记本、手机等方式直接接入数据中心,由数据中心提供所需的运算、存储等资源。
1 云计算架构
目前大家比较公认的云计算架构主要划分为基础设施层(IaaS)、平台层(PaaS)和软件服务层(SaaS)三个层次,如下图1所示:
图1 云计算架构示意图
IaaS(Infrastructure as a Service)是基础设施层,主要包括服务器、网络通信设备、存储设备等,可以根据用户需求提供计算能力、存储能力或网络能力等IT基础设施类服务,也就是能在基础设施层面提供的服务。今天IaaS能够得到推广使用得益于虚拟化技术的发展、成熟,利用虚拟化技术能够将各种计算设备统一虚拟化为虚拟资源池中的计算资源,将存储设备统一虚拟化为虚拟资源池中的存储资源,将网络设备统一虚拟化为虚拟资源池中的网络资源。当用户订购这些资源时,数据中心管理者直接将订购的份额打包提供给用户,对外提供基础设施服务。
PaaS(Platform as a Service)平台即服务,如果以传统计算机架构中“硬件+操作系统/开发工具+应用软件”的观点来看待,那么云计算的平台层应该提供类似操作系统和开发工具的功能。实际上也的确如此,PaaS定位于通过互联网为用户提供一整套开发、运行和运营应用软件的支撑平台。微软公司的Windows Azure和谷歌公司的GAE,可以算是目前PaaS平台中最为知名的两个产品了。
SaaS(Software as a Service)软件即服务,是利用互联网就可以提供软件服务的一种应用模式。在该模式下,用户无需将大量资金用于软件、硬件以及开发团队建设,只需支付一定费用,就能够通过网络享受到相应的软件服务,而且整个系统的维护也由厂商负责。
2 云计算技术研究
2.1虚拟化技术
虚拟化,能够将一台计算机虚拟成多台独立的逻辑计算机,每台逻辑计算机可以运行不同的操作系统,运行在不同逻辑计算机上的应用程序之间互不影响,可以显著提高计算机的利用效率。虚拟化可以通过多种方法实现,下面就目前主流的方法进行介绍:
1)完全虚拟,是指在虚拟服务器与底层硬件之间搭建一个抽象层hypervisor,hypervisor可以用来捕捉CPU指令,为指令访问硬件控制器和外设充当中介。因此,通过完全虚拟化技术可以在虚拟服务器上安装任何操作系统,每个虚拟服务器都像是一台独立的物理服务器。完全虚拟的优点是兼容各个版本的操作系统,兼容性、通用性比较好,缺点是抽象层会占用一定的硬件资源,会带来额外的资源开销。
2)准虚拟,完全虚拟化的特点是处理器密集型,因为它是通过抽象层来管理每一个虚拟服务器,并让虚拟服务器之间彼此独立。减轻这种负担的一种方式就是,改变客户操作系统,让它以为自己运行在虚拟环境下,能够与抽象层协同工作。准虚拟化的优点是性能高,通过准虚拟化处理过的服务器可与抽象层协同工作,其响应能力几乎可以等同于未经过虚拟化处理的服务器。
3)系统虚拟,是指在操作系统层面增加虚拟服务器功能,与完全虚拟化和准虚拟化相比,系统虚拟没有抽象层,由主机操作系统自身负责在多个虚拟服务器之间分配硬件资源。另一个区别是,如果使用操作系统层虚拟化技术,所有虚拟服务器只能运行同一操作系统(但是每个实例可以有自己的应用程序和用户账户)。操作系统层虚拟化具有灵活性较差的缺点,但是本机速度性能比较高。另外,由于所有虚拟服务器都使用单一、标准的操作系统,所以与异构环境相比要更容易管理一些。
2.2分布式并行架构技术
随着科学的发展,我们需要解决越来越多非常复杂的问题,这些问题通常需要相当大的计算能力才能解决,有很多都是跨学科的、富有挑战性的,且是人类亟待解决的问题,比如:
1)解决复杂的数学难题,如:GIMPS(寻找最大梅森素数);
2)寻找更安全的密码系统,如:RC-72(密码破解);
3)生物病理研究,例如:研究蛋白质折叠、误解、聚合及由此引起的相关疾病;
4)各类疾病药物研究,如:United Devices(寻找治疗癌症的药物);
5)信号处理,如:SETI@Home(在家寻找地外文明)等。
从上述实例可以看出,有些项目规模非常庞大,需要很大计算量,单纯靠一台电脑在一个能让人接受的时间内完成计算是绝对不可能的。分布式计算可以把一个需要非常巨大计算能力才能解决的问题分解成许多小的组成部分,然后把这些分解后的任务分配给多个计算机进行处理,最后把这些计算机处理的结果综合起来得到最终结果。
3 主流云计算框架
3.1 Hadoop
Hadoop是由Apache基金会开发的分布式系统基础架构。Hadoop框架的核心是:HDFS和MapReduce。HDFS为海量的数据提供存储服务,MapReduce则为海量的数据提供计算服务。
HDFS(Hadoop分布式文件系统)被设计成适合运行在通用硬件上的分布式文件系统。其特点包括:
1)高容错性,整个HDFS系统可以由成百上千个存储着文件数据片断的服务器组成,每一台服务器都很可能出现故障,当其中某个服务器出现故障时不会对整个文件系统造成影响,HDFS仍然可以对外提供数据访问服务。正是因为这一特性,HDFS非常适合部署在廉价的机器上。
2)高吞吐量数据访问,运行在HDFS上的应用程序必须通过流式访问数据,它不是运行在普通文件系统之上的普通程序。HDFS的设计适合批量处理,而非用户交互,重点是提高数据吞吐量,而不是数据访问的反应时间。
3)大数据集,典型的HDFS文件大小是GB或者TB级别。因此HDFS在设计上支持大文件,应该有很高的聚合数据带宽,一个HDFS集群可以支持数百个节点,支持千万级别的文件。
HDFS是一个的主从结构,一个HDFS集群包含一个名字节点,它是一个管理文件命名空间和调节客户端访问文件的主服务器,名字节点包含了每个文件的分割情况以及每个文件块的映射表信息,用于接收用户读写文件的请求。与名字节点不同,一个HDFS集群包含若干个数据节点,数据节点负责存储文件数据。HDFS的工作机制是在存储文件之前,将文件分割成块,除了最后一块以外,所有块的大小都相同,HDFS将文件块分布存储在不同数据节点,为了保证高容错性,防止由于数据节点故障或者网络故障等导致数据丢失或者无法访问,HDFS将文件块按照一定算法复制到多个数据节点。
MapReduce是用于并行处理大数据集的软件框架。MapReduce的核心内容是函数性编程中的map函数和reduce函数,它通常由很多map实例和很多reduce实例组成。map函数对接收到的一组数据进行转换,输出一个键/值对列表,其输入域的每个元素也都是键/值对。reduce函数接收map函数生成的键/值对列表,然后以列表中的键作为唯一性标识,将具有相同键值的键值对进行合并、计算,最终缩小输入的键值对列表,达到数据凝练、抽取的目的。
3.2 NoSQL
NoSQL(Not Only SQL)泛指非关系型数据库,随着Web2.0的发展,关系型数据库在应对大规模、高并发场景存在很多难以克服的问题,为了应对海量数据存储和访问带来的挑战,NoSQL应运而生。与关系型数据库不同,NoSQL数据库没有统一的架构,为了应对各种不同的场合、应用场景,市场上衍生出很多不同类型的NoSQL数据库,比较主流的包括:Redis和MongoDB。
Redis是一个Key-Value存储数据库,它支持string、list、set、zset、hash(哈希)等多种value类型。传统数据库将数据保存到硬盘,每次从硬盘获取数据效率不高。为了保证数据访问效率,Redis将数据缓存在内存中,然后将内存中的数据周期性的写入磁盘,此外还会将内存数据修改操作追加到磁盘记录文件,并且在此基础上实现了master-slave(主从)同步。
MongoDB是基于分布式文件存储的、介于关系型和非关系型之间的数据库,它支持的数据结构非常松散,内部采用类似json的格式存储数据(MongoDB称之为bson格式)。由于其性能很高,也可以作为系统架构中的缓存使用。此外MongoDB具备高伸缩性,可以构建由数十、数百台服务器组成的数据库集群。
4 结束语
云计算作为近几年IT行业讨论的热点话题,已经由最初的概念炒作,变为如今广泛应用的服务模式。本文主要从技术层面对云计算架构以及常用的云计算框架技术进行介绍,旨在剖析云计算服务构建过程中可能用到的技术,可以为企业构建公有云或者私有云提供技术参考。
参考文献:
[1] 李舒磊.云计算及其架构技术研究[J].中小企业管理与科技,2013(6).
[2] 孙健,贾晓菁. Google云计算平台的技术架构及对其成本的影响研究[J].电信科学,2010(1).
[3] 王鹏, 董静宜. 一种云计算架构的实现方法研究[J].计算机工程与科学,2009(S1).