《前端工程师-GoogleAppEngine前端技术架构解析12467.docx》由会员分享,可在线阅读,更多相关《前端工程师-GoogleAppEngine前端技术架构解析12467.docx(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、GooggleAAppEEngiine前前端技术术架构解解析今天看到到几篇有有关Goooglle AApp Engginee的技术术架构文文章,一一起分享享给大家家,没看看到过的的同学赶赶紧惊喜喜一下吧吧,看到到过了的的同学也也假装惊惊喜一下下嘛,呵呵呵。全部文章章有点长长,请耐耐心看下下去,相相信程序序员都是是有耐心心的,除除了我.一、Goooglle的核核心技术术在切入GGooggle Appp Ennginne之前前,首先先会对GGooggle的的核心技技术和其其整体架架构进行行分析,以以帮助大大家之后后更好地地理解GGooggle Appp Ennginne的实实现。本篇将主主要介绍绍
2、Goooglee的十个个核心技技术,而而且可以以分为四四大类: 分布布式基础础设施:GFSS、Chhubbby 和和 Prrotoocoll Buuffeer。 分布布式大规规模数据据处理:MappRedducee 和 Sawwzalll。 分布布式数据据库技术术:BiigTaablee 和数数据库 Shaardiing。 数据据中心优优化技术术:数据据中心高高温化、112V电电池和服服务器整整合。分布式基基础设施施GFS由于搜索索引擎需需要处理理海量的的数据,所所以Goooglle的两两位创始始人Laarryy Paage和和Serrgeyy Brrin在在创业初初期设计计一套名名为BBig
3、FFilees的的文件系系统,而而GFSS(全称称为GGooggle Fille SSysttem)这套套分布式式文件系系统则是是BiigFiiless的延延续。首先,介介绍它的的架构,GGFS主主要分为为两类节节点: Maasteer节点点:主要要存储与与数据文文件相关关的元数数据,而而不是CChunnk(数数据块)。元数数据包括括一个能能将644位标签签映射到到数据块块的位置置及其组组成文件件 的表表格,数数据块副副本位置置和哪个个进程正正在读写写特定的的数据块块等。还还有Maasteer节点点会周期期性地接接收从每每个Chhunkk节点来来的更新新(HHearrt- beaat)来让元元
4、数据保保持最新新状态。 Chhunkk节点:顾名思思义,肯肯定用来来存储CChunnk,数数据文件件通过被被分割为为每个默默认大小小为644MB的的Chuunk的的方式存存储,而而且每个个Chuunk有有唯一一一个644位标签签,并且且每个CChunnk都会会在整个个分布式式系统被被复制多多次,默默认为33次。下图就是是GFSS的架构构图:图1. GFSS的架构构图(参参片115)接着,在在设计上上,GFFS主要要有八个个特点: 大文文件和大大数据块块:数据据文件的的大小普普遍在GGB级别别,而且且其每个个数据块块默认大大小为664MBB,这样样做的好好处是减减少了元元数据的的大小,能能使Ma
5、asteer节点点能够非非常方便便地将元元数据放放置在内内存中以以提升访访问效率率。 操作作以添加加为主:因为文文件很少少被删减减或者覆覆盖,通通常只是是进行添添加或者者读取操操作,这这样能充充分考虑虑到硬盘盘线性吞吞吐量大大和随机机读写慢慢的特点点。 支持持容错:首先,虽虽然当时时为了设设计方便便,采用用了单MMastter的的方案,但但是整个个系统会会保证每每个Maasteer都会会有其相相对应的的复制品品,以便便于在 Massterr节点出出现问题题时进行行切换。其其次,在在Chuunk层层,GFFS已经经在设计计上将节节点失败败视为常常态,所所以能非非常好地地处理CChunnk节点点失
6、效的的问题。 高吞吞吐量:虽然其其单个节节点的性性能无论论是从吞吞吐量还还是延迟迟都很普普通,但但因为其其支持上上千的节节点,所所以总的的数据吞吞吐量是是非常惊惊人的。 保护护数据:首先,文文件被分分割成固固定尺寸寸的数据据块以便便于保存存,而且且每个数数据块都都会被系系统复制制三份。 扩展展能力强强:因为为元数据据偏小,使使得一个个Massterr节点能能控制上上千个存存数据的的Chuunk节节点。 支持持压缩:对于那那些稍旧旧的文件件,可以以通过对对它进行行压缩,来来节省硬硬盘空间间,并且且压缩率率非常惊惊人,有有时甚至至接近990%。 用户户空间:虽然在在用户空空间运行行在运行行效率方方
7、面稍差差,但是是更便于于开发和和测试,还还有能更更好利用用Linnux的的自带的的一些PPOSIIX AAPI。现在Goooglle内部部至少运运行着2200多多个GFFS集群群,最大大的集群群有几千千台服务务器,并并且服务务于多个个Goooglee服务,比比如Goooglle搜索索。但由由于 GGFS主主要为搜搜索而设设计,所所以不是是很适合合新的一一些Goooglle产品品,比YYouTTubee、Gmmaill和更强强调大规规模索引引和实时时性的CCafffeinne搜索索引擎 等,所所以Goooglle已经经在开发发下一代代GFSS,代号号为CColoossuus,并并且在设设计方面面
8、有许多多不同,比比如:支支持分布布式Maasteer节点点来提升升高可用用性 并并能支撑撑更多文文件,CChunnk节点点能支持持1MBB大小的的chuunk以以支撑低低延迟应应用的需需要。Chubbby简单的来来说,CChubbby 属于分分布式锁锁服务,通通过 CChubbby,一一个分布布式系统统中的上上千个cclieent都都能够对对于某项项资源进进行加加锁或或者解解锁,常常用于BBigTTablle的协协作工作作,在实实现方面面是通过过 对文文件的创创建操作作来实现现加锁锁,并并基于著著名科学学家Leesliie LLampportt的Paaxoss算法。Prottocool BBu
9、ffferProttocool BBufffer,是是Goooglee内部使使用一种种语言中中立、平平台中立立和可扩扩展的序序列化结结构化数数据的方方式,并并提供 Javva、CC+ 和 PPythhon 这三种种语言的的实现,每每一种实实现都包包含了相相应语言言的编译译器以及及库文件件,而且且它是一一种二进进制的格格式,所所以其速速度是使使用 XXML 进行数数据交换换的100倍左右右。它主主要用于于两个方方面:其其一是RRPC通通信,它它可用于于分布式式应用之之间或者者异构环环境下的的通信。其其二是数数据存储储方面,因因为它自自描述,而而 且压压缩很方方便,所所以可用用于对数数据进行行持久
10、化化,比如如存储日日志信息息,并可可被Maap RReduuce程程序处理理。与PProttocool BBufffer比比较类似似的产品品还有FFaceeboook的 Thrriftt ,而而且 FFaceeboook 号号称Thhrifft在速速度上还还有一定定的优势势。分布式大大规模数数据处理理MapRReduuce首先,在在Goooglee数据中中心会有有大规模模数据需需要处理理,比如如被网络络爬虫(Webb Crrawller)抓取的的大量网网页等。由由于这些些数据很很多都是是PB级级别,导导致处理理工作不不得不尽尽可能的的并行化化,而GGooggle为为了解决决这个问问题,引引入了
11、 MappRedducee这个编编程模型型,MaapReeducce是源源自函数数式语言言,主要要通过Mapp(映射射)和和Reeducce(化化简)这两个个步骤来来并行处处理大规规 模的的数据集集。Maap会先先对由很很多独立立元素组组成的逻逻辑列表表中的每每一个元元素进行行指定的的操作,且且原始列列表不会会被更改改,会创创建多个个新的列列表来保保存Maap的处处理结 果。也也就意味味着,MMap操操作是高高度并行行的。当当Mapp工作完完成之后后,系统统会先对对新生成成的多个个列表进进行清理理(Shhufffle)和排序序,之后后会这些些新创建建的列表表 进行行Redducee操作,也也就
12、是对对一个列列表中的的元素根根据Keey值进进行适当当的合并并。下图为MMapRReduuce的的运行机机制:图2. MappRedducee的运行行机制(参119)接下来,将将根据上上图来举举一个MMapRReduuce的的例子:比如,通通过搜索索Spiiderr将海量量的Weeb页面面抓取到到本地的的GFSS集群中中,然后后Inddex系系 统将将会对这这个GFFS集群群中多个个数据CChunnk进行行平行的的Mapp处理,生生成多个个Keyy为URRL,vvaluue为hhtmll页面的的键值对对(Keey-VValuue MMap),接着着系统会会对这些些刚生成成的键值值对进行行Shu
13、ufflle(清清理),之之后系统统会通过过Redducee操作来来根据相相同的kkey值值(也就就是URRL)合合并这些些键 值值对。最后,通通过MaapReeducce这么么简单的的编程模模型,不不仅能用用于处理理大规模模数据,而而且能将将很多繁繁琐的细细节隐藏藏起来,比比如自动动并行化化,负载载均衡和和机器宕宕 机处处理等,这这样将极极大地简简化程序序员的开开发工作作。MaapReeducce可用用于包括括分布布greep,分分布排序序,weeb访问问日志分分析,反反向索引引构建,文文档聚类类,机 器学习习,基于于统计的的机器翻翻译,生生成Goooglle的整整个搜索索的索引引等大大规模
14、数数据处理理工作。YYahooo也推推出MaapReeducce的开开源版本本Haddoopp,而 且Haadooop在业业界也已已经被大大规模使使用。SawzzalllSawzzalll可以被被认为是是构建在在MappRedducee之上的的采用类类似Jaava语语法的DDSL(Dommainn-Sppeciificc Laanguuagee),也也可以认认为它是是分布式式的AWWK。它它主要用用于对大大规模分分布式数数据进行行筛选和和聚合等等高级数数据处理理操作,在在实现方方面,是是通过解解释器将将其转化化 为相相对应的的MappRedducee任务。除除了Goooglle的SSawzza
15、lll之外,yyahooo推出出了相似似的Piig语言言,但其其语法类类似于SSQL。分布式数数据库技技术BigTTablle由于在GGooggle的的数据中中心存储储PB级级以上的的非关系系型数据据时候,比比如网页页和地理理数据等等,为了了更好地地存储和和利用这这些数据据,Goooglle开发发了一套套数 据据库系统统,名为为BiigTaablee。BBigTTablle不是是一个关关系型的的数据库库,它也也不支持持关联(Joiin)等等高级SSQL操操作,取取而代之之的是多多级映射射的数 据结构构,并是是一种面面向大规规模处理理、容错错性强的的自我管管理系统统,拥有有TB级级的内存存和PB
16、B级的存存储能力力,使用用结构化化的文件件来存储储数据,并并每秒可可以处理理数百万万的读 写操作作。什么是多多级映射射的数据据结构呢呢?就是是一个稀稀疏的,多多维的,排排序的MMap,每每个Ceell由由行关键键字,列列关键字字和时间间戳三维维定位.Celll的内内容是一一个不 解释的的字符串串,比如如下表存存储每个个网站的的内容与与被其他他网站的的反向连连接的文文本。 反向的的URLL coom.ccnn.wwww是这行行的关键键字;cconttentts列存存储网页页内容,每每个内容容有一个个时间戳戳,因为为有两个个反向连连接,所所以arrchoor的CColuumn Fammilyy有两
17、列列:annchoor: m和annchhhor:my.loook.cca。CColuumn Fammilyy这个概概念,使使得表可可以轻松松地横向向扩展。下下面是它它具体的的数据模模型图:图3. BiggTabble数数据模型型图(参参4)在结构上上,首先先,BiigTaablee基于GGFS分分布式文文件系统统和Chhubbby分布布式锁服服务。其其次BiigTaablee也分为为两部分分:其一一是Maasteer节 点,用用来处理理元数据据相关的的操作并并支持负负载均衡衡。其二二是taableet节点点,主要要用于存存储数据据库的分分片taableet,并并提供相相应的数数据访问问,同时
18、时Tabblett 是基基于名为为SSTTablle的格格式,对对压缩有有很好的的支持。图4. BiggTabble架架构图(参115)BigTTablle正在在为Goooglle六十十多种产产品和项项目提供供存储和和获取结结构化数数据的支支撑平台台,其中中包括有有Goooglee Prrintt、 OOrkuut、GGooggle Mapps、GGooggle Earrth和和Blooggeer等,而而且Goooglle至少少运行着着5000个BiigTaablee集群。随着Goooglle内部部服务对对需求的的不断提提高和技技术的不不断地发发展,导导致原先先的BiigTaablee已经无无
19、法满足足用户的的需求,而而Goooglee也正在在开发下下一代BBigTTablle,名名为SSpannnerr(扳手手),它它主要有有下面这这些BiigTaablee所无法法支持的的特性: 支持持多种数数据结构构,比如如tabble,ffamiiliee,grroupp和cooproocesssorr等。 基于于分层目目录和行行的细粒粒度的复复制和权权限管理理。 支持持跨数据据中心的的强一致致性和弱弱一致性性控制。 基于于Paxxos算算法的强强一致性性副本同同步,并并支持分分布式事事务。 提供供许多自自动化操操作。 强大大的扩展展能力,能能支持百百万台服服务器级级别的集集群。 用户户可以自
20、自定义诸诸如延迟迟和复制制次数等等重要参参数以适适应不同同的需求求。数据库SSharrdinngSharrdinng就是是分片的的意思,虽虽然非关关系型数数据库比比如BiigTaablee在Goooglle的世世界中占占有非常常重要的的地位,但但是面对对传统OOLTPP应用, 比如广广告系统统,Goooglle还是是采用传传统的关关系型数数据库技技术,也也就是MMySQQL,同同时由于于Goooglee所需要要面对流流量非常常巨大,所所以Goooglle在数数据库 层采用用了分片片(Shharddingg)的水水平扩展展(Sccalee Ouut)解解决方案案,分片片是在传传统垂直直扩展(Sc
21、aale Up)的分区区模式上上的一种种提升,主主要通过过时间,范范围和面面向服务务等方式式来将一一个大型型的数据据库分成成多片,并并且这些些数据片片可以跨跨越多个个数据库库和服务务器来实实现水平平 扩展展。Googgle整整套数据据库分片片技术主主要有下下面这些些优点: 扩展展性强:在Goooglle生产产环境中中,已经经有支持持上千台台服务器器的MyySQLL分片集集群。 吞吐吐量惊人人:通过过巨大的的MySSQL分分片集群群能满足足巨量的的查询请请求。 全球球备份:不仅在在一个数数据中心心还是在在全球的的范围,GGooggle都都会对MMySQQL的分分片数据据进行备备份,这这样不仅仅能
22、保护护数据,而而且方便便扩展。在实现方方面,主主要可分分为两块块:其一一是在MMySQQL IInnooDB基基础上添添加了数数据库分分片的技技术。其其二是在在ORMM层的HHibeernaate的的基础上上也添加加了相关关的分片片技术,并并支持虚虚拟分片片(Viirtuual Shaard)来便于于开发和和管理。同同时Goooglle也已已经将这这两方面面的代码码提交给给相关组组织。数据中心心优化技技术数据中心心高温化化大中型数数据中心心的PUUE(PPoweer UUsagge EEffeectiivennesss)普遍遍在2左左右,也也就是在在服务器器等计算算设备上上耗1度度电,在在空调
23、等等辅助设设备上也也要消耗耗一度电电。对一一些非常常出色的的数据中中心,最最多也 就能达达到1.7,但但是Goooglle通过过一些有有效的设设计使部部分数据据中心到到达了业业界领先先的1.2,在在这些设设计当中中,其中中最有特特色的莫莫过于数数据中心心高温化化,也就就 是让让数据中中心内的的计算设设备运行行在偏高高的温度度下,GGooggle的的能源方方面的总总监Errik Teeetzeel在谈谈到这点点的时候候说:普通的的数据中中心在770华氏氏度(221摄氏氏度)下下面工作作,而我我们则推推荐800华氏度度(277摄氏度度)。但但是在提提高数据据中心 的温度度方面会会有两个个常见的的限
24、制条条件:其其一是服服务器设设备的崩崩溃点,其其二是精精确的温温度控制制。如果果做好这这两点,数数据中心心就能够够在高温温下工作作,因为为假设数数据中心心的 管管理员能能对数据据中心的的温度进进行正负负1/22度的调调节,这这将使服服务器设设备能在在崩溃点点5度之之内工作作,而不不是常见见的200度之内内,这样样既经济济,又安安全。还还有,业业界传 言Inntell为Goooglle提供供抗高温温设计的的定制芯芯片,但但云计算算界的顶顶级专家家Jammes Hammiltton认认为不太太可能,因因为虽然然处理器器也非常常惧怕热热量,但但是与内内存和硬硬盘相比比还是强强很多,所所以处理理器在抗
25、抗高温设设计中并并不是一一个核心心因素。同同时他也也 非常常支持使使数据中中心高温温化这个个想法,而而且期望望将来数数据中心心甚至能能运行在在40摄摄氏度下下,这样样不仅能能节省空空调方面面的成本本,而且且对环境境也很有有利。12V电电池由于传统统的UPPS在资资源方面面比较浪浪费,所所以Goooglle在这这方面另另辟蹊径径,采用用了给每每台服务务器配一一个专用用的122V电池池的做法法来替换换了常用用的UPPS, 如果主主电源系系统出现现故障,将将由该电电池负责责对服务务器供电电。虽然然大型UUPS可可以达到到92%到955%的效效率,但但是比起起内置电电池的999.999%而而言是非非常
26、捉襟襟见肘 的,而而且由于于能量守守恒的原原因,导导致那么么未被UUPS充充分利用用的电力力会被转转化成热热能,这这将导致致用于空空调的能能耗相应应地攀升升,从而而走入一一个恶性性循环。同同时在电电源方 面也有有类似的的神来来之笔,普通通的服务务器电源源会同时时提供55V和112V的的直流电电。但是是Goooglee设计的的服务器器电源只只输出112V直直流电,必必要的转转换在主主板上 进行,虽虽然这种种设计会会使主板板的成本本增加11美元到到2美元元,但是是它不仅仅能使电电源能在在接近其其峰值容容量的情情况下运运行,而而且在铜铜线上传传输电流流时效率率更高。服务器整整合谈到虚拟拟化的杀杀手锏
27、时时,第一一个让人人想到肯肯定是服服务器整整合,而而且普遍遍能实现现1:88的整合合率来降降低各方方面的成成本。有有趣的是是,Goooglle在硬硬件方面面也引 入类似似服务器器整合的的想法,它它的做法法是在一一个机箱箱大小的的空间内内放置两两台服务务器,这这些做的的好处有有很多,首首先,减减小了占占地面积积。其次次,通过过让两台台服务器器共享诸诸如 电电源等设设备,来来降低设设备和能能源等方方面的投投入。二、Goooglle AApp Engginee简介由于发布布S3和和EC22这两个个优秀的的云服务务,使得得Amaazonn已经率率先在云云计算市市场站稳稳了脚跟跟,而身身为云计计算这个个
28、浪潮的的发起者者之一的的Goooglee肯定 不甘示示弱,并并在20008年年四月份份推出了了Goooglee Appp EEngiine这这项PaaaS服服务,虽虽然现在在无法称称其为一一个革命命性的产产品,但但肯定是是现在市市面上最最成熟,并并且功能能最全面面的PaaaS平平台。Googgle Appp Ennginne 提提供一整整套开发发组件来来让用户户轻松地地在本地地构建和和调试网网络应用用,之后后能让用用户在GGooggle强强大的基基础设施施上部署署和运行行网络应应用程序序,并自自动根据据应用所所承受 的负载载来对应应用进行行扩展,并并免去用用户对应应用和服服务器等等的维护护工作
29、。同同时提供供大量的的免费额额度和灵灵活的资资费标准准。在开开发语言言方面,现现支持JJavaa和 PPythhon这这两种语语言,并并为这两两种语言言提供基基本相同同的功能能和APPI。功能在功能上上,主要要有六个个方面: 动态态网络服服务,并并提供对对常用网网络技术术的支持持,比如如SSLL等 。 持久久存储空空间,并并支持简简单的查查询和本本地事务务。 能对对应用进进行自动动扩展和和负载平平衡。 一套套功能完完整的本本地开发发环境,可可以让用用户在本本机上对对Appp Ennginne进行行开发和和调试。 支持持包括EEmaiil和用用户认证证等多种种服务。 提供供能在指指定时间间和定期
30、期触发事事件的计计划任务务和能实实现后台台处理的的任务队队列。使用流程程整个使用用流程主主要包括括五个步步骤: 下载载SDKK和IDDE,并并在本地地搭建开开发环境境。 在本本地对应应用进行行开发和和调试。 使用用GAEE自带上上传工具具来将应应用部署署到平台台上。 在管管理界面面中启动动这个应应用。 利用用管理界界面来监监控整个个应用的的运行状状态和资资费。由于本系系列是专专注于GGAE的的实现和和设计两两方面,所所以不会会对GAAE的使使用有非非常深入入地介绍绍,如果果希望大大家对GGAE的的使用方方面有更更深的理理解,具具体可以以参看一一下GAAE的官官方文档档(htttp:/ccode
31、e.goooglle.ccom/inttl/zzh-CCN/aappeengiine/doccs/wwhattisggooggleaappeengiine.htmml)。Googgle Appp Ennginne的主主要组成成部分主要可分分为五部部分: 应用用服务器器:主要要是用于于接收来来自于外外部的WWeb请请求。 Daatasstorre:主主要用于于对信息息进行持持久化,并并基于GGooggle著著名的BBigTTablle技术术。 服务务:除了了必备的的应用服服务器和和Dattasttoree之外,GGAE还还自带很很多服务务来帮助助开发者者,比如如:Meemcaachee,邮件件,
32、网页页抓取,任任务队列列,XMMPP等等。 管理理界面:主要用用于管理理应用并并监控应应用的运运行状态态,比如如,消耗耗了多少少资源,发发送了多多少邮件件和应用用运行的的日志等等。 本地地开发环环境:主主要是帮帮助用户户在本地地开发和和调试基基于GAAE的应应用,包包括用于于安全调调试的沙沙盒,SSDK和和IDEE插件等等工具。应用服务务器应用服务务器依据据其支持持语言的的不同而而有不同同的实现现。Pythhon的的实现Pythhon版版应用服服务器的的基础就就是普通通的Pyythoon 22.5.2版的的Runntimme,并并考虑在在在未来来版本中中添加对对Pytthonn 3的的支持,但
33、但是因为为Pytthonn 3对对Pytthonn而言,就就好比JJavaa2之于于Javva1,跨跨度非常常大,所所以引入入Pytthonn3的难难度很大大。在WWeb技技术方面面,支持持诸如 Djaangoo,ChherrryPyy,Pyylonns和WWeb22py等等Pytthonn Weeb框架架,并自自带名为为WSSGI的CGGI框架架。虽然然Pytthonn版应用用服务器器是基于于标准的的Pytthonn Ruuntiime,但但是为了了安全并并更好地地适应AApp Engginee的整体体架构,对对运行在在应用服服务器内内的代码码设置了了很多方方面的限限制,比比如不能能加载用用
34、C编写写Pytthonn模块和和无法创创建Soockeet等。Javaa的实现现在实现方方面,JJavaa版应用用服务器器和Pyythoon版基基本一致致,也是是基于标标准的JJavaa Weeb容器器,而且且选用了了轻量级级的Jeettyy技术,并并跑在JJavaa 6上上。通过过这个WWeb容容器不仅仅能运行行常见的的Javva WWeb 技术,包包括Seervllet,JJSP,JJSTLL和GWWT等,而而且还能能跑大多多数常用用的Jaava APII(Appp EEngiine有有一个TThe JREE Cllasss Whhitee Liist( 定义那些Java API能在App
35、 Engine的环境中被使用)和一些基于JVM的脚本语言,例如JavaScript,Ruby或Scala等,但同样无法创建Socket和 Thread,或者对文件进行读写,也不支持一些比较高阶的API和框架,包括JDBC,JSF,Struts 2,RMI,JAX-RPC和Hibernate等。DataastooreDataastoore提提供了一一整套强强大的分分布式数数据存储储和查询询服务,并并能通过过水平扩扩展来支支撑海量量的数据据。但DDataastoore并并不是传传统的关关系型数数据 库库,它主主要以Enttityy的形形式存储储数据,一一个Enntitty包括括一个KKindd(在
36、概概念上和和数据库库的Taablee比较类类似)和和一系列列属性。Dataastoore提提供强一一致性和和乐观(opttimiistiic)同同步控制制,而在在事务方方面,则则支持本本地事务务,也就就是在只只能同一一个Enntitty GGrouup内执执行事务务。在接口方方面,PPythhon版版提供了了非常丰丰富的接接口,而而且还包包括名为为GQLL的查询询语言,而而Javva版则则提供了了标准的的JDOO和JPPA这两两套APPI。而且Goooglle已经经在今年年的Goooglle II/O大大会上宣宣布将在在未来的的Appp Ennginne ffor Bussineess套套件中
37、包包含标准准的SQQL数据据库服务务,但现现在还不不确定这这个SQQL数据据库的实实现方式式,是基基于开源源的MyySQLL技术,还还是基于于其私有有的实现现,这是是一个问问题。服务MemccachheMemccachhe是大大中型网网站所备备的服务务,主要要用来在在内存中中存储常常用的数数据,而而Appp Ennginne也包包含了这这个服务务。有趣趣的是AApp Engginee的Meemcaachee也是由由Braad FFitzzpattricck开发发。URL抓抓取(FFetcch)App Engginee的应用用可以通通过URRL抓取取这个服服务抓取取网上的的资源,并并可以这这个服
38、务务来与其其他主机机进行通通信。这这样避免免了应用用在Pyythoon和JJavaa环境中中无法使使用Soockeet的尴尴尬。EmaiilApp Engginee应用使使用这个个服务来来利用GGmaiil的基基础设施施来发送送电子邮邮件。计划任务务(Crron)计划服务务允许应应用在指指定时间间或按指指定间隔隔执行其其设定的的任务。这这些任务务通常称称为Crron jobb。图形App Engginee 提供供了使用用专用图图像服务务来操作作图像数数据的功功能。图图像服务务可以调调整图像像大小,旋旋转、翻翻转和裁裁剪图像像。它还还能够使使用预先先定义的的算法提提升图片片的质量量。用户认证证A
39、pp Engginee的应用用可以依依赖Goooglle帐户户系统来来验证用用户。AApp Engginee还将支支持OAAuthh。XMPPP在Appp Ennginne上运运行的程程序能利利用XMMPP服服务和其其他兼容容XMPPP的IIM服务务(比如如Goooglee Taalk)进行通通信。任务队列列(Taask Queeue)App Engginee应用能能通过在在一个队队列插入入任务(以Weeb HHookk的形式式)来实实现后台台处理,而而且Appp EEngiine会会根据调调度方面面的设置置来安排排这个队队列里面面的任务务执行。Blobbstoore因为Daatasstorr
40、e最多多支持存存储1MMB大小小的数据据对象,所所以Appp EEngiine推推出了BBlobbstoore服服务来存存储和调调用那些些大于11MB但但小于22G的二二进制数数据对象象。MappperMappper可可以认为为就是Mapp Reeducce中中的Maap,也也就是能能通过MMappper APII对大规规模的数数据进行行平行的的处理,这这些数据据可以存存储在DDataastoore或或者Bllobsstorre,但但这个功功能还处处于内部部开发阶阶段。Channnell其实Chhannnel就就是我们们常说的的Coomett,通通过Chhannnel APII能让应应用将内内
41、容直接接推至用用户的浏浏览器,而而不需常常见的轮轮询。除了Jaava版版的Meemcaachee,Emmaill和URRL抓取取都是采采用标准准的APPI之外外,其他他服务无无论是JJavaa版还是是Pytthonn版,其其APII都是私私有的,但但是提供供了丰富富和细致致的文档档来帮助助用户使使用。管理界面面用了让用用户更好好地管理理应用,GGooggle提提供了一一整套完完善的管管理界面面,地址址是htttp:/aappeengiine.goooglee.coom/ ,而且且只需用用户的GGooggle帐帐户就能能登录和和使用。下下图为其其截屏:图1. 管理界界面(点点击看大大图)使用这个
42、个管理界界面可执执行许多多操作,包包括创建建新的应应用程序序,为这这个应用用设置域域名,查查看与访访问数据据和错误误相关的的日志,观观察主要要资源的的使用状状况。本地开发发环境为了安全全起见,本本地开发发环境采采用了沙沙箱(SSanddboxx)模式式,基本本上和上上面提到到的应用用服务器器的限制制差不多多,比如如无法创创建Soockeet和 Thrreadd,也无无法对文文件进行行读写。PPythhon版版Appp Ennginne SSDK是是以普通通的应用用程序的的形式发发布,本本地需要要安装相相应的PPythhon Runntimme,通通过命令令行方式式启动PPythhon版版的Sa
43、andbbox,同同时也可可以在安安装有PPyDeev插件件的Ecclippse上上启动。JJavaa版Appp EEngiine SDKK是以EEcliispee Pllugiin形式式发布,只只要用户户在他的的Ecllipsse上安安装这个个Pluuginn,用户户就能启启动本地地Javva沙箱箱来开发发和调试试应用。编程模型型因为Appp EEngiine主主要为了了支撑WWeb应应用而存存在,所所以Weeb层编编程模型型对于AApp Engginee也是最最关键的的。Appp EEngiine主主要使用用的Weeb模型型是CGGI,CCGI全全称为Commmonn Gaatewway
44、Intterffacee,它它的意思思非常简简单,就就是收到到一个请请求,起起一个进进程或者者线程来来处理这这个请求求,当处处理结束束后这个个进程或或者线程程自动关关闭,之之后是不不断地重重 复这这个流程程。由于于CGII这种方方式每次次处理的的时候,都都要重新新起一个个新的进进程或者者线程,可可以说在在资源消消耗方面面还是很很厉害的的,虽然然有线程程池(TThreead Poool)这这样的优优化技术术。但是是由于CCGI在在架构上上的简单单性使其其成为GGAE首首选的编编程模型型,同时时由于CCGI支支持无状状态模式式,所以以也在伸伸缩性方方面非常常有优 势。而而且Appp EEngiin
45、e的的两个语语言版本本都自带带一个CCGI框框架:在在Pytthonn平台为为WSGGI。在在Javva平台台则为经经典的SServvlett。最近近,由于于Appp Ennginne引入入了计划划任务和和任务队队列这两两个特性性,所以以Appp Ennginne已经经支持计计划任务务和后台台进程这这两种编编程模型型。限制和资资费首先,谈谈一下AApp Engginee的使用用限制,具具体请看看下表:类别限制Dataastoore中中每个对对象的大大小1MB每个开发发者所拥拥有的项项目10个每个项目目的文件件数10000个每个项目目代码的的大小150MMB每个请求求最多执执行时间间30秒Blo
46、bbstoore(二进制制存储)的大小小1GBHTTPP Reespoonsee的大小小10MBB表1. Appp Ennginne的使使用限制制虽然这些些限制对对开发者者是一种种障碍,但但对Appp EEngiine这这样的多多租户环环境而且且却是非非常重要要的,因因为如果果一个租租户的应应用消耗耗过多的的资源的的话,将将会影响响到在临临近应用用的正常常使用,而而Appp Ennginne上面面这些限限制就是是为了是是运行在在其平台台上面应应用能安安全地运运行着想想,避免免了一个个吞噬资资源或恶恶性的应应用影响响到临近近应用的的情况。除除了安全全的方面面考虑之之 后,还还有伸缩缩的原因因,也
47、就就是说,当当一个应应用的所所占空间间(foootpprinnt)处处于比较较低的状状态,比比如少于于10000个文文件和大大小低于于1500MB等等,那么么能够 非常方方便地通通过复制制应用来来实现伸伸缩。接着,谈谈一下资资费情况况,Appp EEngiine的的资费情情况主要要有两个个特点:其一是是免费额额度高,现现有免费费的额度度能支撑撑一个中中型网站站的运行行,且不不需付任任何费用用。其二二是资费费项目非非常细粒粒度,普普通 IIaaSS服务资资费,主主要就是是CPUU,内存存,硬盘盘和网络络带宽这这四项,而而Appp Ennginne则除除了常见见的CPPU和网网络带宽宽这两项项之外,还还包括很很多应用用级别的的项目,比比如:DDataastoore APII和邮件件APII的调用用次数等等。具体体资费的的机制是是这样的的:如果果用户的的应用每每天消费费的各种种资源都都低于这这个额度度,那们们用户无无需支付付任何费费用,但但是当免免费额度度 被超超过的时时候,用用户就需需要为超超过的部部分付费费。因为为Appp Ennginne整套套资费标标准比较较复杂,所所以在这这里就主主要介绍绍一下它它的免费费额度,具具体请看看下表:类型数量