Go 博客

Go 和 Google App Engine

David Symonds、Nigel Tao 和 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 存在,但在 Go 应用程序在 App Engine 上运行时,在给定的实例中只运行一个线程。也就是说,所有 goroutines 都在一个操作系统线程中运行,因此在给定的客户端请求中没有可用的 CPU 并行性。我们预计此限制将在某个时间点取消。

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

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

Go App Engine SDK 可供 Linux 和 Mac OS X(10.5 或更高版本)使用;我们希望 Windows 版本也很快就会推出。

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

下一篇文章:Google I/O 2011 上的 Go:视频
上一篇文章:Go 在 Heroku 上
博客索引