云计算技术的应用及发展趋势综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Microcomputer Applications Vol. 27, No.10, 2011 专家论坛 微型电脑应用 2011年第27卷第10期 ·1·
文章编号:1007-757X(2011)10-0001-03
云计算技术的应用及发展趋势综述
虞慧群,范贵生
摘 要:云计算是当前信息产业的热点领域,具有广阔的应用前景。从定义、特征和模型3个方面,介绍了云计算的基本概念,对云计算的虚拟化、资源管理、安全性、分布式编程、数据存储等核心技术和云计算标准进行综述,并对分析主流的云计算技术应用及发展趋势进行分析。
关键词:云计算,云产业,云安全,服务
中图分类号:TP393 文献标志码:A
0 引言 近年来,云计算快速成为了一种广泛接受的计算模式。工业界和学术界对云计算的核心概念有了一定的共识,对云计算提供新的服务和消费商业模式有了基本认同。另外,云计算产业应用,需要满足服务质量需求、服务层协议和标准支撑,得到了普遍认同[1]。 鉴于云计算有广阔应用前景,世界上许多国家都将它列为优先发展的战略产业,众多企业投入大量人力物力开发云应用产品。然而,云计算产业尚处于发展的起步阶段。云计算从理论基础、技术、服务模式和标准化工作等方面都不够成熟。云计算的发展需要政府、企业和科研机构投入人力和物力,进行研究和开发。 本文主要综述云计算相关技术,着重阐述云计算的基本概念,核心技术和标准化工作,并分析主流的云计算技术应用及发展趋势。 1 云计算的概述 1.1云计算的定义 云计算是一种新型网络化计算模式,尚缺乏统一的定义。美国NIST 的定义是[ 2]:云计算是一种能够通过网络随
时随地、按需方式、便捷地获取计算资源(包括网络、服务
器、存储、应用和服务等)并提高其可用性的模式,这些资
源来自一个共享的、可配置的资源池,并能够以最省力和无
人干预的方式获取和释放。
云计算具有如下5个基本特征[3]:
(1)计算能力以服务形式提供:服务的提供者与使用
者分离,使用者无需拥有IT 资产。
(2)基于网络的计算:可以通过互联网获取各种能力,
并可以通过标准方式访问,以通过众多瘦客户端或胖客户端
推广使用(例如移动电话,笔记本电脑,PDA 等)。
(3)资源共享:供应商的计算资源被集中,以便以多
用户租用模式服务所有客户,同时不同的物理和虚拟资源,
可根据客户需求动态分配和重新分配。客户一般无法控制或
知道资源的确切位置。这些资源包括存储、处理器、内存、
网络带宽和虚拟机器。
(4)快速伸缩性:可以快速有弹性地提供计算能力。
对客户来说,可以租用的资源看起来似乎是无限的,并且可
在任何时间购买任何数量的资源。
(5)用户根据自身的需求定制服务,支付服务的多少
取决于服务内容和服务形式的计量。
1.2 云计算的模型
云计算基于计算资源池,使各种应用系统能够根据需要
获取计算力、存储空间和各种软件服务[4]。云计算的参考模
型框架,如图1所示:
图1 云计算模型框架
———————————
基金项目:上海市曙光计划项目(07SG32)
作者简介:虞慧群,华东理工大学计算机科学与工程系,教授,博士生导师,上海,200237
范贵生,华东理工大学计算机科学与工程系,博士,助理研究员,上海,200237
Microcomputer Applications Vol. 27, No.10, 2011 专家论坛 微型电脑应用 2011年第27卷第10期
·2·
在功能方面,云计算提供用户基于云的各种服务,包括
软件即服务(SaaS)、平台即服务( PaaS)和基础设施即服务
(IaaS)等3个层次,其中,SaaS 层的作用是将应用以基于
Web 的方式提供给客户,PaaS 层的作用是将一个应用的开
发和部署平台作为服务提供给用户,而IaaS 层的作用是将
各种底层的计算(比如虚拟机)和存储等资源作为服务提供
给用户。从用户角度而言,这3层服务是独立的,因为它们
提供的服务不同,而且面对的用户也不尽相同。但从技术角
度而言,云服务这3层是有一定依赖关系的。比如一个SaaS
层的产品和服务,不仅需要用到SaaS 层本身的技术,而且
还依赖PaaS 层所提供的开发和部署平台或者直接部署于
IaaS 层所提供的计算资源上,而PaaS 层的产品和服务,也
很有可能构建于IaaS 层服务之上。
在管理方面,云计算平台负责整个云计算中心的资源管
理、任务管理、用户管理和安全管理等工作。资源管理,负
责均衡地使用云资源节点,检测节点的故障并试图恢复或屏
蔽之,并对资源的使用情况进行监视、统计。任务管理,负
责执行用户或应用提交的任务,包括完成用户任务映象
(Image )的部署和管理、任务调度、任务执行、任务生命
期管理等。用户管理,是实现云计算商业模式的一个必不可
少的环节,包括提供用户交互接口、管理和识别用户身份、
创建用户程序的执行环境、对用户的使用进行计费等。安全
管理,保障云计算设施的整体安全,包括身份认证、访问授
权、综合防护和安全审计等。
2 云计算的支撑技术
云计算技术是由众多技术融合的综合体,其中主要包括
虚拟化技术、资源管理、安全性技术、分布式编程技术及数
据存储技术[5]。
2.1 虚拟化
虚拟化是云计算的基石,它有效地分离了硬件与软件,
而云计算则让人们将精力更加集中在软件所提供的服务上
[6]。在云计算模式中,用户并不知道私有数据的准确位置,
用户和云计算服务提供商之间进行协商,由服务提供商来负
责管理。各个用户的私有数据都存储在“云”中,共享底层的
存储资源。通过增加一个虚拟化层,可以将物理站点用于多
个独立的虚拟机,而这些虚拟机可能由不同的用户拥有和管
理。这项技术可以极大地提高资源利用率,因为低计算需求
的任务可以共享一个单独的物理站点(如服务器)资源。虚
拟机的部署和调度还能简化负载平衡,从而达到云计算的全
局性能最优化。在云计算模式中,需要实现计算虚拟化、网
络虚拟化和存储虚拟化3个基本的技术。目前,虚拟化技术
的产品主要有:EMC (易安信)厂商的VMware 系列虚拟产
品,Microsoft (微软)的Virtual Server 、Hyper-V ,SUN (微
太阳)公司的Virtual Box 及Citrix (思捷)公司的XenServer 、
Xen 。虚拟化技术的应用场景,较典型的有:集群服务,小
应用隔离,生产、开发、测试环境隔离,资源利用管理等等。
2.2 资源的管理
云计算的资源包括存储资源、计算资源、网络资源、基
础设施资源以及其它资源[7]。云计算资源管理系统的基本功能,是接受来自云计算用户的资源请求,并且把特定的资源分配给资源请求者。合理地调度相应的资源,使请求资源的作业得以运行。一般而言,云计算资源管理系统应提供4种基本的服务,即资源发现、资源分发、资源存储和资源调度。资源分发和资源发现以及资源存储是资源调度的前提条件,资源调度实施,把所需资源分配到相应的请求上去,包括通过不同结点资源的协作分配。云计算的资源管理方法,涉及到云存储架构、计费、资源模型和调度等方面。由于云计算的资源在地理上是分布的,形式上是异构的,并且各个组织和管理域有各自的资源管理策略和不同的访问代价模型。因此,云计算的资源管理必须处理好存储架构问题,解决资源部署、监控和调度策略等问题。目前无论是VMware 还是微软的产品,对于其他虚拟化软件的管理都不是很理想的。所以,当应用云计算时,面对庞杂的设备平台和各种技术,如何有效整合各种资源,是实现云计算的关键。 2.3 安全技术 安全性是用户选择云计算时的首要考虑的因素,也是云计算实现可持续发展的关键[8]。云计算的开放性、复杂性、按需服务、虚拟化资源池、快速弹性架构和多租户等特点,也直接影响云计算环境的安全和相关的安全保护策略。云计算为信息安全领域带来了巨大的挑战,主要包括: (1) 利用虚拟化技术能够隔离软件与硬件、应用软件与底层系统之间的直接依赖关系,能够提供比操作系统更强的隔离性,然而虚拟化技术也会带来主机受到破坏及虚拟网络中断等安全问题。 (2) 在云平台中运行的各类云应用,没有固定不变的基础设施,没有固定不变的安全边界,难以实现用户数据安全与隐私的保护。 (3) 云服务所涉及的资源,由多个管理者所有,存在利益冲突,导致无法统一规划部署安全防护措施。 目前,由于信息安全领域仍缺乏针对此类问题的充分研究,尚难为安全的云服务提供必要的理论基础和工具支撑。因此,未来在信息安全学术界与产业界共同关注及推动下,信息安全领域将围绕云服务的“安全服务品质协议”的制定、交付验证、第三方检验等,逐渐发展形成一种新型的技术体系与管理体系,与之相适应。 2.4 分布式的编程模式 云计算实际上是一种处理大规模密集型数据的并行分布式计算技术。为了使用户能更轻松的享受云计算带来的服务,让用户能利用该编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。当前IT 厂商提出的“云”计划的编程工具,均基于Map-Reduce 和Dryad 的编程模型。MapReduce 是谷歌提出的一个软件架构,用于大规模数据集(大于1TB )的并行运算[9]。概念“Map (映射)”和“Reduce (化简)”及基本思想来自于函数式编程语言。MapReduce 的主要思想,是将要执行的问题分解成Map 和Reduce 两个过程:先通过Map 函数将问题分解,并将数据分割成不相关的区块,分配给服务器并行处理;再通过