12.5.2 Google云平台

Google云平台(Google App Engine,GAE)是一种PaaS服务,使得外部开发者可以通过Google期望的方式使用它的基础设施服务,目前支持Python和Java两种语言。GAE虽然在产品上相比Amazon云平台还有较大的差距,但在技术上是成功的,尤其适用于企业构建自己的企业私有云。GAE的整体架构如图12-5所示。

12.5.2 Google云平台 - 图1

图 12-5 Google App Engine整体架构

GAE云平台主要包含如下几个部分:

●前端服务器。前端的功能包括负载均衡以及路由。前端服务器将静态内容请求转发到静态文件服务器,将动态内容请求转发到应用服务器。

●应用服务器。应用服务器装载应用的代码并处理接收到的动态内容请求。

●应用管理节点(App Master)。调度应用服务器,将应用服务器的变化通知前端,从而前端可以将访问流量切换到正确的应用服务器。

●存储区。包括DataStore、MemCache以及BlobStore三个部分。应用的持久化数据主要存储在DataStore中,MemCache用于缓存,BlobStore是DataStore的一种补充,用于存储大对象。

●服务区。除了必备的应用服务器以及存储区之外,GAE还包含很多服务,比如图像处理服务(Images)、邮件服务、抓取服务(URL fetch)、任务队列(Task Queue)以及用户服务(Users)等。

另外,作为PaaS服务,GAE还提供了如下两种工具:

●本地开发环境。GAE中大量采用私有API,因此专门提供了本地开发和调试的 Sandbox环境以及SDK工具。

●管理工具。GAE提供Web管理工具用于管理应用并监控应用的运行状态,比如资源消耗、应用日志等。

GAE的核心组件为应用服务器以及存储区,其中,应用服务器用于托管GAE平台用户的应用程序,存储区提供云存储服务。下面分别介绍这两个部分。

1.应用服务器

GAE对外不提供虚拟机服务,因此,对于不同的开发语言,需要提供不同的应用服务器实现,目前支持Python和Java两种语言。每一台应用服务器可能运行多个GAE平台用户的应用,为了防止应用程序之间互相干扰,应用程序将在受限制的“沙盒”环境中运行。“沙盒”环境中的GAE应用程序无法执行以下操作:

●写入到本地文件系统。应用程序必须使用数据存储区来存储持久化数据。

●打开套接字或者直接访问其他主机。应用程序必须使用网址提取服务(URL Fetch)分别从端口80和443上的其他主机发出HTTP和HTTPS请求。

●生成子进程或者线程。应用程序的网络请求必须在单个线程中处理,并且必须在几秒内完成,GAE会自动终止响应时间很长的进程以免应用服务器过载。

●进行其他类型的系统调用。

2.存储区

Datastore是App Engine存储区的核心,底层为6.2节中介绍的Google Metastore系统。与关系数据库最大的不同点在于,Datastore支持自动增加或者减少存储节点,提供线性扩展能力。App Engine直接将开源的Memcache用作缓存服务,缓存Datastore中的热点数据。Datastore不适合存储大对象(Blob对象),因此,App Engine设计了专门的Blobstore用于支持大对象存储。

除了GAE平台,Google还单独提供了两种云存储服务,Google Cloud Storage以及Google Cloud SQL。其中,Google Cloud Storage与Amazon S3类似,用于存储图片、视频等大对象数据,Google Cloud SQL与Amazon RDS类似,用于提供分布式关系数据库服务。