您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > GOOGLE云计算与AMAZON云计算对比
Amazon与Google云计算1.Amazon1.1.基础架构和服务图1面向服务的Amazon平台架构图1显示了Amazon平台的抽象架构,动态网页的内容是由页面呈现组件生成,该组件进而查询许多其他服务。一个服务可以使用不同的数据存储来管理其状态,这些数据存储仅在其服务范围才能访问。有些服务作为聚合器使用其他一些服务,可产生合成(composite)响应。通常情况下,聚合服务是无状态,虽然他们利用广泛的缓存。从图1中可知,Dynamo是Amazon云计算平台中处于最底层的存储架构,不直接向公众提供服务,但是为整个平台及服务提供最基础的支持。S3就是建立在Dynamo之上,SimpleDB也极有可能使用或者借鉴了Dynamo技术。Amazon以Web服务的形式将云计算产品提供给用户。AmazonWebServices(AWS)是这些服务的总称。目前AWS提供的服务产品如表1所示。产品分类产品名称弹性计算云EC2弹性MapReduce内容推送服务CloudFront数据库服务SimpleDBRDS简单队列服务SQS支付服务FPSDevPay存储服务S3EBS1.2.EC2AmazonEC2属于IaaS(基础设施即服务)。EC2使用Xen虚拟化技术。每个虚拟机,又称作实例,能够运行小、大、极大三种能力的虚拟私有服务器。Amazon利用EC2ComputeUnits去分配硬件资源。使用BackupSnapshotsto使用使用SimpleDBEBSS3EC2--AMIResideonEBS存储RDSEC2简言之。他完全是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务。然而“无限”并不不意味“无边际”,相反,他是具有上限的。亚马逊的文献阐明,你能同时租用“上百,甚至数以万计”虚拟机。2.GoogleGAE由于发布S3和EC2这两个优秀的云服务,使得Amazon已经率先在云计算市场站稳了脚跟,而身为云计算这个浪潮的发起者之一的Google肯定不甘示弱,并在2008年四月份推出了GoogleAppEngine这项PaaS服务,虽然现在无法称其为一个革命性的产品,但肯定是现在市面上最成熟,并且功能最全面的PaaS平台。GoogleAppEngine架构图从图上看出,GAE架构可以分为三个部分:前端,Datastore和服务群:1.前端(有四大模块)1)FrontEnd:既可以认为它是LoadBalancer,也可以认为它是Proxy,它主要负责负载均衡和将请求转发给AppServer(应用服务器)或者StaticFiles等工作。2)StaticFiles:在概念上,比较类似于CDN(ContentDeliveryNetwork,内容分发网络),用于存储和传送那些应用附带的静态文件,比如图片,CSS和JS脚本等。3)AppServer:用于处理用户发来的请求,并根据请求的内容来调用后面的Datastore和服务群。4)AppMaster:是在应用服务器间调度应用,并将调度之后的情况通知FrontEnd。2.Datastore它是基于BigTable技术的分布式数据库,虽然其也可以被理解成为一个服务,但是由于其是整个AppEngine唯一存储持久化数据的地方,所以其是AppEngine中一个非常核心的模块。3.服务群整个服务群包括很多服务供AppServer调用,比如Memcache,图形,用户,URL抓取和任务队列等。GoogleAppEngine给你一个完整的平台,包括完整的SDK(以及Eclipse插件)和服务,你可以构建和部署你自己的应用程序,但你不能很好地控制操作系统,硬件和存储,诸如写文件系统,使用线程等操作都有限制,这样设计的目的是为了确保平台不会被某个应用程序绑架。GAE应该是利用Google自己的技术实现的,从现在的资料来看没发现Google使用了虚拟化技术。Google有一项技术叫GoogleWorkQueue,是负责资源调度的,不知道是不是这项技术实现了GAE的资源控制(Google还未公开GoogleWorkQueue的实现)。从功能上说,GAE实现了多租户的资源按买入量分配,甚至CPU使用时间精确到了每个文件,这恐怕不是一个WorkQueue就能完成的吧?WorkQueue似乎更适合完成计算密集型任务。对于GAE这样的互联网应用,如果等请求到来后在调度资源将webapp装入内存,是不是有点来不及啊?Google的GAE下面有没有可能就是一堆的物理机装上OS,然后再把它的PaaS的东西(GFS,Bigtable,MapReduce)装上就Ok了呢?因为在PaaS这个层面已经实现了数据与计算的动态分布,包括系统的流水一样的扩展性与可靠性,坏一台机器就坏吧,反正已经分布冗余了,那还有什么必要再去多加一层虚拟机的虚拟化白白去浪费资源的overhead?3.EC2与GAE对比区别选项GAEEC2层次PaaSIaaS底层技术GFS、BigTable、ChubbyLock等SimpleDB、S3、RDS、EBS等提供服务(对于开发人员)服务都是现成的,可快速开发自己搭建基础设施,然后安装服务,需耗费一定的时间管理简单复杂抽象程度高低可靠性可靠,可以时刻查看GAE的状态,是透明的可靠,从历史数据来看,EC2正常运行时间比GAE要好可移植性可以更好的可移植性存储GAE目前严重依赖BigTable,不过Google最近宣布将让GAE支持传统的SQL数据库EC2已经支持SQL数据库,你可以使用Oracle,MySQL等你所熟悉的关系数据库维护与升级容易复杂开发限制受平台的限制提供了所有底层访问和控制权语言支持Java、PythonC#,.NET,ASP.NETMVC/VisualStudio等概括地说,AmazonEC2是进入云计算的早期尝试者,它利用互联网标准和开放平台创建了一个非常灵活的云计算平台,Google则利用了它在大型数据库方面的研究成果和它内部实现的一些技术创建了一个强大,但有更多限制的云计算环境。从核心技术来讲,AmazonEC2允许你扩展任何计算器实例到多个实例,因此你拥有每个虚拟盒子的完全控制权,GoogleAppEngine从操作系统抽象而来,没有计算器实例的概念,如果你的Web应用程序不需要操作系统相关的功能,那么GoogleAppEngine无疑是最好的选择,如果需要更好地控制你的系统环境,特别是操作系统相关的控制,那么最好选择AmazonEC2。4.关于虚拟化的见解4.1.云计算与虚拟化云计算与虚拟化技术,没有必然的关系。实现云计算,根本不需要虚拟化。这里说的云计算就是分布式计算(如Google利用MapReduce实现)。只有在云服务提供商对外提供服务的时候,才需要虚拟化技术,用虚拟化技术的摸底是为了更好的管理。1)当一台机器资源闲置的时候,我可以通过虚拟化,在上面跑多个OS。这时云计算和虚拟化就有关系。2)当一台机器无法满足计算的要求的时候,我们把多个机器并一起来完成一项工作,这其实就是所谓的并行计算。但是这和虚拟化有啥关系呢?我一台机器的性能都不够用,难道我还在上面虚拟化,再跑一个OS,这样性能就更差。这其实是很困惑人的。那么我不用虚拟化,来实现并行计算,可以吗?这肯定是可以,假如你这次并行技术,需要的是linux,安装特定的软件,那么你就在100台机器进行安装,就可以实现并行计算。我们一些固定的应用,并行计算,其实根本不需要虚拟化,现在那些高性能计算机,其实就是通过并行计算的原理来实现的。一个简单的例子,Google,他肯定是云,那么可以肯定一点,Google肯定是没有用啥虚拟化的技术。他都是用普通的pc,进行大量的并行计算。4.2.什么情况需要通过虚拟化来提供云计算不同用户,实现并行计算的软件,OS都是不一样的。如果我是对外提供服务,我就需要满足不同的需求。而且客户需要云计算的能力,是按需的,不是长期的。假设客户需要100台服务器,运行Linux10个小时。马上又有客户提出,我需要100台windows的机器,跑一个小时。那么如何在在100台机器跑完Linux,又马上安装window给客户提供服务呢?当你有100台物理的机器。你如何可以实现统一的管理呢?远程控制卡,这是可以实现远程管理,不过不是所有的机器都有远程控制卡,而且即使有远程控制卡,你如果希望同时在这些机器安装系统,软件呢?那么目前的技术条件,如何才能更低的成本来实现统一管理100台服务器,甚至1000台呢?答案就是虚拟化。目前一台物理服务器上跑一个OS,和物理服务器上虚拟化,再跑一个OS,性能大概要损失5%,这是可以接受的。因为所有的机器实现虚拟化后,我们就可能实现统一的管理。虚拟化,物理服务器,其实也是需要你去安装系统,不过这是一次性的。实现虚拟化后,你在上面跑什么OS,什么软件,都是可管理的。你需要100台Linux的主机,我1分钟就克隆出来给你使用。这就是我们为啥看到云服务提供商,都是通过虚拟化来提供云计算。4.3.结论对于要解决1台机器的资源充分利用,那么云计算是需要虚拟化来实现。但是对于把多台机器并在一起完成一项工作,根本不需要虚拟化。如果你希望对外提供服务,作为云计算的服务提供商,那么你就需要采用虚拟化的技术,这样可以更好的服务客户。
本文标题:GOOGLE云计算与AMAZON云计算对比
链接地址:https://www.777doc.com/doc-6469688 .html