Go 博客

Go 和 Google App Engine

David Symonds, Nigel Tao, and Andrew Gerrand
2011年5月10日

Google 的 App Engine 提供了一种可靠、可扩展、简单的方式来构建和部署 Web 应用程序。目前,有超过十万个应用程序托管在 appspot.com 和自定义域上,并使用 App Engine 基础架构。最初,该系统是为 Python 应用程序编写的,然后在 2009 年增加了 Java 运行时。如今,在 Google I/O 大会上,我们非常激动地宣布 Go 将成为下一个。目前,它被标记为 App Engine 的一项实验性功能,因为还处于早期阶段,但 App Engine 和 Go 团队都对这一里程碑感到非常兴奋。

早期阶段,意味着它仍在逐步推出。截至今天,Go 版的 App Engine SDK 已经 提供下载,我们很快将启用 Go 应用程序在 App Engine 托管基础架构上的部署。今天,通过 SDK,您将能够编写 Web 应用程序,了解 API(以及该语言,如果您还不熟悉的话),并在本地运行您的 Web 应用程序。一旦完全部署启用,您就可以轻松地将您的应用程序推送到 Google 的云端。

这项消息中一个很酷但不太明显的方面是,它提供了一种非常简单的方式来体验 Go。您甚至不需要预先安装 Go,因为 SDK 是完全独立的。只需下载 SDK,解压缩,然后开始编码。此外,SDK 的“开发应用服务器”意味着您甚至不需要自己运行编译器;一切都令人欣喜地自动化了。

您将在 SDK 中找到许多标准的 App Engine API,它们都采用了优秀的 Go 风格精心设计,包括 Datastore、Blobstore、URL Fetch、Mail、Users 等等。随着环境的发展,将添加更多 API。运行时提供了完整的 Go 语言和几乎所有的标准库,除了少数在 App Engine 环境中不适用的东西。例如,没有 unsafe 包,并且 syscall 包被精简了。(该实现使用了 Go Playgroundgolang.org 的设置的扩展版本。)

此外,尽管 goroutines 和 channels 都存在,但在 App Engine 上运行的 Go 应用程序在一个给定的实例中只运行一个线程。也就是说,所有 goroutines 都在单个操作系统线程中运行,因此对于给定的客户端请求,没有 CPU 并行性可用。我们预计这一限制将在某个时候被解除。

尽管有这些小的限制,但这是真正的语言:代码以源代码形式部署,并在云中使用 64 位 x86 编译器 (6g) 进行编译,这使其成为第一个在 App Engine 上运行的真正的编译型语言。App Engine 上的 Go 使得部署高效、CPU 密集型的 Web 应用程序成为可能。

如果您想了解更多信息,请阅读 文档(从“入门”开始)。库和 SDK 是开源的,托管在 http://code.google.com/p/appengine-go/。我们创建了一个新的 google-appengine-go 邮件列表;如果您有关于 App Engine 的特定问题,请随时在那里联系我们。关于新 Go SDK 的问题报告,请访问 App Engine 问题跟踪器

Go App Engine SDK 可用于 Linux 和 Mac OS X (10.5 或更高版本);我们希望很快也能提供 Windows 版本。

我们要感谢 Google App Engine 团队在实现这一目标过程中给予的帮助和热情。

下一篇文章:Go at Google I/O 2011: videos
上一篇文章:Go at Heroku
博客索引