📌  相关文章
📜  Google Cloud Platform –了解功能即服务(FaaS)

📅  最后修改于: 2021-04-17 03:28:54             🧑  作者: Mango

无服务器不仅仅是一个流行词。并且在本文中,您将了解Google Cloud Platform如何使无服务器为其用户工作。如果回头看,Google Cloud的早期大部分时间都集中在所谓的无服务器产品上,因为他们已经实现并提供了具有以下基本原理的产品:您将代码提供给Google,其余的将由Google完成。没有要管理的服务器,也没有要设置,设置或升级的群集。此外,基础架构会自动扩展以满足负载需求,并且只为您消耗的资源付费。当开发人员构建Web应用程序,移动API或后端服务时,这使用户能够专注于应用程序的业务逻辑。 GCP提供了许多不同的产品来帮助您准确完成所需的工作。

函数即服务是无服务器计算的一种非常流行的方法。开发人员编写一段在事件或传入的HTTP请求上触发的代码(一个函数)。此函数代码可以在生成另一个事件或直接将响应发送回之前,与数据库和其他服务进行对话。

Google Cloud Functions支持多种编程语言,例如Python,Node.js,Go, Java,这些语言可以与大量库和框架一起使用。只需部署您的函数及其依赖项列表即可直接在云中解决该依赖项列表,并配置将触发其执行的事件。

这可以是HTTP事件,也可以是文件上传到Cloud Storage存储桶,数据库中的数据更改,消息发布到发布/订阅队列或主题或其他一些事件。可以为功能分配部署时间环境变量。它们可以从单个项目部署到任何区域或多个区域,并且它们支持多达数GB的内存。还可以使用特定的安全性约束来配置功能,例如具有按函数标识的最小特权访问。您甚至可以使用Compute元数据服务器在运行时获取身份令牌。云功能按调用次数,计算时间和传出网络(或出口)计费,每月免费进行前200万次调用。

云功能可能是访问众多强大GCP服务之一的最简便方法,从机器学习API到开发人员已用来实现从粘合代码到成熟的基于微服务的应用程序的所有内容的其他存储和处理解决方案。现在,作为开发人员,您可能希望在使用的语言和框架方面拥有更大的自由度。最重要的是,您可能希望移交精心制作的Docker容器映像而不是源代码。如果您想要使用无状态HTTP容器映像,则Cloud Run提供了真正的无服务器体验。只需构建映像,将其上传到Cloud Registry,然后使用该容器创建Cloud Run服务。以下命令可用于执行此操作:

$ gcloud beta run deploy --image gcr.io/project/image

或者,您可以使用云控制台,如下所示:

在此阶段,您的应用程序已在云中部署并运行。而且您可能会忘记配置或管理服务器。 Cloud Run为您做到了。它会根据您的传入流量自动,快速地放大和缩小,甚至缩小到零。您只需为应用使用的资源(最短为100毫秒)支付费用。由于Cloud Run是使用Knative构建的,因此您也可以将其与自己的Kubernetes Engine集群一起使用。借助GKE上的Cloud Run,您可以将应用程序构建并部署到自己的Kubernetes集群,并获得相同的便捷体验和收益。无论是否在GKE上运行,Cloud Run都支持在GKE集群中运行时在单个GCP项目中的多个区域或特定名称空间中部署多个服务。每个服务都公开一个唯一的终结点。每个服务部署都会创建一个修订,并且请求会自动自动路由到最新的正常服务修订。最后,收到请求的每个修订版都会自动缩放为处理所有这些请求所需的容器实例数。

请注意,给定的容器实例可以同时接收多个请求。使用并发设置,您可以设置可以并行发送到给定容器实例的最大请求数。

Cloud Run本质上为您提供了基于容器的现代开发的灵活性,它具有完全无服务器的环境的所有优势,可以自动扩展以适应应用程序的需求。

如果您要构建具有多个服务的整个Web应用程序,并且仍然希望在保留所有无服务器利益的同时部署源代码,则应查看Google App Engine。您可以在App Engine上找到Google Cloud Platform的无服务器路由。 App Engine是一个托管平台,可让您选择最熟悉的语言。只需运行以下命令,App Engine就会负责上传您的代码并在Google的基础架构上运行它。

$  gcloud app deploy

适用于Java,Node, PHP,Go和Python的第二代App Engine运行时提供了真正的惯用体验,能够使用任何语言API和任何具有读/写文件系统访问权限并提供隔离的框架由GVisor提供,这是一种功能强大的开源沙盒技术。您可以使用多种服务来构建App Engine应用程序,每种服务都可以使用不同的语言,并且可以独立扩展。每种服务都可以提供多个版本,所有这些版本都同时处于活动状态,并且您可以通过流量拆分在这些版本之间设置分阶段推出或A / B测试,这是微不足道的。

App Engine通过提供完整的应用程序性能管理工具,使开箱即用的工具向前迈了一步,例如生产应用程序的实时调试,跟踪整个系统中的请求,甚至对应用程序进行CPU和堆分析。

Google App Engine是成熟的无服务器平台。可以结合使用Cloud Functions,App Engine和Cloud Run编写现代和更高级的应用程序。 Cloud Pub / Sub和Cloud Tasks都是流行且优雅的解决方案,用于集成这些不同的部分,甚至可以简单地组合多种功能。

Cloud Pub / Sub是一个简单,可靠且可扩展的事件系统,提供了多对多异步消息传递,可以很好地将发送方和接收方分离。它支持至少一次交付,并且默认情况下是全局的,无需管理任何基础结构。仅仅每秒发布和消耗多达数亿条消息。

另一方面, Cloud Tasks提供了一个调度系统来管理大量分布式任务的执行。它是一对一异步消息传递的理想选择,并带有速率限制控件。

Cloud Scheduler是一项完全托管的cron作业服务,可让您安排通过HTTPS端点,Cloud Pub / Sub主题或App Engine应用程序调用的任务。

此处简要讨论的所有这些解决方案均受到全面管理和监视。日志记录和错误报告是内置的。