Go 部落格

Go 及 Google App Engine

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

Google 的 App Engine 提供一種可靠、可擴充且簡便的方式,可用於建置和部署網路應用程式。超過十萬個應用程式使用 App Engine 基礎架構寄存在 appspot.com 和自訂網域中。App Engine 系統最初是為 Python 應用程式撰寫,已於 2009 年加入 Java 執行環境。今天,我們很興奮地在 Google I/O 宣布 Go 即將成爲下列項目的下一項。目前將其標記為 App Engine 實驗性功能,因為它仍處於早期階段,但 App Engine 和 Go 團隊對於這項里程碑都感到非常興奮。

我們所謂的早期階段,是指它仍處於推出的階段。截至今天,可 下載 Go 的 App Engine SDK,而且我們很快就會啟用將 Go 應用程式部署到 App Engine 寄存基礎架構中。今天,透過 SDK,您將能撰寫網路應用程式、瞭解 API(如果對您來說是新語言,也瞭解這項語言),並在本地端執行網路應用程式。一旦全面啟用部署,您就能輕鬆將應用程式推送到 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 套件經過調整。(此實作使用 Go Playground on golang.org 的擴充程式碼設定。)

另外, meskipun存在 goroutines 和 channels,當 Go 應用程式在 App Engine 上執行時,特定執行個體中只會執行一條執行緒。也就是說,所有 goroutines 都在單一作業系統執行緒中執行,所以對於特定用戶端的請求來說沒有 CPU 並行處理。我們預計這個限制會在將來某個時候解除。

儘管有這些限制,這是一種真實的語言:程式碼以原始碼形式部署,並使用 64 位元 x86 編譯器 (6g) 在雲端編譯,成為在 App Engine 上執行的第一種真正的已編譯語言。App Engine 上的 Go 讓部署高效益、CPU 密集的網路應用程式成為可能。

如果你想要了解更多,請參閱 文件(從「開始」開始閱讀)。函式庫和 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 團隊在促成此事上所提供的協助和熱情表示感謝。

下一篇文章:Google I/O 2011 中的 Go:影片
上一篇文章:Go on Heroku
部落格文章分類