快速开发引擎中间件 Google App Engine

Google App Engine目标是让每个人都成为程序应用开发者,就像每个人可以写博客一样,要象写博客那样方便发布他们的应用。

Google App Engine挑战传统LAMP架构(Linux, Apache, MySQL/PostgreSQL, Python/Perl/PHP/Ruby),
LAMP虽然开发快,但是维护管理难,Scalable伸缩性更是没有考虑,缺点表现为:
1. Configuration, tuning
2. Backup and recovery, disk space management
3. Hardware failures, system crashes
4. Software updates, security patches
5. Log rotation, cron jobs, and much more
6. Redesign needed once your database exceeds one box

GAP能够自动帮助你的应用扩展伸缩性,你不必为每个资源进行配置:
小的应用,每个主机分布多个应用。
大型应用:每个应用可以跨多个主机。
缓存机制是必须提供的。
细节方面:一个CPU能够处理每秒大量请求,应用能够真正的扩展到CPU,每个CPU一个进程处理一个或多个应用,如下:

Google App Engine对业务模型也有规定:每个实体有一个类型 一个主键和属性Entities have a Kind, a Key, and Properties(banq按:你可以在基于Jdon框架的JiveJdon中找到)。

Google App Engin还提供下列功能:
Large file uploads and downloads大文件上传下载
Datastore import and export for large volumes
Pay-as-you-go billing (for resource usage over free quota)支付管理
More languages (no I’m not telling…) 更多语言
Uptime monitoring site 运行管理。

谷歌应用引擎Google App Engine还是一个功能强大的云计算平台,旨在帮助开发人员更轻松地创建和管理可扩展的Web应用程序。随着最近增加的Java ™技术的支持,开发者现在可以部署基于标准的Java技术为基础的Web应用软件的谷歌的基础设施。刚刚开始的JavaOne大会有对其演讲介绍。

http://code.google.com/appengine/docs/whatisgoogleappengine.html

Google App Engin for java
http://code.google.com/appengine/docs/java/overview.html
[该贴被banq于2009-06-03 11:21修改过]
[该贴被admin于2009-06-03 11:26修改过]

顶一下,支持支持,看看,不过又要学新东西了

我们使用GAE做过开发。开发效率提高很多,而且不用管理主机、网络、存储、IO等。

但,有点非常恼火。我们目前是免费用户,有些方法执行时间稍微长一点,就被kill了。 这点非常郁闷

这东西就玩玩还行,我用它做博客,其他的谁敢向上放..毕竟,Google不是雷锋,他也是一个商业公司.

如何在google App引擎创建一个Java应用并运行他们:how to create and deploy new Java project on GAE

作为一个云计算平台,GAE提供了几个比较强的服务:
最明显的是非关系数据库,使用的是key-value存储:BIGTABLE,还提供了memcached缓存,使用以下代码就可以获得一个缓存:


import static java.util.Collections.emptyMap;
import javax.cache.*;

CacheFactory cacheFactory = CacheManager.getInstance().getCacheFactory();

Cache cache = cacheFactory.createCache(emptyMap());

GAE还提供以下服务,注意这里服务不是Web服务那种业务服务,而是功能组件服务:
URLFetch – invoking external URLs
实际就是相当于使用httpClient,访问Http资源,http://code.google.com/appengine/docs/java/urlfetch/

Mail – sending mail from your application
http://code.google.com/appengine/docs/java/mail/

Task Queues – for invoking background processes
供后台发送,类似开启新线程,好处是可自动伸缩,扩展到其他机器执行。http://code.google.com/appengine/docs/java/config/queue.html

Images – for image manipulation
http://code.google.com/appengine/docs/java/images/

Cron Jobs – scheduled tasks on defined time
定时任务。http://code.google.com/appengine/docs/java/config/cron.html

User Accounts – using Google accounts for authentication
节省使用者自己开发用户权限系统,通过下列代码就能够获得登录用户的数据:
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
http://code.google.com/appengine/docs/java/users/

顶,这是一个值得关注的话题。
所有计算放入云端,这是美国的战略计划

哈哈,不只是美国战略计划,是一个技术发展趋势,上面GAE提供的服务功能,你可能会在Spring或JavaEE的API找到,GAE与JavaEE区别就是,节省你调试部署的麻烦了,也节省你考虑伸缩性的问题了;GAE和DSL之类Scala erlang之类区别是,GAE从功能组件粒度帮助你实现并行计算和并发策略,而你使用scala或erlang或Ruby,你至少需要两个技能:对这些语言平台熟悉,然后熟悉业务,最重要的是需要知道如何使用语言的哪些特性解决业务的哪些特定问题。

比如某个业务计算很耗CPU,一开始你并不知道,所以,你可能没有用一些并发策略去处理它,结果它成了性能瓶颈,现在就看是函数式动态语言能自动解决这个问题,还是GAE之类云计算平台,哈哈。拭目以待啊

支持学习中