Google App Engine 架构分析

根据google 公开的资料,猜测Google App Engine架构设计,下面简要学习记录App Engine 接受请求原理及流程。高手路过!若你有更详细的资料或其他的想法请分享。

App Engine 基本架构比较简洁。如下图所示:

 

 

进一步简化一下,可以抽象为

 

 

即包括:web、Datastore和服务群

1、web

 web部分主要用于处理请求主要有如下模块:

(1)、前端,即可以认为负载均衡(load balancer),也可以认为它是代理(proxy),主要负责负载均衡和将具体的web请求转发给应用服务器。对于一些静态文件(比如:图片、CSS和JS脚本等)的请求,前端会将这种请求转给对应的类似于CDN(Content Delivery Network,内容分发网络)的静态文件服务器。

(2)、应用服务器。用于装载应用的代码,处理接收到的web请求,并根据请求的内容调用后面的Datastore和服务群。

(3)、 管理节点。在应用服务器间应用,并将调度之后的情况通知前端。

 2、DataStore

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

3、服务群

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

web请求处理流程

(1)用户发送一个HTTP请求。

(2)前端接受这个请求,并将这个请求转发给一个空闲的应用服务器。

(3)应用服务器会处理这个请求。

(4)检查用于处理这个请求的类是不是已经被初始化了。如果没有的话,需要初始化这个类。

(5)调用服务群中的用户认证服务来对用户进行认证,如果失败的话,需要终止整个请求的处理工作,并返回无法认证用户的信息。

(6)查看这个请求所需的数据是否已经缓存在Memcache中,如果没有,将对Datastore发出查询请求来得到数据。

(7)通过整合第(6)步得到的数据来生成相关HTML,并返回给用户。

(8)由于HTML里包含对一些静态文件的引用,比如图片和CSS等,所以当用户收到HTML之后,还会通过前端读取静态文件服务器里面储存的静态文件。

流程图如下:


 

 

posted on 2012-06-11 17:37  陈国利  阅读(2348)  评论(1编辑  收藏  举报