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
部落格索引