Google App Engine的架构

     在以提供物理资源为目的的 IaaS ( Infrastructure as a Service )领域里, Amazon EC2是当之无愧的领先者。而在以提供平台为目标的 PaaS( Platform as a Service)领域里, Google App Engine 的美誉度是非常高的,我也对其非常关注和爱好,经历我长达一年的学习和钻研,已经对 Google App Engine大致的架构有所了解。希望大家能通过我的介绍能够理解其工作原理,设计的一些 tradeoff和其设计的核心思想,更希望能让大家不要再把 Google App Engine看的过分神秘,它的实现只是一个工程问题,不是一个科学问题(比如, X86芯片的频率超过 4GHz),只要有足够资源作保证,我 敢说其实只需要几十个普通的程序员(中国的),就能基本实现其大多数功能。那么我首先给大家介绍一下 Google App Engine的总体架构。

总体架构

          简单而言,其架构可以用四部分:

1.       前端, 包括 Front End 和 Static Files。主要提供下列功能:

a.       负载均衡;

b.      静态文件的传输;

c.       html的生成;

d.      转发请求给应用服务器。

2.       应用服务器( App Server)。它能同时运行多个应用的 runtime( python/java)。

3.       服务群( Service Group)。服务群现在主要包括下列服务:

a.       Datastore;

b.        Memcache;

c.       Images;

d.        User;

e.      URLFetch;

f.        Email

4.       应用管理节点( App Master)。它主要负责应用的启停和计费。

                                图 1   Google App Engine架构图 1 (来源: 2009 Google IO)

设计理念

重用现有的 Google 技术

     大家都知道,重用是软件工程的核心理念之一,无论是过去的模块化思想还是现在的 SOA,它们核心都是与重用紧密相连的。在 Google App Engine开发的工程中,重用的思想也体现的非常好,比如在 Datastore是基于 Google的 bigtable技术, Images服务是基于 picasa的, user服务是利用 Google Accounts的,等等。可以这么说,在其这么多模块里面,真的很难找到一个是完全重新开发的。

利用 Protocol BuffersRPC 技术

     应用服务器和很多服务相连,有可能会出现很多问题,最明显的问题就是异构的问题,比如一些服务是用 Java写的,而另一些是用 C++写的。怎么办呢?使用 Web Service版,但 Web Service效率不高怎么办?而一些问题也同样困扰着 Google,而 Google的解决方法是 Protocol Buffers。P rotocol buffers -一种可扩展的序列化结构化数据的方式,语言中立,平台中立并被用于通信协议,数据存储等许多方面,并且其速度有可能是 XML的 10倍。

Shared Nothing 的架构

     Google App Engine有一个大家都非常称赞的优点,那个优点就是伸缩性很强。那么它是怎么做到的呢?其实它是利用一个说起很简单,但做起来很难的道理。那个道理就是 Shared Nothing。他们通过在 App Server那层做到了 Shared Nothing,而将所有和持久化相关的东西都和 datastore,这样使 App Server那层做到了 scalable,并且 datastore本身就是一个分布式的数据库。当所有的模块都是 scalable的时候,那么我们可以认为 Google App Engine是 scalable的。

分布式的数据库

     其 Datastore的实现就是利用 Google的 BigTable技术,同时也是最有争议的一块。

     BigTable是一个用来存储结构数据的分布式存储系统。与平时常用的数据库不同, BigTable并非一个支持 sql语言的关系数据库,而是 map方式的,列导向的数据库(一列数据连续存储)。 BigTable为读进行了优化,对数据库的读取访问远远大于写入是互联网服务的重要特点。并且 BigTable还利用 Google的分布式文件系统技术( GFS)。

 

Java版的 Google App Engine

        根据我的推断,其实 Java版和 Python版唯一的确保就是在 App Server端,其实模块应该区别不大,因为 App Server上 Java code对其他服务的调用都是通过上面提到 Protocol Buffers这个平台无关的协议进行远程调用的,所以 App Server上面的代码是不用关心 Datastore, Memcache和 Images等服务是不是用 Java实现,只要它们起着,就能通过 Protocol Buffers调。

本地 Sandbox开发

      为了方便开发和调试,Google App Engine提供一个本地sandbox。

       通过下面这张图,我们大概能够明白Sandbox的环境和 Production的环境有什么不同了。唯一的不同就在于Implementation不一样。假设程序调用Datastore的服务,如果在Production的环境下,它会去调真实的Datastore服务,而在Sandbox的环境下,它则会调local stub,也就是一个基于文件的数据库程序。

            

                                图 2   Google App Engine架构图 2 (来源: 2009 Google IO)

未来的 Roadmap

1.       不断推出新的 API,比如 Task Queue和 XMPP。

      Task Queue一般用于离线操作,而 XMPP有可能和 Google Wave有关。

