Google云计算与Amazon云计算对比Word文件下载.doc
《Google云计算与Amazon云计算对比Word文件下载.doc》由会员分享,可在线阅读,更多相关《Google云计算与Amazon云计算对比Word文件下载.doc(7页珍藏版)》请在冰豆网上搜索。
AmazonWebServices(AWS)是这些服务的总称。
目前AWS提供的服务产品如表1所示。
产品分类
产品名称
弹性计算云
EC2
弹性MapReduce
内容推送服务
CloudFront
数据库服务
SimpleDB
RDS
简单队列服务
SQS
支付服务
FPS
DevPay
存储服务
S3
EBS
1.2.EC2
AmazonEC2属于IaaS(基础设施即服务)。
EC2使用Xen虚拟化技术。
每个虚拟机,又称作实例,能够运行小、大、极大三种能力的虚拟私有服务器。
Amazon利用EC2ComputeUnits去分配硬件资源。
使用
BackupSnapshotsto
EC2--AMI
Resideon
EBS存储
EC2简言之。
他完全是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务。
然而“无限”并不不意味“无边际”,相反,他是具有上限的。
亚马逊的文献阐明,你能同时租用“上百,甚至数以万计”虚拟机。
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对比
区别选项
GAE
层次
PaaS
IaaS
底层技术
GFS、BigTable、ChubbyLock等
SimpleDB、S3、RDS、EBS等
提供服务(对于开发人员)
服务都是现成的,可快速开发
自己搭建基础设施,然后安装服务,需耗费一定的时间
管理
简单
复杂
抽象程度
高
低
可靠性
可靠,可以时刻查看GAE的状态,是透明的
可靠,从历史数据来看,EC2正常运行时间比GAE要好
可移植性
可以
更好的可移植性
存储
GAE目前严重依赖BigTable,不过Google最近宣布将让GAE支持传统的SQL数据库
EC2已经支持SQL数据库,你可以使用Oracle,MySQL等你所熟悉的关系数据库
维护与升级
容易
开发限制
受平台的限制
提供了所有底层访问和控制权
语言支持
Java、Python
C#,.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台机器的资源充分利用,那么云计算是需要虚拟化来实现。
但是对于把多台