大家好,我是猫头虎博主!今天要跟大家分享的是Google Cloud最近宣布的App Engine标准环境中新的Go 1.11运行时。这次更新不仅带来了对Go社区长期以来需求的支持,而且还包括了对云应用开发模式的重大改进。让我们一起探索这一刷新人心的技术进展!
自2011年App Engine首次对Go提供实验性支持以来,Go社区经历了显著增长,并在云应用程序开发中形成了一套成熟的模式。今天,我要介绍的是Go 1.11运行时在App Engine标准环境中的应用,这一全新更新旨在提供完整的App Engine体验,同时支持Go的惯用模式。
自Go 1.11起,App Engine上的Go应用不再限制应用结构、支持的包、context.Context
值或HTTP客户端。只需按照自己的喜好编写Go应用程序,添加一个app.yaml
文件,您的应用就可以轻松部署到App Engine上了。
Go 1.11在App Engine中支持更灵活的应用结构和包的使用。您可以使用vendoring和modules(实验性)来管理依赖,详见Specifying Dependencies。
让我们来看一个在App Engine上创建小应用的例子。这里假设您使用的是GOPATH
-based的工作流,尽管Go modules也得到了实验性支持。
首先,在您的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
完成应用代码后,创建一个app.yaml
文件来指定运行时:
runtime: go111
最后,设置好Google Cloud Platform账户:
完成所有设置后,可以使用一个命令进行部署:
gcloud app deploy
Go开发者会发现,对App Engine的这次Go 1.11运行时更新是对可用选项的一个激动人心的补充。这里还有一个免费层供大家试用。不妨查看入门指南或迁移指南,今天就部署一个应用到新运行时吧!
关键特性 | 描述 |
---|---|
运行时支持 | Go 1.11在App Engine标准环境中的支持 |
应用结构与依赖管理 | 支持更灵活的应用结构和包的使用 |
创建应用 | 简化了创建和部署Go应用到App Engine的过程 |
外部依赖处理 | 支持vendor目录和go.mod文件 |
部署 | 通过Cloud SDK使用gcloud app deploy命令进行部署 |
本文被猫头虎的Go生态洞察专栏收录,希望大家喜欢这次对Go 1.11运行时在App Engine中的深入探讨