2.       新的语言(估计不可能)

      因为 Google内部仅支持三种语言, C++, Java和 Javascript,而且推出一个新的语言版本的话,是非常劳师动众的,毕竟 Google App Engine的设计和 Windows Azure的设计是完全不同的。所以短期我认为不大可能支持新的语言。

 

总结

      Google App Engine是 Google大战略的一个不可分割的一部分,因为 Google希望能通过 Google App Engine来降低 Web应用开发的难度,只要难度降低了,那么 Web应用替代客户端应用的速度将会更快,如果出现这样的情况的话,那么将会对 Google今后的发展非常有利。通过也希望国内兄弟们能尽快推出山寨版的。

参考资料

·       From Spark Plug to Drive Train: Life of an App Engine Request http://code.google.com/events/io/sessions/FromSparkPlugToDriveTrain.html

·       Google AppEngine - A Second Look

http://highscalability.com/google-appengine-second-look

·         Google App Engine Blog

http://googleappengine.blogspot.com/

·         Bigtable: A Distributed Storage System for Structured Data

http://labs.google.com/papers/bigtable.html

·         The Google File System

http://labs.google.com/papers/gfs.html

·         Google发布新版本的 Protocol Buffers

http://www.infoq.com/cn/news/2009/05/google-protocol-buffers

 

原文:http://feiibm.blog.sohu.com/124693385.html

大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护 本文深度解析了大麦APP抢票协议的安全防护体系,重点分析了'掌密网络'代码中体现的动态签名、设备指纹和人机验证等关键技术。文章详细介绍了大麦APP如何通过多层次API安全防护应对抢票压力,包括参数加密、请求头部设计和异常处理机制,为移动应用开发者提供了安全实践建议。 阅读详情

相关推荐

Google App Engine 上的 Java 应用开发与部署

本文还有配套的精品资源,点击获取 简介:Google App Engine 是一个支持多种编程语言的 Web 应用程序开发和托管平台。本文档介绍了一个利用 Java 语言实现的示例应用,它演示了如何使用 Google App Engine SDK、Servlets、JDO/JPA、Datastore、部署配置、开发服务器、MVC 架构、JUnit 测试、版本控制和 Web ...

weixin_33298352的博客 1446

GoogleAppEngine技术架构资料大盘点

今天看到几篇有关GoogleAppEngine的技术架构文章,一起分享给大家,没看到过的同学赶紧惊喜一下吧,看到过了的同学也假装惊喜一下嘛,呵呵。全部文章有点长,请耐心看下去,相信程序员都是有耐心的,除了我.......在切入GoogleAppEngine之前,首先会对Google的核心技术和其整体架构进行分析,以帮助大家之后更好地理解GoogleAppEngine的实现。本篇将主要介绍Google的十个核心技术,而且可以分为四大类:由于搜索引擎需要处理海量的数据,所以Google的两位创始人LarryPage和SergeyBrin在创业初期设计一套名为"BigFiles"的文件系统,而GFS

深入解析Google App Engine扩展程序开发

Google App Engine(GAE)是一个为开发者提供的一站式云计算平台,它允许用户在Google的基础设施上部署、运行和管理应用程序。GAE 提供了自动扩展和负载平衡功能,无需任何管理或维护服务器的工作。EGL是一种面向对象的编程语言,支持类和对象的定义和使用。通过面向对象的编程范式,EGL允许开发人员将数据和操作数据的行为封装在一起,形成一个独立的实体。在EGL中定义类的语法如下:def name;def age;

weixin_32661831的博客 898

探索Google App Engine背后的奥秘(4)- Google App Engine的架构

 作者: ikewu | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/google_app_engine-arch_intro.html按:此为客座博文系列。投稿人吴朱华曾在IBM中国研究院从事与云计算相关的研究,现在正致力于研究云计算技术。本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍。设计理念App Engine在设计理念方面,主要可以总结为下面这五条:重用现有的G

MMOG Server/Graphics Engine/C++ - 周龙亭的专栏 938

Google App Engine(GAE)是一个PaaS(平台即服务)平台,专门设计用于托管Web应用程序

此外,GAE还提供了许多其他服务和工具,如数据存储、身份验证、队列服务等,使得开发者可以专注于应用程序的逻辑和业务逻辑,而无需担心基础设施的管理。需要注意的是,使用GAE需要一定的技术背景和经验,特别是对于新手来说需要一定的学习曲线。此外,GAE还提供了许多云服务,如数据存储、缓存、队列、身份验证等,使得开发者可以更加专注于应用程序的开发,而不需要关心基础设施的运维。它是一种云计算服务,提供应用程序开发和部署所需的平台和基础设施,使得用户可以不用管理底层硬件和软件,就能够创建、测试和部署应用程序。

