Google云功能简介

2020-11-04 18:17:33

在我们研究如何使用云函数之前,我们应该了解一些有关它的事情。

代码需要服务器才能运行,因此无服务器并不意味着没有服务器,它意味着我们不需要自己管理这些服务器。

在通常的基于服务器的体系结构中,我们可能会创建一个服务并将其部署到一台机器上。此服务将一直在计算机中运行,等待请求。这有一个缺点,即使没有请求,机器也需要启动,并且会产生成本。

另一方面,如果我们使用云函数,我们会编写一个服务并将其注册到Google。然后,Google将监听该服务关心的端点,并仅在有请求时启动它。如果它检测到有一段时间没有请求,它将再次停止该服务。

Google Compute Engine实例按时间计费,云函数按执行时间计费。如果云函数没有执行,则不会计费。这听起来很有吸引力,但也有回调,即:

在大多数情况下,运行一个Compute引擎实例整整一个月比让一个云函数连续执行一个月更便宜。这意味着,如果我们需要一项服务来始终执行工作,最好是为它配备一台整机。

云功能需要预热。如果云功能已有一段时间未使用,谷歌将停止运行该功能的服务器。下次我们收到新请求时,需要启动一个新服务器,这需要一些时间。这将使第一个请求花费很长时间(时间变化很大,但通常不到4秒)。

为了使使用我们的云函数变得容易,我们需要一种从我们的开发机器运行该函数的方法。

包函数import(";net/http&34;";fmt";)函数DoYouLikeTacos(w http.。ResponseWriter,r*http。请求){fmt。Fprint(w,";我当然喜欢玉米饼!\n";)}。

为了能够从我们的开发机器上测试我们的功能,我们需要创建一台服务器。让我们为它创建一个文件:

程序包主导入(";log";";Context";";github.com/GoogleCloudPlatform/functions-framework-go/funcframework";";test.com/Functions";)func Main(){ctx:=Context。后台()//如果err:=funcframework,则当收到对/do-you-like-tacos的请求时,将执行我们的函数。RegisterHTTPFunctionContext(CTX,&34;/Do-You-Like-Tacos";,Functions.。DoYouLikeTacos);err!=nil{log.。Fatalf(";funcframework.RegisterHTTPFunctionContext:%v\n";,err)}//如果err:=funcframework,服务器将在端口8080port:=";8080";上运行。Start(Port);err!=nil{log.。Fatalf(";funcFrawork.Start:%v\n";,err)}}。

这个例子很简单,但是我们可以让我们的函数做任何我们想做的事情。

我们还可以通过添加更多文件和更新main.go服务器来添加更多功能。让我们创建另一个函数来显示它。

如果err:=funcframework。RegisterHTTPFunctionContext(CTX,";/Thirsted";,Functions。口渴);错误!=零{记录。Fatalf(";funcframework.RegisterHTTPFunctionContext:%v\n";,Err)}。

一旦我们的功能准备就绪,我们希望通过将它们部署到Google Cloud来向公众提供这些功能。

这会吐出一堆信息。最重要的部分是URL:

让我们仔细看看我们用来部署函数的命令:

DoYouLikeTacos是我们正在部署的函数的名称。该工具将在包中搜索具有该名称的函数。

--运行时go113告诉Google使用Golang 11.3。我们可以在帮助中看到可用的运行时(gcloud Functions Deploy--help)。

--ALLOW-UNENTIFIATED表示该功能无需身份验证即可供所有人使用。请注意,功能代码本身可以独立于此标志进行某种身份验证。

这是对Google Cloud函数的快速介绍。我们学习了如何创建函数、在本地测试以及如何将其部署到Google Cloud。

可以使用云函数构建完整的应用程序,因此我将在另一篇文章中详细介绍。

[架构-GCP-编程指南]