收到了GAE(Google Application Engine)的邀请函,在其主页上注册了一个帐号,试用了一下。

GAE是google基于其Bigtable和GFS开发的网站开发环境,目前只支持Python语言。GAE的目的主要有两个:

1. 提供一个易于上手的网站开发环境。开发人员不需要自己搭建网络服务器,DNS和数据库等软件,只要使用google提供的API即可用Python开发CGI脚本。

2. 解决网站的可扩展性问题(scalability)。就是当有成千上万甚至数百万每天的用户请求时GAE能根据连接数自动将任务负载均衡到各个计算节点,同时对数据库的存储和操作也可以自动并行化。用户根本无需使用特殊的API即可自动实现可扩展性。由于GAE的实现是基于和Google搜索引擎类似的硬件和软件,网络和节点的维护由google完成,用户无需操心。

这两个想法显然是很前卫的。GAE也是所谓的云计算(cloud computing),它和Amazon EC2的区别在于EC2的用户对节点有绝对的控制权(root),但EC2并不是一个网站开发环境。

我比较喜欢GAE的这些特性:

1. 支持Python。没有哪种语言比Python更容易上手也更容易维护,另外Python的扩展库也非常丰富。

2. GAE SDK中的uploader用起来很简单,而且自带了一个webserver可以让开发人员在本地建立虚拟的GAE环境进行调试。

3. API中有访问者帐号认证的模块,但仅仅限于google account。

4. 数据库的查询命令和SQL很类似。

目前GAE还处于preview release阶段,功能上还有很多不足。下面是我找到的一些缺陷:

1. GAE中的Python版本删除了一些库和库函数。比如不支持写文件和socket编程,不支持C/C++写的extension,很多os库中的函数都不能用了。从安全角度这可以理解。

2. 不支持多线程。

3. API还比较少,文档比较简陋。

4. GAE的后台管理 (console window)很简陋,特别是管理数据库的页面基本上和没有没区别(比如无法通过表单选择某个table中的所有记录然后删除)。

5. 数据库操作的执行效率目前还很差。从一个数据表单中取出5000条记录居然需要3.3秒; 插入100条数据需要3.4秒; 一次删除4000多条数据会超时产生出错网页。

我用GAE写了一个benchmark网站,在这里:

http://benchmarkgae.appspot.com

其中对数据库,网络速度和排序算法进行了测试。还有对Scalability的测试,其中静态存储的可扩展性:

#_of_concurrency speedup
1 1
10 10.0
100 87.2

排序CGI程序的可扩展性:

#_of_concurrency speedup
1 1
10 9.64
100 63.9

前者比后者要好些,但并行程度都较低。

benchmark的源代码可以从上面的网站下载到。

总之,GAE还处于测评阶段,功能欠缺较多,并不适合用来编写较复杂的网站。

阅读(1189 次)

Creative Commons 授权
此文, 除非有特别申明, 的授权协议是 Creative Commons Attribution-Noncommercial 2.5 China Mainland 网站授权.