快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

永乐国际登录网站乐在其中:探索GAE背后的奥秘之GAE简介



经由过程前面两篇先容,大年夜家应该对Google强大年夜的根基举措措施有必然的懂得。本篇开始先容建筑在这强大年夜根基举措措施之上的Google App Engine。

Google App Engine的先容

因为宣布S3和EC2这两个优秀的云办事,使得Amazon已经率先在云谋略市场站稳了脚跟,而身为云谋略这个浪潮的提议者之一的Google肯定不甘示弱,并在2008年四月份推出了Google App Engine这项PaaS办事,虽然现在无法称其为一个革命性的产品,但肯定是现在市道市面上最成熟,并且功能最周全的PaaS平台。

Google App Engine 供给一整套开拓组件来让用户轻松地在本地构建和调试收集利用,之后能让用户在Google强大年夜的根基举措措施上支配和运行收集利用法度榜样,并自动根据利用所遭遇的负载来对利用进行扩展,并免去用户对利用和办事器等的掩护事情。同时供给大年夜量的免费额度和机动的资费标准。在开拓说话方面,现支持Java和P永乐国际登录网站乐在其中ython这两种说话,并为这两种说话供给基真相同的功能和API。

今朝已经支持google开拓的第三种说话Go说话平台的开拓了。

功能

在功能上,主要有六个方面:

动态收集办事,并供给对常用收集技巧的支持,比如SSL等 。

持久存储空间,并支持简永乐国际登录网站乐在其中单的查询和本地事务。

能对利用进行自动扩展和负载平衡。

一套功能完备的本地开拓情况,可以让用户在本机上对App Engine进行开拓和调试。

支持包括Email和用户认证等多种办事。

供给能在指准光阴和按期触发事故的计划义务和能实现后台处置惩罚的义务行列步队。

应用流程

全部应用流程主要包括五个步骤:

下载SDK和IDE,并在本地搭建开拓情况。

在本地对利用进行开拓和调试。

应用GAE自带上传对象来将利用支配到平台上。

在治理界面中启动这个利用。

使用治理界面来监控全部利用的运行状态和资费。

因为本系列是专注于GAE的实现和设计两方面,以是不会对GAE的应用有异常深入地先容,假如盼望大年夜家对GAE的应用方面有更深的理解,详细可以参看一下GAE的官方文档。

Google App Engine的主要组成部分

主要可分为五部分:

利用办事器:主如果用于接管来自于外部的Web哀求。

Datastore:主要用于对信息进行持久化,并基于Google闻名的BigTable技巧。

办事:除了必备的利用办事器和Datastore之外,GAE还自带很多办事来赞助开拓者,比如:Memcache,邮件,网页抓取,义务行列步队,XMPP等。

治理界面:主要用于治理利用并监控利用的运行状态,比如,耗损了若干资本,发送了若干邮件和利用运行的日志等。

本地开拓情况:主如果赞助用户在本地开拓和调试基于GAE的利用,包括用于安然调试的沙盒,SDK和IDE插件等对象。

利用办事器

利用办事器依据其支持说话的不合而有不合的实现。

Python的实现

Python版利用办事器的根基便是通俗的Python 2.5.2版的Runtime,并斟酌在在未来版本中添加对Python 3的支持,然则由于Python 3对Python而言,就好比Java2之于Java1,跨度异常大年夜,以是引入Python3的难度很大年夜。在Web技巧方面,支持诸如Django,CherryPy,永乐国际登录网站乐在其中Pylons和Web2py等Python Web框架,并自带名为”WSGI”的CGI框架。虽然Python版利用办事器是基于标准的Python Runtime,然则为了安然并更好地适应App Engine的整体架构,对运行在利用办事器内的代码设置了很多方面的限定,比如不能加载用C编写Python模块和无法创建Socket等。

Java的实现

在实现方面,Java版利用办事器和Python版基础同等,也是基于标准的Java Web容器,而且选用了轻量级的Jetty技巧,并跑在Java 6上。经由过程这个Web容器不仅能运行常见的Java Web 技巧,包括Servlet,JSP,JSTL和GWT等,而且还能跑大年夜多半常用的Java API(App Engine有一个The JRE Class White List来定义那些Java API能在App Engine的情况中被应用)和一些基于JVM的脚本说话,例如JavaScript,Ruby或Scala等,但同样无法创建Socket和Thread,或者对文件进行读写,也不支持一些对照高阶的API和框架,包括JDBC,JSF,Struts 2,RMI,JAX-RPC和Hibernate等。

Datastore

Datastore供给了一整套强大年夜的散播式数据存储和查询办事,并能通历水平扩展来支撑海量的数据。但Datastore并不是传统的关系型数据库,它主要以”Entity”的形式存储数据,一个Entity包括一个Kind(在观点上和数据库的Table对照类似)和一系列属性。

Datastore供给强同等性和乐不雅(optimistic)同步节制,而在事务方面,则支持本地事务,也便是在只能同一个Entity Group内履行事务。

在接口方面,Python版供给了异常富厚的接口,而且还包括名为GQL的查询说话,而Java版则供给了标准的JDO和JPA这两套API。

