Go 部落格

Go 和 Google App Engine

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

Google 的 App Engine 提供了一種可靠、可伸縮、易於構建和部署 Web 應用程式的方式。目前有超過十萬個應用程式使用 App Engine 基礎架構託管在 appspot.com 和自定義域名上。該系統最初是為 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 的“dev app server”意味著您甚至不需要自己執行編譯器;一切都令人愉快地自動化完成。

您將在 SDK 中找到許多標準 App Engine API,這些 API 以良好的 Go 風格定製設計,包括 Datastore、Blobstore、URL Fetch、Mail、Users 等等。隨著環境的發展,將新增更多 API。執行時提供了完整的 Go 語言和幾乎所有的標準庫,但有一些在 App Engine 環境中沒有意義的東西除外。例如,沒有 unsafe 軟體包,並且 syscall 軟體包被精簡了。(該實現使用了golang.orgGo Playground 中設定的擴充套件版本。)

此外,雖然存在 goroutines 和 channels,但在 App Engine 上執行 Go 應用程式時,給定例項中只執行一個執行緒。也就是說,所有 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 團隊為實現此目標提供的所有幫助和熱情。

下一篇文章:《2011 年 Google I/O 大會上的 Go:影片》
上一篇文章:《Go 在 Heroku》
部落格索引