我有一个main.go
文件,看起来有点像
func main() {
connection := db.Connect()
defer connection.Close()
// db.ResetDb() // uncomment if you want to drop the db on go run main.go
http.HandleFunc("/do-a", endpoints.DoA)
http.HandleFunc("/do-b", endpoints.DoB)
// ...
http.HandleFunc("/do-z", endpoints.DoZ)
http.ListenAndServe(":8081", nil)
}
一开始使用db.Connect
建立数据库连接,如果需要,我的代码库中的任何函数都可以访问数据库。然后有几个使用http.HandleFunc
创建的端点。最后,服务器在本地机器的8081
端口上侦听。
所有端点处理程序函数都是纯函数。不存在需要服务器持续运行的内部状态,这就是为什么我认为云功能可能会工作的原因。对于云函数,我看到的唯一问题是需要在每次端点调用之前建立数据库连接。我认为这个问题可以通过GCF解决,因为它可以缓存对象。
顺便说一句,我是否应该像这样部署我的后端?只在一台全天候运行的典型服务器上运行它会更好吗?
您将无法在云函数中使用ListenAndServe。云功能的工作方式是这样的。它要求您为套接字由您处理的传入连接定义一个函数入口点。该套接字端点有自己的专用URL,您无法更改,并且它有一个与您赋予函数的名称相关的路径。您可能需要查看文档以查看工作HTTP函数的完整示例代码。查看如何将请求和响应对象交给您。
由于这种工作方式,您不能运行任何类型的"服务器"——您只能处理由系统管理的传入请求。通常,您为每个端点提供其自己部署的函数。如果您真的想运行HTTP服务器,那么Cloud Functions将不是一个好的选择。请考虑应用程序引擎、计算引擎或云运行。