书城计算机网络云计算和现代远程教育
19092800000015

第15章 云计算技术(3)

在异步消息通信中,客户端和服务器端并不直接通信。客户端把请求以消息的形式放在请求消息队列里面,然后继续处理其他业务逻辑。服务实例则会从请求消息队列中获取请求消息,并且将处理结果放入响应消息队列里面,然后立即处理下一个请求。消息通信管理软件通过判断消息请求是否成功发给目标服务实例来判断该实例是否可用,并且在目标服务实例不可用的情况下将消息发给其他服务实例,从而为客户端提供高可用的服务。

异步消息通信机制已经经过了多年的发展。早在1995年就提出了生产者/消费者模型的分布式消息队列方案,并且能够根据分析模型考量和预测消息队列的性能。Java Message Service(JMS)是J2EE平台上的一个消息通信标准,J2EE应用程序可以通过JMS来创建、发送、接收和阅读消息。Apache A。tiveMQ是JMS昀一个开源实现版本,IBM WebSphere MQ则是实现了JMS的一个商业产品,并且通过一系列的增强特性提高了JMS消息通信的性能和可管理性。异步消息通信已经成为面向服务架构中组件解耦合及业务集成的重要技术。

面向服务的理念使得异步消息通信对云计算更加重要。异步消息通信机制可以使得云计算每个层次中的内部组件之间及各个层次之间解耦合,并且保证云计算服务的高可用性。异步消息通信机制对于服务的可伸缩性也非常重要,消息队列管理软件可以通过队列中的消息数量和消息请求的服务类型预测每种服务的工作负载变化趋势,并且通过该趋势自动增加和减少服务实例。

云计算也给分布式系统中的消息通信带来了新的挑战。首先,消息通信服务必须足够稳定,以保证在应用程序需要使用消息服务的时候该服务一定是可用的,并且保证消息在互联网传输过程中不会丢失。一旦消息传送出现问题,需要有技术能够保存消息,并不断重试传送,等待故障被修复后再次进行通信。这样就需要有消息的保存机制、冗余备份机制、副本同步机制等。其次,消息通信服务必须能够伸缩,从而支持大规模节点同时执行高性能的消息读写操作,为此必须要支持多种方式的消息读写模式,如边读边写、边读边发送、边写边发送等。云计算的安全问题一直以来备受关注,因此消息通信服务还要保证消息的传递是安全的,从而保证业务是安全的。此外,紧凑、高效的消息内容模型对提高消息处理效率非常重要,这在云计算这样的大规模消息通信处理环境中体现得尤为明显。云中的消息通信还要能够支持各种各样的消息格式,兼容多样的消息长度,因为使用云的用户并不局限于某一领域或者某一平台。目前,云计算环境中的大规模数据通信技术仍在发展阶段,Amazon公司的Simple Queue Service(SQS)是当今业界着名的云计算大规模消息通信产品。

4.6大规模分布式存储

分布式存储的目标是利用多台服务器的存储资源来满足单台服务器所不能满足的存储需求。分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读写操作的安全性、可靠性、高效性等各方面要求。

随着过去几十年互联网技术的发展,越来越多的互联网应用需要存储海量数据,比如搜索引擎和互联网视频网站,这些需求催生了一系列优秀的大规模分布式存储技术。分布式存储技术可以通过多种方式实现,一种比较典型的实现方式是分布式文件系统。分布式文件系统允许用户像访问本地文件系统一样访问远程服务器的文件系统,用户可以将自己的数据存储在多个远程服务器上,分布式文件系统基本上都有冗余备份机制和容错机制来保证数据读写的正确性。云环境的存储服务基于分布式文件系统并根据云存储的特征做了相应的配置和改进。另一类分布式存储的实现方式是分布式存储软件或服务,例如,着名的Ryze存储服务以及很多P2P文件存储系统。下面分别介绍分布式文件系统和云存储服务。

下面介绍几个典型的分布式文件系统。Frangipani是一个伸缩性很好的高性能分布式文件系统,该系统采用了两层的服务体系架构:底层是一个分布式存储服务,该服务能够自动管理可伸缩、高可用的虚拟磁盘;在这个分布式存储服务上层运行着Frangipani分布式文件系统。JetFile是一个基于P2P的组播技术、支持在Internet这样的异构环境中分享文件的分布式文件系统。Ceph是一个高性能并且可靠的分布式文件系统,它通过把数据和对数的管理在最大程度上分开来获取极佳的I/O性能。

Google File System(GFS)是Google公司设计的可伸缩的分布式文件系统。Google公司的工程师在考虑了分布式文件系统的设计准则的基础上,又发现了以下几个不同于传统分布式文件系统的需求:(1)PC服务器极易发生故障,造成节点失效,故障的原因多种多样,有机器本身的、网络的、管理员引起的及外部环境引起的,因此需要对整个系统中的节点进行监控,检测出现的错误,并开发相应的容错和故障恢复机制;(2)在云计算环境中,海量的结构化数据被保存为非常大的文件,一般为GB量级,因此需要改变原有的基于对中小文件(KB或者MB量级)进行管理的文件系统设计准则,以适应对超大文件的访问;(3)系统中对文件的写操作绝大多数是追加操作,也就是在文件的末尾写入数据,在文件中间写入数据的情况其实很少发生,而且数据一旦被写入,绝大多数情况下都是被顺序地读取,不会被修改,因此在设计系统时把优化重点放在追加操作上,就可以大幅度提高系统的性能;(4)设计系统时要考虑开放的、标准的操作接口,并隐藏文件系统下层的负载均衡、冗余复制等细节,这样才可以方便地被上层系统大规模地使用。因此,CFS能够很好地支持大规模海量数据处理应用程序。