而且Google已经在今年的Google I/O大年夜会上发布将在未来的App Engine for Business套件中包孕标准的SQL数据库办事,但现在还不确定这个SQL数据库的实现要领,是基于开源的MySQL技巧,照样基于其私有的实现,这是一个问题。

办事

Memcache

Memcache是大年夜中型网站所备的办事,主要用来在内存中存储常用的数据,而App Engine也包孕了这个办事。有趣的是App Engine的Memcache也是由Brad Fitzpatrick开拓。

URL抓取(Fetch)

App Engine的利用可以经由过程URL抓取这个办事抓取网上的资本,并可以这个办事来与其他主机进行通信。这样避免了利用在Python和Java情况中无法应用Socket的为难。

Email

App Engine利用应用这个办事来使用Gmail的根基举措措施来发送电子邮件。

计划义务(Cron)

计划办事容许利用在指准光阴或按指定距离履行其设定的义务。这些义务平日称为Cron job。

图形

App Engine 供给了应用专用图像办事来操作图像数据的功能。图像办事可以调剂图像大年夜小,扭转、翻转和裁剪图像。它还能够应用预先定义的算法提升图片的质量。

用户认证

App Engine的利用可以依附Google帐户系统来验证用户。App Engine还将支持OAuth。

XMPP

在App Engine上运行的法度榜样能使用XMPP办事和其他兼容XMPP的IM办事(比如Google Talk)进行通信。

义务行列步队(Task Queue)

App Engine利用能经由过程在一个行列步队插入义务(以Web Hook的形式)来实现后台处置惩罚,而且App Engine会根据调整方面的设置来安排这个行列步队里面的义务履行。

Blobstore

由于Datastore最多支持存储1MB大年夜小的数据工具,以是App Engine推出了Blobstore办事来存储和调用那些大年夜于1MB但小于2G的二进制数据工具。

Mapper

Mapper可以觉得便是”Map Reduce”中的Map,也便是能经由过程Mapper API对大年夜规模的数据进行平行的处置惩罚,这些数据可以存储在Datastore或者Blobstore,但这个功能还处于内部开拓阶段。

Channel

着实Channel便是我们常说的”Comet”,经由过程Channel API能让利用将内容直接推至用户的浏览器,而不需常见的轮询。

除了Java版的Memcache,Email和URL抓取都是采纳标准的API之外,其他办事无论是Java版照样Python版,其API都是私有的,然则供给了富厚和细致的文档来赞助用户应用。

治理界面

用了让用户更好地治理利用,Google供给了一整套完善的治理界面,地址是http://appengine.google.com/ ,而且只需用户的Google帐户就能登录和应用。下图为其截屏:

图1. 治理界面

应用这个治理界面可履行许多操作,包括创建新的利用法度榜样,为这个利用设置域名,查看与造访数据和差错相关的日志,察看主要资本的应用状况。

本地开拓情况

为了安然起见,本地开拓情况采纳了沙箱(Sandbox)模式,基础上和上面提到的利用办事器的限定差不多,比如无法创建Socket和Thread,也无法对文件进行读写。Python版App Engine SDK因此通俗的利用法度榜样的形式宣布,本地必要安装响应的Python Runtime,经由过程敕令行要领启动Python版的Sandbox,同时也可以在安装有PyDev插件的Eclipse上启动。Java版App Engine SDK因此Eclispe Plugin形式宣布,只要用户在他的Eclipse上安装这个Plugin,用户就能启动本地Java沙箱来开拓和调试利用。

编程模型

由于App Engine主要为了支撑Web利用而存在,以是Web层编程模型对付App Engine也是最关键的。App Engine主要应用的Web模型是CGI,CGI全称为”Common Gateway Interface”,它的意思异常简单,便是收到一个哀求,起一个进程或者线程来处置惩罚这个哀求,当处置惩罚停止后这个进程或者线永乐国际登录网站乐在其中程自动关闭,之后是赓续地重复这个流程。因为CGI这种要领每次处置惩罚的时刻,都要从新起一个新的进程或者线程,可以说在资本耗损方面照样很厉害的,虽然有线程池(Thread Pool)这样的优化技巧。然则因为CGI在架构上的简单性使其成为GAE首选的编程模型,同时因为CGI支持无状态模式,以是也在伸缩性方面异常有上风。而且App Engine的两个说话版本都自带一个CGI框架:在Python平台为W永乐国际登录网站乐在其中SGI。在Java平台则为经典的Servlet。近来,因为App Engine引入了计划义务和义务行列步队这两个特点,以是App Engine已经支持计划义务和后台进程这两种编程模型。

限定和资费

首先,谈一下App Engine的应用限定,详细请看下表:

种别

限定

每个开拓者所拥有的项目

10个

每个项目的文件数

1000个

每个项目代码的大年夜小

150MB

每个哀求最多履行光阴

30秒

Blobstore(二进制存储)的大年夜小

1GB

HTTP Response的大年夜小

10MB

Datastore中每个工具的大年夜小

1MB

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: