版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章 主流云平台内容2.1 云平台综述2.2 Amazon云平台2.3 Google云平台2.5 Openstack云平台内容2.1 云平台综述云计算的出现,给业界带来了重大变革,而云平台的出现是该转变的最重要环节之一。这种平台允许开发者们或是写好的程序放在“云”里运行,或使用“云”中提供的服务,或二者皆是。云平台提供基于“云”的服务,供开发者创建应用时使用。开发者不需要构建自己的基础设施,完全可以依靠云平台来创建新的SaaS应用。云平台的直接用户是开发者,而不是最终的用户。2.2 Amazon云平台2.2.1 弹性计算云EC22.2.2 简单存储服务S32.2.3 简单数据库服务SimpleDB2.2.4 简单队列服务SQS2.2 Amazon云平台Amazon依靠电子商务逐步发展起来,凭借其在电子商务领域积累的大量基础性设施、先进的分布式计算技术和巨大的用户群体,Amazon很早就进入了云计算领域,并在云计算、云存储等方面一直处于领先地位。目前,Amazon的云计算服务主要包括:弹性计算云EC2、简单存储服务S3、简单数据库服务SimpleDB、简单队列服务SQS、弹性MapReduce服务、内容推进服务CloudFront、电子商务服务DevPay和网上支付系统FPS(FlexiblePaymentsService,灵活支付服务)等2.2.1 弹性计算云EC2亚马逊将他们的云计算平台称为弹性计算云(ElasticComputeCloud,EC2),它是最早提供远程云计算平台服务的公司。亚马逊弹性计算云(AmazonEC2)是一个Web服务,提供可调整的云计算能力。它旨在为开发人员提供简便的使用网络规模计算。图2-1给出了EC2的基础架构,AmazonEC2呈现一个真实的虚拟计算环境,让用户使用Web服务接口实现各种功能,如:推出了各种操作系统的实例,加载用户的自定义应用程序环境,管理用户的网络访问权限,并可以在许多或几个系统中运行自己的映像文件EC2的基础架构SSHLinux最常用的远程登录工具,保密传输(Telnet不能保密传输)(1)弹性计算云EC2的优势:弹性AmazonEC2让用户可以在几分钟内提升或降低计算能力,而不是几小时或几天。完全控制用户可以完全控制自己的实例,用户有root权限去访问每一个实例,也可以与任意一个机器相互通信。(1)弹性计算云EC2的优势:灵活用户可以选择多种类型的实例、操作系统和软件包。例如:用户选择的操作系统包括众多Linux发行版,微软Windows服务器和OpenSolaris。同时使用亚马逊其他网络服务AmazonEC2与亚马逊简单存储服务(AmazonS3),亚马逊简单数据库和亚马逊简单队列服务(AmazonSQS)一起工作,以提供一个完整的解决方案(1)弹性计算云EC2的优势:可靠AmazonEC2提供一个高度可靠的环境。AmazonEC2服务水平协议的承诺是每个AmazonEC2区域的可用性达到99.95%。安全AmazonEC2提供了许多保护用户的计算资源的机制,并能使用Web服务接口来配置防火墙设置,以控制网络访问和实例之间的群体。(1)弹性计算云EC2的优势:廉价AmazonEC2能给用户带来亚马逊的规模经济利益,相对于自己所使用的计算量,用户的支付率非常低情形1:按需实例。按小时支付自己所使用的计算量,无需长期购买。情形2:预留实例。用户可以选择通过低廉、一次性的付费购买所需要的实例,从而获得了有关该实例每小时使用费的折扣。情形3:竞价型实例。客户可以利用竞价型实例对未使用的AmazonEC2容量进行竞价,并可在竞价高于当前现货价格的期间内运行此类实例。(2)功能亚马逊弹性块存储(ElasticBlockStore,EBS)实例自身也携带了一个存储模块(InstanceStore),但是该模块的缺点在于它只是一个临时的存储空间。对于需要长期保存或者比较重要的数据,则用户需要存储模块来完成,这个模块就是弹性块存储(ElasticBlockStore,EBS)。与S3不同,它是专门为EC2设计的,所以可以更好地和EC2配合使用。(2)功能亚马逊弹性块存储(ElasticBlockStore,EBS)EBS允许用户创建卷(Volume),卷的功能和我们平常使用的移动硬盘非常类似。亚马逊限制每个EBS最多创建20个卷,每一个卷可以作为一个设备挂载(MountedasaDevice)在任何一个实例上。挂载以后就可以像使用EC2的一个固有模块一样来使用它,这点和S3是完全不同的。因此用户需要使用EC2服务时,推荐使用EBS作为其存储对象。当实例被终止时,EBS上的数据会继续保存下去直到用户自己删除它,这就和关机后移动硬盘上的数据还会长久保存是一个道理。快照(Snapshot)是EBS提供的一个非常实用的功能,可以捕捉当前卷的状态,然后数据就可以被存储在S3中。EBS可理解为云硬盘,但云硬盘直接被用户使用,而EBS要和EC2一起使用。EC2仅是一个运行的OS实例,一般无应用软件和数据。应用软件和数据要存储到EBS上。EC2实例终止或毁坏后,EBS上的数据不会丢失,但实例存储(InstanceStore)上的数据会丢失。EC2实例终止或毁坏后,EBS上的数据可以挂载到别的EC2实例上,或挂载到新建的一个EC2实例上。(2)功能多个地点放置实例AmazonEC2提供了能够在多个地点放置实例的能力。AmazonEC2的位置是由区域和可用区组成。通过在独立的可用区使用实例,可以保护用户的应用程序远离单一地区的失败。(2)功能弹性IP地址弹性IP地址是专用于动态云计算的静态IP地址。弹性IP地址与用户的账户关联而非特殊实例关联,用户可以控制该地址,直到选择彻底释放该地址。与传统静态IP地址不同,使用弹性IP地址,用户可以用编程的方法将其公有IP地址重新映射到账户中的任何实例,从而掩盖实例故障或可用区域故障。(2)功能亚马逊虚拟私有云(VirtualPrivateCloud)AmazonVPC是公司现有IT基础设施和AWS云之间的一座安全且无缝的桥梁。有了AmazonVPC,企业可以通过虚拟专用网(VPN)连接将现有基础设施连至一组独立的AWS计算资源虚拟私有云(VirtualPrivateCloud,VPC)公有云上的私有云比普通的公有云更安全用VPN构建:用VPN在公有云中划出安全的隔离区域实现专有虚拟数据中心(2)功能亚马逊监控服务(CloudWatch)AmazonCloudWatch是一种Web服务,用于监控通过AmazonEC2启动的AWS云资源和应用程序。它可以显示资源利用情况、操作性能和整体需求模式–
包括CPU利用率、磁盘读取和写入以及网络流量等度量值。您可以获得统计数据、查看图表及设置度量数据警告。(2)功能自动缩放(AutoScaling)有了AutoScaling,便可以根据您定义的条件自动扩展AmazonEC2容量。使用AutoScaling,您可以确保所使用的AmazonEC2实例数量在需求高峰期实现无缝增长以保持性能,也可以在需求平淡期自动缩减,以最大程度降低成本。AutoScaling特别适合每小时、每天或每周使用率都不同的应用程序。(2)功能弹性负载平衡(ElasticLoadBalancing)ElasticLoadBalancing在多个AmazonEC2上自动分配应用程序的传入流量。ElasticLoadBalancing可以检测出池内的不正常实例,并自动更改数据流动路线,使其指向正常实例,直到不正常实例恢复正常为止。(2)功能高性能计算(HPC)集群集群计算的实例显著提高网络吞吐量,使他们很好的适应需要执行网络密集型操作的客户应用程序。集群计算的实例是专门设计的,以提供高性能的网络能力,可以被编程到集群允许的应用程序中以获得低延迟网络性能的紧耦合、节点到节点的通信需要。(3)亚马逊机器映像(AMI)AMI(AmazonMachineImage)是亚马逊机器映像,它是一个可以将用户的应用程序、配置等一起打包的加密机器映像。AMI是用户云计算平台运行的基础,所以,用户使用EC2服务的第一步就是要创建一个自己的AMI,这和使用PC首先需要操作系统道理相同。亚马逊系统映像(AMI)预配置了一张可不断增加的操作系统列表。AMI是存储在S3(亚马逊的简单存储服务)中的(3)亚马逊机器映像(AMI)AMI(AmazonMachineImage)是亚马逊机器映像,它是一个可以将用户的OS和应用程序、配置等一起打包的加密机器映像。映像(Image)在OpenStack中翻译为镜像,都指OS文件本身。所以有镜像库一说,即存OS文件的存储库。AMI是用户云计算平台运行的基础,所以,用户使用EC2服务的第一步就是要创建一个自己的AMI,这和使用PC首先需要操作系统道理相同。亚马逊系统映像(AMI)预配置了一张可不断增加的操作系统列表。AMI是存储在S3(亚马逊的简单存储服务)中的。S3就是AMI的镜像库。(4)实例(Instance)Instance表示实例。当用户创建好AMI后,实际运行的系统就称为一个实例,实例和我们平时用的主机很像。EC2服务的计算能力是由实例提供的,因此可以说实例是EC2服务的核心内容之一。每个实例自身携带一个存储模块(InstanceStore),但是模块的设计并不是为了用户数据的长期存储,它只是一个临时存放区。当用户的实例重启后,它其中的内容还会存在,但如果出现故障或实例被终止后,存储在其中的数据将全部消失。因此对于一些重要的数据亚马逊建议保存在EBS中。(4)实例(Instance)下面列举EC2标准实例的几种类型:小型实例(默认):1.7GB内存,1个EC2计算单位(1个虚拟核,含1个EC2计算单位),160GB本地实例存储,32位或64位平台中型实例:3.75GB内存,2个EC2计算单位(1个虚拟核,含2个EC2计算单位),410GB本地实例存储,32位或64位平台大型实例:7.5GB内存,4个EC2计算单位(2个虚拟核,各含2个EC2计算单位),850GB本地实例存储,64位平台超大型实例:15GB内存,8个EC2计算单位(4个虚拟核,各含2个EC2计算单位),1690GB本地实例存储,64位平台一个EC2计算单位(ECU)提供相当于一个1.0-1.2GHz2007Opteron或2007Xeon处理器的CPU容量。(5)EC2的区域概念区域(Zone)是EC2中独有的概念。亚马逊将区域分为两种:地理区域(RegionZone)和可用区域(AvailabilityZone)。其中地理区域是按照实际的地理位置划分的,而可用区域的划分则是为了隔绝各个区域之间的错误,这样某个可用区域的错误就不会影响到别的可用区域。因此,可用区域实际就是人工隔绝出的一个“孤岛”。(5)EC2的区域概念从图2-2可以很明显地看出两者关系。EC2系统中包含多个地理区域,而每个地理区域中又包含多个可用区域。为了确保系统的稳定性,用户最好将自己的多个实例分布在不同的可用区域和地理区域中。这样在某个区域出现问题时可以用别的实例代替,最大程度地保证了用户利益。图2-2EC2中区域间关系如何申请云环境进入/
创建一年免费账户创建账户通过登录亚马逊官网获取相关的云计算服务需要Amazon云计算账号的注册,并获得Amazon服务器的认证。下图为注册的页面,由于云计算的支付方式是按需支付,所以每一个账号必须有一个可以实现支付的信用卡账户,从而保证用户对自己使用的服务进行实时付费。完成注册后使用AmazonAWS相关任意服务(比如EC2或S3)都需要进行账号的登录。信用卡信息创建EC2虚拟机的步骤1.选择区域。一般选择新加坡,其次选择东京2.选择AMI一年免费账户可同时选定两个AMI及其相关实例,一个为Linux系统,一个为WindowsServer系统。3.选定实例一般为微型实例(配置为613MB的内存、32位和64位平台支持)
创建EC2的步骤
1、
打开aws面板,找到EC2选项,见下图2、
点击上图中划红线框的EC2链接,跳转到如下页面,此页面主要是当前的运行实例、空间、秘钥数量等信息
3、
点击上图中划红线的”LaunchInstance“,页面跳转到如下页面,选择虚拟机4、
点击上图中的”select“,进入如下的配置界面,这里选择的是微实例5、点击上图中的”Next:ConfigureInstanceDetails“,跳转到如下页面,选择默认6、
点击上图中的”Next:AddStorage“,跳转到如下页面,参数都是默认7、
点击上图中的”Next:TagInstane“,页面如下,在value中输入”201403“
8、
点击上图中的”Next:ConfigureSecurityGroup“,跳转到如下页面,选择一个安全组9、
点击上图中的”Reviewandlaunch“,页面显示你的配置的详细信息10、点击上图中的”Launch“,此时需要你创建一个秘钥对,供登陆EC2使用,点击”3“下载按钮,保存秘钥对11、点击上图中的”LaunchInstance“,稍等片刻,显示创建结果,显示如下12、回到EC2主界面,稍等一会儿,完成创建EC2后,结果页面如下所示13、现在就测试连接到Amazonlinux虚拟机上,选择”201403“点击上图中”3“区域的Connect按钮,稍等,弹出如下窗口,选择下图中的“1“选项,然后把你刚才保存的秘钥路径填写在”2”的输入框。14、点击上图中的”LaunchSSHClient“,稍等,出现如下窗口,正确连接到了AWS虚拟机好的,到此,EC2虚拟机能够连通,成功配置了Amazon的EC2服务。2.2.2简单存储服务S3S3(SimpleStorageServices)是Amazon推出的简单存储服务,用户通过Amazon提供的服务接口可以将任意类型的文件临时或永久地存储在S3服务上,S3的总体设计目标是可靠、易用及很低的使用成本。S3可以被想成在“云”上的一个很大的磁盘驱动器或一个SAN(存储区域网)S3的基本结构S3的基本结构如图2-3所示,S3为任意类型的文件提供临时或永久的存储服务,基本概念有:(1)对象:S3的基本存储单元(数据、元数据),数据类型任意;(2)键:对象的唯一标识符;(3)桶(Buckets):存储对象的容器(不能嵌套、在S3中名称唯一、每个用户最多创建100个桶)。图2-3S3的基本结构图S3与EBS存储的区别(1)不要把S3想象成某种文件系统。而EBS以文件系统形式存放文件。很多人期望S3表现得像个文件系统,结果都会碰到麻烦。首先,名字空间有两层,在第一层有若干桶。如果觉得方便,可以把这些桶想象成文件目录,它们存储的是放进S3的数据。然而,与传统目录不同的是,没法按层次结构来管理它们——不能把桶放到桶中。桶名字也许更重要的一点是桶名字空间在所有Amazon客户间共享。设计桶名字需要特别留意,以免与其他桶冲突。换句话说,不要取“Documents”这样的桶名。Buckets名字是全局唯一的,所有使用s3服务的人的桶名都不能有重名,而且命名根据url命名,因为毕竟这桶名会是url的一部分。
在对bucket和object进行操作时,例如bucket的名字是“bucketname”,那么Hosturl就是“”。S3与EBS存储的区别(2)另外,很重要的一点是AmazonS3相对速度较慢。因此S3适合大容量批处理式的存储。而EBS适合快速实时数据处理。事实上,对于部署在Internet上的服务来说,它已经非常快了,但是,如果期望它有像本地磁盘或SAN那样的响应速度,一定会非常失望。因此,把S3当做运行时存储介质来用不可取。S3与EBS存储的区别(3)最后,访问S3不是通过文件系统,而是通过WebServices。
而EBS以文件系统形式存放文件因此,需要专门编写程序来向AmazonS3中存储数据(也有图形化界面可供操作)。AmazonS3使用户能将持久化数据放入云中,供以后再次取出,并且,当用户取回数据时,数据保证完整无误。它主要的好处是只需不断将数据丢到AmazonS3里面,永远不用担心存储空间耗尽,对大多数用户而言,S3就是个短期或长期的备份设备。而亚马逊限制每个EBS最多创建20个卷,每个卷的大小也不是无限大。S3支持的主要操作目前S3支持的主要操作包括:Get、Put、List、Delete和Head,各个操作的含义如表2-1操作目标GetPutListDeleteHead桶获取桶中对象创建或更新桶列出桶中所有键删除桶无对象获取对象数据和元数据创建或更新对象无删除对象获取对象元数据最终一致性数据模型采用冗余存储,但保持数据最终一致性是S3的主要设计思路。S3为了保证用户数据的一致性而采取的一种折中手段,即在数据被充分传播到所有的存放节点之前返回给用户的仍是原数据,称为最终一致性数据模型。如图2-4所示。图2-4最终一致性数据模型2.2.3简单数据库服务SimpleDBAmazonSimpleDB(SDB)是一个用于存储、处理和查询结构化数据集的Web服务。主要用于存储结构化的数据,并为这些数据提供查找、删除等基本的数据库功能。SDB基本结构图SDB基本结构图如图2-5所示,其中包含了SDB中以下几个最重要的概念:(1)用户账户(CustomerAccout);(2)域(Domain):数据容器;(3)条目(Item):一个实际的对象;(4)属性(Attribute):条目的特征;(5)值(Value):每个条目的某属性的具体内容。SDB当前还不支持跨域查询SDB基本结构图这些术语可理解为类似于传统电子表格中的对应概念。以下表2-2中显示的客户管理数据库详细信息为例,考虑它们在AmazonSimpleDB中的表示方式整个表就是一个名为“customers”的域。各个客户就是表中的行或域中的项目。联系信息用列标题(属性)来描述。值位于各个单元格中。添加记录PUT(item,123),(Firstname,Bob),(Lastname,Smith),(City,Springfield),(Zip,65801),(Telephone,222-333-4444)PUT(item,456),(Firstname,James),(Lastname,Johnson),(City,Seattle),(Zip,98104),(Telephone,333-444-5555)CustomerID名姓城市邮编电话123BobSmithSpringfield65801222-333-4444456JamesJohnsonSeattle98104333-444-5555SDB不受模式限制,能够动态地插入数据和添加新的列或键。例如,假设您开始采集客户的电子邮件地址,以便启用对订单状态的实时警告。与重建“customer”表、重写查询和重建索引等相比,您只需要向现有的“customer”域添加新的记录和任何其他属性。增加新的列后的customers域PUT(item,789),(Firstname,Deborah),(Lastname,Thomas),(City,NewYork),(Zip,10001),(Telephone,444-555-6666),(Email,dthomas@)CustomerID名姓城市邮编TelephoneEmail123BobSmithSpringfield65801222-333-4444456JamesJohnsonSeattle98104333-444-5555789DeborahThomasNewYork10001444-555-6666dthomas@SDB和关系型数据库SDB和关系型数据库有很多相同之处,但也有很大的不同。传统的关系数据库采用表结构,SDB采用树状结构。如图2-6所示。AmazonSimpleDB不是关系数据库,它舍弃了复杂的事务处理和关系(即:联接)。SDB不受模式限制,能够动态地插入数据和添加新的列或键。AmazonSDB自动为数据编制索引。图2-6SDB树状组织方式S3与SDB的主要区别S3是专为大型,非结构化的数据块设计的;SDB是为复杂的,结构化数据建立的,支持数据的查找、删除、插入等操作。为了优化使用AWS服务的成本,应将大型数据元或文件存储在AmazonS3中,而最好将小型数据元素或文件指针(可能指向AmazonS3数据元)保存在AmazonSimpleDB中2.2.4简单队列服务SQS2007年7月,亚马逊公司推出了简单队列服务(SimpleQueueService,SQS),这项服务使托管主机可以存储计算机之间发送的消息。所有基于Amazon的网络计算,其基础都是Amazon简单队列服务(SimpleQueueService,SQS)。和任何消息队列服务一样,SQS接收消息,把消息传递给订阅了消息队列的服务器。SQS基本组成如图2-7所示,SQS由三个基本部分组成:系统组件(Component)、队列(Queue)、消息(Message)。消息是发送者创建的具有一定格式的文本数据,接收对象可以是一个或多个组件。消息的大小是有限制的,截止2013年1月Amazon规定每条消息不得超过64KB,但是消息的数量并未做限制。队列是存放消息的容器,类似于S3中的桶,队列的数目也是任意的,创建队列时用户必须给其指定一个在SQS账户内唯一的名称。图2-7简单的队列服务SQS综合性例子下面介绍了一家视频转码网站是如何搭配使用AmazonEC2、AmazonSQS、AmazonS3和AmazonSimpleDB的。最终用户将需要转码的视频提交到网站。视频存储到AmazonS3中,一条消息(“请求消息”)则排入AmazonSQS队列(“传入队列”),消息中包含了指向视频和目标视频格式的指针。在一组AmazonEC2实例上运行的转码引擎从传入队列中读取请求消息,使用其中的指针从AmazonS3中检索视频,并将视频转码为目标格式。转换后视频放回到AmazonS3中,另一条消息(“回复消息”)排入另一个AmazonSQS队列(“传出队列”),其中包含了指向转换后视频的指针。综合性例子同时,视频相关的元数据(如格式、创建日期和长度)可以索引到AmazonSimpleDB中,以方便查询。在整个工作流中,一个专门的AmazonEC2实例可以持续监控传入队列,并根据传入队列中的消息数量,动态调整转码AmazonEC2实例的数量,来满足客户对响应时间的要求。2.3 Google云平台2.3.1 Google文件系统GFS2.3.2 分布式计算编程模型Map/Reduce2.3.3 分布式锁服务Chubby2.3.4 分布式数据存储系统Bigtable2.3.5 GoogleAppEngine2.3Google云平台图2-8Google云计算的四个组件及其调用关系2.3.1Google文件系统GFSGoogle文件系统(GoogleFileSystem,GFS)是一个大型的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。2.3.1Google文件系统GFSGFS的设计受到了当前及预期的应用方面的工作量及技术环境的驱动,这反映了它与早期的文件系统明显不同的设想GFS的观点认为:硬件出错是正常现象而非异常数据写主要是“追加写”,而“插入写”非常少存储的文件大小可能是GB或TB量级,而且应当能支持存储成千上万个文件2.3.1Google文件系统GFSGFS的设计思想是:首先将文件划分成若干块存储,每个块的大小固定。默认是64MB,每一块称为一个Chunk(数据块)其次,通过冗余来提高可靠性,即每个数据块至少在3个数据块服务器上冗余;再次,通过单个Master来协调数据访问、元数据存储;(采用中心服务器模式)最后,没有缓存。不缓存文件数据,缓存元数据GFS的系统架构GFS的系统架构如图2-9所示,是单一Master、若干ChunkServer的模式。GFS将整个系统的节点分为三类角色:Client(客户端):Client是GFS提供给应用程序的访问接口,它是一组专用接口Master(主服务器):Master是GFS的管理节点,在逻辑上只有一个,它保存系统的元数据,负责整个文件系统的管理,是GFS文件系统中的“大脑”。ChunkServer(数据块服务器):ChunkServer负责具体的存储工作。数据以文件的形式存储在ChunkServer上,ChunkServer的个数可以有多个,它的数目直接决定了GFS的规模。图2-9GFS体系结构客户端在访问GFS时,首先访问Master节点,获取将要与之进行交互的ChunkServer信息,然后直接访问这些ChunkServer完成数据存取。GFS的这种设计方法实现了控制流和数据流的分离。Client与Master之间只有控制流,而无数据流,这样就极大地降低了Master的负载,使之不成为系统性能的一个瓶颈。Client与ChunkServer之间直接传输数据流,同时由于文件被分成多个Chunk进行分布式存储,Client可以同时访问多个ChunkServer,从而使得整个系统的I/O高度并行,系统整体性能得到提高2.3.2分布式计算编程模型MapReduceGoogleMapReduce架构设计师JefferyDean设计一个新的抽象模型,使我们只要执行简单的计算,而将并行化、容错、数据分布、负载均衡等的杂乱细节放在一个库里,使并行编程时不必关心它们,这就是MapReduce2.3.2分布式计算编程模型MapReduceMapReduce是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行计算。“Map(映射)”、“Reduce(化简)”的概念和主要思想,都是从函数式编程语言和矢量编程语言借鉴来的2.3.3分布式锁服务ChubbyChubby是Google设计的提供粗粒度锁服务的一个文件系统,它基于松耦合分布式系统,解决了分布的一致性问题。通过使用Chubby的锁服务,用户可以确保数据操作过程中的一致性。系统概述Chubby系统提供粗粒度(Coarse-Grained)的锁服务,并且基于松耦合分布式系统设计可靠的存储,而没有采用细粒度(Fine-Grained)锁服务,两者的差异在于持有锁的时间,细粒度的锁持有时间很短。Chubby系统提供建议性的锁,而不是强制性的锁;强调锁服务的可用性、可靠性。两者的根本区别在于用户访问某个被锁定的文件时,建议性的锁不会阻止访问,而强制性的锁则会阻止访问,实际上这是为了方便系统组件之间的信息交互。系统目标Chubby系统的设计目标有以下几点支持粗粒度的锁服务高可用性和高可靠性直接存储服务信息高扩展性整体架构如图2-10所示,Chubby基本架构:客户端和服务器端,两者通过远程过程调用(RPC)来连接。客户端应用程序通过调用chubby程序库(ChubbyLibrary),申请锁服务并获取相关信息,同时,通过租约保持同服务器的连接。所有应用都是通过调用chubby程序库中相关函数来完成。Chubby服务器组一般由五台服务器组成,其中一台服务器担任主服务器,负责与客户端的所有通信。其他服务器不断和主服务器通信获得用户操作,Chubby服务器组的所有机器都会执行用户操作,并将相应的数据存放到文件系统,以防止主服务器出现故障导致数据丢失。图2-10Chubby的系统结构2.3.4分布式数据存储系统BigtableBigtable是Google开发的基于GFS、MapReduce和Chubby的分布式存储数据库系统,它被设计用来处理海量数据:通常是分布在数千台普通服务器上的PB级的数据。Google的很多数据,包括Web索引、卫星图像数据等在内的海量结构化和半结构化数据,都是存储在Bigtable中的。Bigtable的组件Bigtable包括了三个主要的组件:客户端程序库(ClientLibrary)、一个主服务器(MasterServer)和多个子表服务器(TabletServer)。针对系统工作负载的变化情况,BigTable可以动态的向集群中添加(或者删除)子表服务器,其基本结构如图2-11所示。主服务器主要进行一些元数据操作以及子表服务器之间负载调度问题,实际数据是存储在子表服务器上。图2-11Bigtable体系结构Bigtable的组件客户访问Bigtable服务时,首先要利用其库函数执行Open()操作来打开一个锁(实际上就是获取了文件目录),锁打开以后客户端就可以和子表服务器进行通信。和许多具有单个主节点分布式系统一样,客户端主要与子表服务器通信,几乎不和主服务器进行通信,这使得主服务器的负载大大降低。一个BigTable集群存储了很多表,每个表包含了一个子表的集合,而每个子表包含了某个范围内的行的所有相关数据。Bigtable中存储数据都是以子表的形式保存在子表服务器上的,客户一般也只和Tablet服务器进行通信。子表地址结构由于BigTable中的数据都是以子表的形式存储在各个子表服务器上的,所以子表的寻址成为了BigTable系统的关键问题。Google使用了一个三层的、类似B+树的结构存储Tablet的位置信息,,如图2-12所示图2-12子表地址结构子表地址结构所有的子表地址都被记录在元数据表中,元数据表也是由一个个的元数据子表(Metadatatablet)组成的。第一层是存储在Chubby中的根子表,它是元数据表中的第一个元数据子表,存储了其他元数据子表的地址;第二层是根子表指向的其他元数据子表,表中每个子表的位置信息都存放在一个行关键字下面,而这个行关键字是由子表所在的表的标识符和子表的最后一行编码而成的;第三层便是所有用户子表。Bigtable的数据模型Bigtable是一个稀疏的、分布式的、持久化存储的多维度排序Map。Map的索引是行关键字、列关键字以及时间戳;Map中的每个value都是一个未经解析的byte数组。(row:string,column:string,time:int64)->stringBigtable的数据模型假设我们想要存储海量的网页及相关信息,这些数据可以用于很多不同的项目,我们姑且称这个特殊的表为Webtable。在Webtable里,我们使用URL作为行关键字,使用网页的某些属性作为列名,网页的内容存在“contents:”列中,并用获取该网页的时间戳作为标识,如图2-13所示。Bigtable的数据模型行名是一个反向URL。contents列族存放的是网页的内容,anchor列族存放引用该网页的锚链接文本(即HTML的Anchor标记)。CNN的主页被SportsIllustrater和MY-look的主页引用,因此该行包含了名为“anchor:”和“anchhor:my.look.ca”的列。每个锚链接只有一个版本(注意时间戳标识了列的版本,t9和t8分别标识了两个锚链接的版本);而contents列则有三个版本,分别由时间戳t3,t5,和t6标识。图2-13一个存储Web网页的例子的表的片断行表中的行关键字可以是任意的字符串(目前支持最大64KB的字符串,但是对大多数用户,10-100个字节就足够了)Bigtable通过行关键字的字典顺序来组织数据。举例来说,在Webtable里,通过反转URL中主机名的方式,可以把同一个域名下的网页聚集起来组织成连续的行。具体来说,我们可以把/index.html的数据存放在关键字com.google.maps/index.html下。把相同的域中的网页存储在连续的区域可以让基于主机和域名的分析更加有效。列族列关键字组成的集合叫做“列族”,列族是访问控制的基本单位。存放在同一列族下的所有数据通常都属于同一个类型列族在使用之前必须先创建一张表中的列族不能太多(最多几百个),并且列族在运行期间很少改变。与之相对应的,一张表可以有无限多个列列关键字的命名语法如下:列族:限定词。anchor列族包含“anchor:”和“anchhor:my.look.ca”等两个列。时间戳
在Bigtable中,表的每一个数据项都可以包含同一份数据的不同版本;不同版本的数据通过时间戳来索引。Bigtable时间戳的类型是64位整型。Bigtable可以给时间戳赋值,用来表示精确到毫秒的“实时”时间;用户程序也可以给时间戳赋值。如果应用程序需要避免数据版本冲突,那么它必须自己生成具有唯一性的时间戳。数据项中,不同版本的数据按照时间戳倒序排序,即最新的数据排在最前面。在Webtable的举例里,contents:列存储的时间戳信息是网络爬虫抓取一个页面的时间。2.3.5GoogleAppEngine在推出自己产品的同时,Google倾力打造了一个平台,来继承自己的服务并供开发者使用,这就是GoogleAppEngine平台。AppEngine是在Google的基础架构上构建和运行网络应用程序的平台,提供了使用Google基础服务的编程结构。GoogleAppEngine是隶属于PaaS类型的云服务一个计算环境,支持Python和Java语言,可使用Google的基础服务,如BigTable和GFS等。用户仅需提供应用代码,无需自备服务器维护应用程序,可根据访问量和数据存储需要的增长轻松进行扩展。如图2-14所示,GoogleAppEngine架构可以分成四部分:1)前端和静态文件。主要提供下列功能:负载均衡;静态文件的传输;HTML的生成;转发请求给应用服务器。2)应用服务器(AppServer)。它能同时运行多个应用的运行时(runtime),可以是python或java语言的应用。3)服务群(ServiceGroup)。服务群现在主要包括下列服务:Datastore(数据存储);Memcache;Images(图像);User(用户);URLFetch(网址抓取);Email等。4)应用管理节点(AppMaster)。它主要负责应用的启停和计费。图2-14GoogleAppEngine架构2.5 Openstack云平台2.5.1 计算服务Nova2.5.2 存储服务Swift2.5.3 镜像服务Glance2.5.4 身份服务Keystone2.5.5 用户界面服务Horizon2.5Openstack云平台OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目。OpenStack是IaaS(基础设施即服务)软件,让任何人都可以自行建立和提供云端运算服务。此外,OpenStack也用作建立防火墙内的“私有云”(PrivateCloud),提供机构或企业内各部门共享资源。(1)OpenStack的原理OpenStack主要由五部分组成,分别是计算服务Nova、存储服务Swift、镜像服务Glance、身份服务Keystone和用户界面服务Horizon。OpenStack可以单独提供其中的一部分,也可以将这五部分组合起来,搭建一个通用的云平台。截至Liberty
版本,OpenStack含九个核心项目:计算(Compute):Nova网络(Networking):Neutron/Quantum身份管理(IdentityManagement):Keystone对象存储(ObjectStorage):Swift块存储(BlockStorage):Cinder镜像服务(ImageService):Glance用户界面仪表盘(UserInterfaceDashboard):Horizon部署编排(Orchestration):Heat测量和告警(Telemetry):Ceilometer另有一个数据库服务(DatabaseService):Trove自Icehouse版本集成到项目中,但到
Juno版就没有了。OpenStackProjectAmazonWebServicesEquivalentVirtualMachinesNovaEC2VirtualBlockDevicesCinderEBSObjectStorageSwiftS3VirtualNetworksQuantumVPCDashboardHorizonAWSManagementConsole数据中心虚拟化OpenStack首先将数据中心虚拟化,利用虚拟机管理程序(Hypervisor)提供应用程序和硬件之间抽象的对应关系。上面每个虚拟的服务器、或者虚拟的网络、或者虚拟的存储设备之后都是一个资源Pool(池),这样无论对资源的分配还是对请求响应都更加灵活而有效。图2-17OpenStack虚拟化的更多实现OpenStack完成数据中心虚拟化后,还提供对云进行管理的功能。要提供用户和管理员接口,用户要能知道自己的应用的情况,管理员也要能知道整个云的运行情况,负责云存储的分配、检索和收回(2)OpenStack的概念架构该架构采用的是非常普通的分层方法,包括展示层(presentation)、逻辑层(logic)和资源层(resources),另外它带有两个正交区域,即整合层(Integration)和管理层(management)。(2)OpenStack的概念架构四个用户集在此概念架构中,假设了需要与云交互的四个用户集:应用开发者(AppDevelopers),开发操作者(DevOps),应用拥有者(AppOwner)和云操作者(CloudOperator),并为每类用户划分了他们所需要的功能。各类用户的功能如下:允许应用拥有者(AppOwner)注册云服务,查看运行和计费情况;允许应用开发者(AppDevelopers)和开发操作者(DevOps)创建和存储他们应用的自定义镜像;允许他们启动、监控和终止实例;允许云操作者(CloudOperator)配置和操作基础架构。展示层展示层的功能是实现组件与用户交互,并接受和呈现信息。Webportals为非开发者提供图形界面,为开发者提供API端点。如果是更复杂的结构,那么负载均衡、控制代理、安全和名称服务也都会在这层。逻辑层逻辑层为云提供逻辑(logic)和控制功能。这层包括部署(复杂任务的工作流),调度(作业到资源的映射),策略(配额等等),镜像注册imageregistry(实例镜像的元数据),日志(事件和计量)。整合层假设绝大多数服务提供者已经有客户身份和计费系统。任何云架构都需要整合这些系统。这就是整合层的功能。管理层在任何复杂的环境下,都将需要一个管理层(management)来操作这个环境。它应该包括一个API访问云管理特性以及一些监控表单(forms)。监控功能将以整合的形式加入一个已存在的工具中。当前的架构中已经为虚拟的服务提供商加入了监控(monitoring)和管理(admin)API,在更完全的架构中,将见到一系列的其它支持功能,比如供应(provisioning)和配置管理(configurationmanagement)。资源层最后,资源层提供各种资源,包括计算(compute)资源、网络(network)资源和存储(storage)资源,以供应给云的客户。该层提供这些服务,无论它们是服务器、网络交换机、NAS(networkattachedstorage,网络附加存储)还是其他的一些资源。2.5.1 计算服务Nova(1)OpenStackCompute逻辑架构Compute逻辑架构终端用户(DevOps,Developers和其他的OpenStack组件)通过和nova-api对话来与OpenStackCompute交互。OpenStackCompute守护进程之间通过队列(行为)和数据库(信息)来交换信息,以执行API请求。OpenStackGlance基本上是独立的基础架构,OpenStackCompute通过GlanceAPI来和它交互。nova-apinova-api守护进程是OpenStackCompute的中心。它提供外部世界与云体系结构交互的接口。它为所有API查询(OpenStackAPI或EC2API)提供端点,初始化绝大多数部署活动(比如:运行实例),以及实施一些策略(绝大多数的配额检查)。nova-computenova-compute进程主要是一个创建和终止虚拟机实例的Worker守护进程,它负责处理实例管理生命周期。其过程相当复杂,但是基本原理很简单:从队列中接收实例生命周期管理的请求,然后在更新数据库的状态时,执行一系列的系统命令实现相应的操作。nova-volumenova-volume管理映射到计算机实例的卷,比如执行卷的创建、附加和取消。Openstack从Folsom版开始使用Cinder替换原来的Nova-Volume服务,为Openstack云平台提供块存储服务这些卷可以来自很多提供商,比如:iSCSI和AoE(ATAoverEthernet)。AoE(ATAoverEthernet):作为一种iSCSI与FibreChannel之替代方案,此协议可以在以太网上访问ATA(一组硬盘规范)标准的存储装置(多指硬盘)在openstack中swift和cinder的区别swift是objectstorage(对象存储),将object(可以理解为文件)存储到bucket(可以理解为文件夹)里,你可以用swift创建container,然后上传文件,例如视频,照片,这些文件会被replication到不同服务器上以保证可靠性,swift可以不依靠虚拟机工作。所谓的云存储,OpenStack就是用swift实现的,类似于AmazonAWSS3(SimpleStorageService).——流式数据读写cinder是blockstorage(块存储),你可以把cinder当做优盘管理程序来理解。你可以用cinder创建volume,然后将它接到(attach)虚拟机上去,这个volume就像虚拟机的一个存储分区一样工作。如果你把这个虚拟机terminate了,这个volume和里边的数据依然还在,你还可以把它接到其他虚拟机上继续使用里边的数据。cinder创建的volume必须被接到虚拟机上才能工作。类似于AmazonAWSEBS(ElasticBlockStorage).——随机实时数据读写Nova-networkNova-networkworker守护进程类似于nova-compute和nova-volume。它从队列中接收网络任务,然后执行任务以操控网络,比如:分配IP地址、配置VLAN、为计算节点配置网络等。QueueQueue提供中心hub,为守护进程传递消息。当前用Rabbit-MQ实现,但是理论上能是pythonamqplib支持的任何AMQP(AdvancedMessageQueueProtocol,高级消息队列协议)消息队列。nova-schedulenova-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 街边商铺购房合同范本
- 介绍教室里人和物的位置 教案
- 代理注册医疗器械协议书
- 单位租房协议书样本
- 工程造价毕业实习报告
- 经济担保函的范本
- 2023学年上海市奉贤区七年级语文上学期期中练习卷附答案解析
- 02阅读四选一训练之人物故事类-2024年中考英语阅读理解提分宝典
- 浙江省浙南名校联盟2023-2024学年高二下学期6月期末联考政治试题2
- 中建2024XXX工程测量施工方案(含深基坑)
- 国外中小学教育专题
- 《破坏性地震》课件
- 高等分离工程-05多组分多级分离计算-简捷法
- 乐理与视唱练耳:附幼儿歌曲创编(第三版) 教案全套 学前教育专业
- 《环境工程学》课程思政培养生态环保意识与可持续发展能力
- 2024年上海市各区初三语文一模专题汇编:综合运用
- 糖尿病性视网膜病变汇报演示课件
- 慢性胰腺炎护理课件
- 殡葬领域突出问题专项整治工作实施方案
- 心包积液护理查房
- 工业催化课件
评论
0/150
提交评论