Go 博客
宣布 App Engine 全新 Go 1.11 运行时
App Engine 于 2011 年推出了 对 Go 的实验性支持。在随后的几年里,Go 社区显著壮大,并形成了基于云应用程序的习惯用法模式。今天,Google Cloud 宣布 为 App Engine 标准环境推出全新的 Go 1.11 运行时,它提供了 App Engine 的所有强大功能——例如按使用量付费、自动扩缩和托管基础设施——同时支持符合 Go 习惯用法的代码。
从 Go 1.11 开始,App Engine 上的 Go 对应用程序结构、支持的包、context.Context
值或 HTTP 客户端没有任何限制。您可以按照自己喜欢的方式编写 Go 应用程序,添加一个 app.yaml
文件,您的应用程序就可以部署到 App Engine 上了。指定依赖项 描述了新运行时如何支持 vendor 目录 和 模块(实验性)进行依赖项管理。
除了 Cloud Functions 对 Go 的支持(更多详情将在未来的博文中介绍)外,App Engine 提供了一种极具吸引力的方式,让您可以在 Google Cloud Platform (GCP) 上运行 Go 代码,而无需担心底层基础设施。
让我们来看一下如何为 App Engine 创建一个小型应用程序。在此示例中,我们假设使用基于 GOPATH
的工作流,尽管 Go 模块也提供 实验性支持。
首先,在您的 GOPATH
中创建应用程序
// This server can run on App Engine.
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
http.HandleFunc("/", hello)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
func hello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, 世界"))
}
代码包含了一个用于小型 HTTP 服务器的习惯用法设置,该服务器响应“Hello, 世界。”如果您之前有 App Engine 使用经验,您会注意到现在完全可以选择不调用 appengine.Main()
。此外,应用程序代码是完全可移植的——与部署应用程序的基础设施没有任何关联。
如果您需要使用外部依赖项,可以将这些依赖项添加到 vendor
目录或 go.mod
文件中,这两种方式新运行时都支持。
应用程序代码完成后,创建一个 app.yaml
文件来指定运行时
runtime: go111
最后,在您的机器上设置 Google Cloud Platform 账户
完成所有设置后,您可以使用一条命令进行部署
gcloud app deploy
我们认为 Go 开发者会发现新的 App Engine Go 1.11 运行时是一个令人兴奋的选择,丰富了运行 Go 应用程序的方式。App Engine 提供 免费套餐。请查阅 入门指南 或 迁移指南,立即将您的应用部署到新的运行时!
下一篇文章:参与 2018 年 Go 用户调查
上一篇文章:使用 Go Cloud 的 Wire 进行编译时依赖注入
博客索引