GAE SDK 1.5.0版发布,支持Go语言

标签:Go, Google App Engine

随着Google I/O 2011的来临,GAE SDK 1.5.0版也随之发布了

最让我感到意外的更新是带来了Google App Engine for Go。Go这门语言已经发布了1年半了,我只在发布时粗略浏览了一番语法,所以目前对这门语言也没什么发言权。记得当时Go对我来说最大的障碍就是不能运行在Windows平台上,不过现在我有了台Mac,也就可以重新尝试一番了。
浏览了一遍文档后,我发现GAE用的Go运行环境是当前最新版Go release r57.1,包含了Go编译器和标准库,不过无法用标准库来打开socket和写入文件。它同时也支持goroutines,不过目前仍然是单线程,未来可能会支持多线程(面子比Java大好多啊…)
此外,Go SDK依赖于Python SDK,需要用后者来搭建测试服务器和上传代码,并且也获得了自动重新编译源码的好处。而在分配动态请求时,并不能在app.yaml中设置,而是直接交给Go运行时来处理(也就意味着不方便使用login: admin了)。不过让我感到意外的是,Go内置的http包居然可以直接用来处理这些请求(遗憾的是http.ServeMux不支持正则表达式匹配,必须自己来实现),还有个template包来处理模板,所以甚至无需第三方WEB框架就能进行开发了。
目前Go SDK只支持部分服务,像Channel、Images和XMPP等不太重要的服务还未支持。而且Datastore API只支持High Replication datastore(Google这么做肯定是故意的,谁说它不作恶?),所以务必在创建Go应用时采用这种类型的datastore;并且,目前Datastore API还不支持事务,一个实体的slice属性(相当于Python的列表)也最多只能包含100个元素。
粗略看来,用Go来实现,代码量要比Python略多,但配置很简单;如果性能不错的话,也许有望取代Java。
顺便还发现有人在翻译Go语言文档,对它有兴趣的可以去看看。

除此以外,最大的更新就是Backends(后台)了。
实际上这个特性在几个月前就进行过小范围测试。我本来有望能获得测试资格的,最后说是要签署一份保密协议,询问我的国籍;而我是中国人,直接就没机会了…
回归正题,后台其实就是instance(实例),只不过它没有30秒或10分钟的时间限制,可以使用多达1GB的内存和4.8GHz的CPU,所以性能比一般的instance要好很多,而且它甚至可以处理普通的请求(没有30秒限制哦,亲!)
它的收费方式和Amazon EC2差不多(不过性能低很多,所以收费也要少些)。奇怪的是文档中没有提到免费配额,我只在后台的Quota Details页面找到$0.72这个数值,也就是每天可以免费使用一个最低配置的后台实例达9小时。

另一个重要的新特性是任务队列支持pull模式了。
它与push模式在功能上好像没什么太大的差别,但是你得自己管理队列,也因此拥有了更多管理权限(例如删除特定的任务)。
此外它还可以配合Task Queue REST API,以供外部访问。

其他的更新基本在GAE SDK 1.5.0 Prerelease版发布时就已经提到了,也就不再复述了。
但还有2点比较遗憾的需要指出:
  1. 对新应用而言,每天能免费发送的email接受者数目从2000下降到100。
  2. Datastore查询操作没有异步API,只有那些直接知道key的datastore操作才能享受异步API的优势。

最后插一段与SDK不相关的:GAE团队在《The Year Ahead for Google App Engine!》一文中指出:
  • Google App Engine将于今年晚些时候从Preview版毕业,这表明Google将花更多精力在稳定性上。
  • Google App Engine for Business中的很多特性将加入Google App Engine,例如SLA(Service-level Agreement,计划是保证99.95%可用,每个月9美元)、SSL for custom domains和SQL等。
此外,我还注意到文档导航中已经没有Google App Engine for Business的链接了,而在这个页面则明确地说明了Google App Engine for Business已经没有了,几乎所有特性都会融入Google App Engine。不知道付费的客服是否也这样没有了…
另外,HR datastore的存储价格下降,而在正式版后M/S datastore的存储价格将上升到和HR datastore一样。
我还在《Google App Engine - Pricing and Features》页面中看到很多价格变动,比如instance是按使用时间而非CPU时间来收费,API调用是按次数而非CPU时间来收费,收费应用最少要9美元/月,免费应用可以使用5GB blobstore。可以肯定的是,这次价格变动对小应用来说是个灾难,而且对性能的优化和降低费用之间变得没多少相关性了…

9条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?