[Blog][Domain] programb.blog.csdn.net 1390

Google App Engine 搭建在线商店

首先,Google App Engine 提供了一个托管环境,开发者无需担心服务器基础架构和运维。其次,Google App Engine 具有很强的可扩展性,可以根据需要自动扩展应用程序,以满足用户不断增长的需求。第三,Google App Engine 具有高可靠性,可以确保应用程序的可靠运行。第四,Google App Engine 提供了多种定价选项,可以选择适合自己需求和预算的方案。因此,Google App Engine 非常适合构建具有应用程序般体验的在线商店。

D0126_的博客 992

Google App Engine的架构 part 1

zz http://feiibm.blog.sohu.com/124693359.html 在以提供物理资源为目的的IaaS (Infrastructure as a Service )领域里, Amazon EC2是当之无愧的领先者。而在以提供平台为目标的PaaS(Platform as a Service)领域里,Google App Engine 的美誉度是非常高的,我也对其非常关注

466

探索Google App Engine背后的奥秘(4)- Google App Engine的架构(转载)

作者:ikewu|可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://www.dbanotes.net/arch/google_app_engine-arch_intro.html 按:此为客座博文系列。投稿人吴朱华曾在IBM中国研究院从事与云计算相关的研究,现在正致力于研究云计算技术。 本篇将首先介绍App Engine的一些设计理念,接着将...

weixin_34390996的博客 322

Google App Engine的架构 part 2

zz http://feiibm.blog.sohu.com/124693385.html Java版的Google App Engine       根据我的推断,其实Java版和Python版唯一的确保就是在App Server端,其实模块应该区别不大,因为App Server上Java code对其他服务的调用都是通过上面提到Protocol Buffers这个平台无关的协议

438

Google App Engine的架构-引用

引用说明:原文来自于http://lylhelin.iteye.com/blog/799352 ,为了方便本人阅读,文本格式略有调整。             在以提供物理资源为目的的 IaaS ( Infrastructure as a Service )领域里, Amazon EC2是当之无愧的领先者。而在以提供平台为目标的 PaaS( Platform as a Service)领域里...

cnmqw的专栏 181

Udacity分享他们在Google App Engine的架构

Udacity是一个以提供个性化计算机教育免费在线课程为主的网站,虽然该网站上目前只有18种课程,但是它的流量却相当可观,目前在Alexa的排名是11926。\Chris Chew是该网站的资深软件工程师。日前,他在Google App Engine的官方博客上分享了如何使用App Engine来构建Udacity。\Chris指出:使用App Engine的决策,是由Udacity的CTO和联合...

cpongo5 155

探索Google App Engine背后的奥秘(4)- Google App Engine的架构

<br />本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍。<br /> 设计理念<br />App Engine在设计理念方面,主要可以总结为下面这五条: 重用现有的Google技术:大家都知道,重用是软件工程的核心理念之一,因为通过重用不仅能减低开发成本,而且能简化架构。在App Engine开发的过程中,重用的思想也得到了非常好的体现,比如Datastore是基于Google的bigtable技术,Images服务是基于Picasa的,用户认证服务是

hjxhjh的专栏 666

Google App Engine技术架构Google App Engine架构

上一篇我们介绍了Google App Engine的基本信息,本篇将首先介绍App Engine的一些设计理念,接着将对App Engine的组成部分等进行介绍。 设计理念 App Engine在设计理念方面,主要可以总结为下面这五条: 重用现有的Google技术:大家都知道,重用是软件工程的核心理念之一,因为通过重用不仅能减低开发成本,而且能简化架构。在App Engine开发的过程...

weixin_34130269的博客 240

GNSS与IMU融合导航仿真包:含EKF滤波实现、MATLAB源码及实操教程

一套完整的GNSS-INS组合导航MATLAB仿真资源,聚焦扩展卡尔曼滤波(EKF)在多传感器数据融合中的实际应用。包含主运行脚本main.m、核心算法函数文件夹func、真实场景模拟数据GNSSaidedINS_data.mat,以及配套讲解视频教程.mp4。所有代码可直接运行,清晰展示惯性测量单元(IMU)与全球导航卫星系统(GNSS)数据如何通过EKF动态校正姿态、速度和位置误差。教程覆盖EKF建模思路、状态方程与观测方程构建、噪声协方差调参技巧、融合结果可视化分析等关键环节,适合嵌入式导航、自动驾驶感知或控制课程实践使用。无需额外工具箱,兼容主流MATLAB版本,支持快速复现和二次开发。

上一篇: 从技术角度剖析云计算的架构
下一篇: 全面解析云存储的网格架构
lylhelin
博客等级 码龄21年 9粉丝 215原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值