Google云计算与Amazon云计算对比

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Amazon 与Google 云计算

1. Amazon

1.1.基础架构和服务

客户请求

网页渲染组件

……

聚集服务

Dynamo 实例其他数据存储

图1 面向服务的Amazon 平台架构

图1显示了Amazon 平台的抽象架构,动态网页的内容是由页面呈现组件生成,该组件进而查询许多其他服务。一个服务可以使用不同的数据存储来管理其状态,这些数据存储仅在其服务范围才能访问。有些服务作为聚合器使用其他一些服务,可产生合成(composite)响应。通常情况下,聚合服务是无状态,虽然他们利用广泛的缓存。

从图1中可知,Dynamo 是Amazon 云计算平台中处于最底层的存储架构,不直接向公众提供服务,但是为整个平台及服务提供最基础的支持。S3就是建立在Dynamo 之上,SimpleDB 也极有可能使用或者借鉴了Dynamo 技术。

Amazon 以Web 服务的形式将云计算产品提供给用户。Amazon Web Services

(AWS)是这些服务的总称。目前AWS提供的服务产品如表1所示。

Amazon EC2属于IaaS(基础设施即服务)。EC2使用Xen虚拟化技术。每个虚拟机,又称作实例,能够运行小、大、极大三种能力的虚拟私有服务器。Amazon利用EC2 Compute Units去分配硬件资源。

EC2简言之。他完全是一部具有无限采集能力的虚拟计算机,用户能够用来执行一些处理任务。然而“无限”并不不意味“无边际”,相反,他是具有上限的。亚马逊的文献阐明,你能同时租用“上百,甚至数以万计”虚拟机。

2.Google GAE

由于发布S3和EC2这两个优秀的云服务,使得Amazon已经率先在云计算市场站稳了脚跟,而身为云计算这个浪潮的发起者之一的Google肯定不甘示弱,并在2008年四月份推出了Google App Engine这项PaaS服务,虽然现在无法称其为一个革命性的产品,但肯定是现在市面上最成熟,并且功能最全面的PaaS

平台。

Google App Engine架构图

从图上看出,GAE架构可以分为三个部分:前端,Datastore和服务群:

1.前端(有四大模块)

1)Front End:既可以认为它是Load Balancer,也可以认为它是Proxy,它

主要负责负载均衡和将请求转发给App Server(应用服务器)或者Static

Files等工作。

2)Static Files:在概念上,比较类似于CDN(Content Delivery Network,内

容分发网络),用于存储和传送那些应用附带的静态文件,比如图片,

CSS和JS脚本等。

3)App Server:用于处理用户发来的请求,并根据请求的内容来调用后面的

Datastore和服务群。

4)App Master:是在应用服务器间调度应用,并将调度之后的情况通知Front

End。

2.Datastore

它是基于BigTable技术的分布式数据库,虽然其也可以被理解成为一个服务,但是由于其是整个App Engine唯一存储持久化数据的地方,所以其是App Engine中一个非常核心的模块。

3.服务群

整个服务群包括很多服务供App Server调用,比如Memcache,图形,用户,URL抓取和任务队列等。

Google App Engine给你一个完整的平台,包括完整的SDK(以及Eclipse插件)和服务,你可以构建和部署你自己的应用程序,但你不能很好地控制操作系统,硬件和存储,诸如写文件系统,使用线程等操作都有限制,这样设计的目的是为了确保平台不会被某个应用程序绑架。

GAE应该是利用Google自己的技术实现的,从现在的资料来看没发现Google使用了虚拟化技术。Google有一项技术叫Google WorkQueue,是负责资源调度的,不知道是不是这项技术实现了GAE的资源控制(Google还未公开Google WorkQueue的实现)。从功能上说,GAE实现了多租户的资源按买入量分配,甚至CPU使用时间精确到了每个文件,这恐怕不是一个WorkQueue就能完成的吧?WorkQueue似乎更适合完成计算密集型任务。对于GAE这样的互联网应用,如果等请求到来后在调度资源将web app装入内存,是不是有点来不及啊?

Google的GAE下面有没有可能就是一堆的物理机装上OS,然后再把它的PaaS的东西(GFS,Bigtable,MapReduce)装上就Ok了呢?因为在PaaS这个层面已经实现了数据与计算的动态分布,包括系统的流水一样的扩展性与可靠性,坏一台机器就坏吧,反正已经分布冗余了,那还有什么必要再去多加一层虚拟机的虚拟化白白去浪费资源的overhead?

3.EC2与GAE对比

概括地说,Amazon EC2是进入云计算的早期尝试者,它利用互联网标准和开放平台创建了一个非常灵活的云计算平台,Google则利用了它在大型数据库方面的研究成果和它内部实现的一些技术创建了一个强大,但有更多限制的云计算环境。从核心技术来讲,Amazon EC2允许你扩展任何计算器实例到多个实例,因此你拥有每个虚拟盒子的完全控制权,Google App Engine从操作系统抽象而来,没有计算器实例的概念,如果你的Web应用程序不需要操作系统相关的功能,那么Google App Engine无疑是最好的选择,如果需要更好地控制你的系统环境,特别是操作系统相关的控制,那么最好选择Amazon EC2。

4.关于虚拟化的见解

4.1.云计算与虚拟化

云计算与虚拟化技术,没有必然的关系。实现云计算,根本不需要虚拟化。这里说的云计算就是分布式计算(如Google利用MapReduce实现)。只有在云服务提供商对外提供服务的时候,才需要虚拟化技术,用虚拟化技术的摸底是为了更好的管理。

1)当一台机器资源闲置的时候,我可以通过虚拟化,在上面跑多个OS。这

时云计算和虚拟化就有关系。

2)当一台机器无法满足计算的要求的时候,我们把多个机器并一起来完成

一项工作,这其实就是所谓的并行计算。但是这和虚拟化有啥关系呢?

我一台机器的性能都不够用,难道我还在上面虚拟化,再跑一个OS,

这样性能就更差。这其实是很困惑人的。

那么我不用虚拟化,来实现并行计算,可以吗?这肯定是可以,假如你这次

相关文档
最新文档