云计算的出现给分布式存储带来了新的需求和挑战。在云计算环境中,数据的存储和操作都是以服务的形式提供的;数据的类型多种多样,包括了普通文件、虚拟机镜像文件这样的二进制大文件、类似XML的格式化数据,甚至数据库的关系型数据等;云计算的分布式存储服务设计必须考虑到各种不同数据类型的大规模存储机制,以及数据操作的性能、可靠性、安全性和简单性。

目前,在云计算环境下的大规模分布式存储领域已经有了一些研究成果和应用。BigTable是 Google公司设计的用来存储海量结构化数据的分布式存储系统,Google公司使用该系统来将网页存储成分布式的、多维的、有序的图。Dynamo是Amazon/A公司设计的一种基于key/value(键值)对的分布式存储系统,该系统在设计之初的一个主要考虑就是Amazon司的大规模数据中心时时刻刻都可能发生大大小小的部件失效,因此Dynamo能够提供非常高的可用性。Amazon公司的Simple Storage Service(S3)是一个支持大规模存储多媒体的二进制文件的云计算存储服务。Amazon公司的SimpleDB是建立在S3和Amazon EC2之上的用来存储结构化数据的云计算服务。

4.7许可证管理与计费

许可证管理与计费是IT基础设施的最终支付环节,涉及服务提供商与用户的切身利益。用户通过购买许可证或者支付费用获得对软件、硬件、服务的产权或使用权利,以及相应的售后服务支持;各提供商获得用户支付的费用。因此,通过许可证管理与计费,整个信息技术行业才得以运转。

从软件的许可证计费模型来看,在传统的软件许可证购买方式下,用户需要估算自己需要使用的软件的CPU数量、主机数量、用户数量,然后根据软件发售商提供的许可证计算方法,得到一个需要购买的许可证数量的最大值,作为最终购买的数量。举例来说,用户的数据中心有200台机器需要使用一个软件,每台机器有1个CPU,那么用户购买软件时,需要购买200个许可证。但在实际使用时,可能只有几台机器在使用这个软件,而使用软件的机器上的CPU占用率也远远不足100 %。也就是说,在传统的软件许可证计费模型下,用户购买了远远超过其真实使用量的许可证数量,可以说是花了不必要的费用。

随着云计算时代的到来,IT基础设施的许可证管理与计费模式将发生重大变化。在云计算的场景下,用户可以按需付费或者按使用计费,少花冤枉钱。在按需付费模式下,用户可以估计自己对于软件许可证的使用情况,决定自己采购的许可证数量。云计算环境会根据用户的支付给用户一定量的许可证,并按照用户在云计算环境中的使用情况计算已使用的许可证数量或释放许可。当剩余的许可证数量少于某一个特定的阈值时,系统会提醒用户,让用户决定是否追加付费,或者减少他当前使用的许可证数量。在按使用计费的模式下,用户甚至不需提前估计自己需要的许可证数量,系统会自动跟踪用户在云计算环境里的使用情况,定期生成许可证账单。也就是说,未来用户使用云计算环境中的资源会像使用水和电一样简单方便。虽然云计算的新型计费模型设计得非常美好,但是目前为了达到这个目标还有很多工作要做,其中最迫切的一个问题就是大量的软件、硬件提供商目前还没有制定出其产品对应在云计算环境下的计费模式,从而成为这些产品进入云计算环境的障碍。

目前,比较成熟的云环境计费模型是Amazon公司提供的Elastic Compute Cloud(EC2)和Simple Storage Service(S3)的按量计费模型,用户按占用的虚拟机单元(固定频率和数量的CPU、固定数量的内存、特定操作系统)、IP地址、带宽和存储空间付费。具体来说,在EC2中,对虚拟机单元的计费分为两类,一类是按需要的虚拟机单元,即用户使用时才生成、部署,EC2不保证该单元一直在系统中存活;另一类是预留的虚拟机单元,该类虚拟机单元一旦被购买,EC2会为该虚拟机预留空间,并根据用户的需求一直保持开机状态。两种计费类型都支持按使用时间计费。

在S3中,存储服务被分为三类;数据存储、数据传输和数据请求操作。S3对数据存储和数据传输按流量计费,且流量越大,单位存储的资费越低。对于数据请求操作,按照请求的类型按次计费:PUT(修改值)、COPY(拷贝值)、POST(增加值)三个占用存储空间的操作以及LIST(列表)这个比较复杂的操作费用较高,GET(取值)这个最常用的且不占用存储空间的操作,费用为前面几个操作费用的十分之一,而DELETE(删除)这个释放空间的操作不收取费用。Amazon公司通过上面EC2和S3的计费机制已经收到了很好的盈利效果,但是还不能大规模推广到其他的云环境,例如,Amazon EC2的计费是以虚拟机为单元的,没有考虑虚拟机内运行的软件及软件的使用情况。