前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google 的 Serverless 产品对比:Cloud Run、Cloud Functions、App Engine

Google 的 Serverless 产品对比:Cloud Run、Cloud Functions、App Engine

作者头像
donghui
修改2021-02-09 10:35:21
3.2K0
修改2021-02-09 10:35:21
举报
/images/2021-02-08-gcp-serverless-comparation/gcp-serverless.png
/images/2021-02-08-gcp-serverless-comparation/gcp-serverless.png

来源:https://www.splunk.com/en_us/blog/devops/gcp-serverless-comparison.html 作者:Splunk 译者:donghui

本文来源: ServerlessLife 公众号

Serverless 平台的主要优点是,它们使您可以专注于编写代码,而不必关心管理基础结构,自动扩容或为所用资源支付更多费用。

这使得 Serverless 计算非常适合以下用例:

  • 无状态 HTTP 应用程序
  • Web 和移动后端
  • 实时的或事件驱动的数据处理

Cloud Run、Cloud Functions 和 App Engine 都是 Google Cloud 提供的 Serverless 平台,但是它们之间有细微差别,在某些情况下某个平台可能会比其他平台更受欢迎。

Google Cloud Run:Serverless 容器

Cloud Run 由 Knative 构建, 是 Google 最新的 Serverless 产品。其他 Serverless 平台使用事件驱动函数作为部署的主要单元,而 Cloud Run 使您可以将代码打包在无状态容器中,然后通过 HTTP 请求调用它。

在 Google 完全托管环境中部署 Cloud Run 容器可为开发人员提供 Serverless 的通常优势(无需管理基础架构,按使用付费,更容易自动缩放),还支持任意数量的编程语言、库或系统二进制文件。Cloud Run 还可以在 Google Kubernetes Engine(GKE)上部署容器,并能够为后一种场景的 Serverless 容器专门配置硬件需求。

有了这种灵活性,Cloud Run 的用户可以使用他们已经用来在 Google Cloud 上打包和运行容器的工具轻松地运行 Serverless 工作负载,或者将有状态和无状态工作负载一起部署。

Google Cloud Functions: Serverless 函数

尽管 Cloud Run 接受容器并通过 HTTP 请求来调用,但 Cloud Functions 仍然是 Google 的事件驱动型 Serverless 平台。与打包在 Docker 容器中不同,您需要将代码部署为函数。Google 支持编写 Cloud Functions,因此也可以通过 HTTP 请求调用它们,或将其设置为根据后台事件触发。

def hello_get(request):

    """HTTP Cloud Function.

    Args:

        request (flask.Request): The request object.

        <http://flask.pocoo.org/docs/1.0/api/#flask.Request>

    Returns:

        The response text, or any set of values that can be turned into a

        Response object using `make_response`

        <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>.

    """ 

return 'Hello World!'

Cloud Functions 对代码的部署方式施加了更多限制(显然易见,您需要将其打包为一个函数),并且仅支持一组特定的语言(您可以使用 JavaScript、Node.js、Python 3,或 Go 运行时),但可以使用您的云环境中的事件触发功能。

Google App Engine: Serverless 应用

App Engine 是 Google 针对 Web 和 API 后端的完全托管的 Serverless 应用程序平台。尽管 Serverless 函数使您可以轻松地运行轻量级和独立的函数,但使用 Cloud Functions 运行更复杂的应用程序可能会很困难。对于想要构建具有多种功能的 Serverless 应用程序或保留超出单个请求范围的某种程度的上下文的开发人员,Google App Engine 提供了一种引人注目的选择。

在 Google App Engine 中,您只需获取代码并将其部署到 Google 上,然后为您消耗的资源付费-这在 App Engine 上作为包含一个或多个服务的单个资源运行。对于每种服务,您都可以部署该服务的一个或多个版本,这些版本又可以在一个或多个实例中运行,具体取决于每个版本处理的流量。

/images/2021-02-08-gcp-serverless-comparation/app-engine.jpg
/images/2021-02-08-gcp-serverless-comparation/app-engine.jpg

如上所示,使用单个命令从您的应用程序目录在 Google App Engine 上部署 Hello World。

根据您的特定需求,您可以在两种类型的 App Engine 环境中选择一种来运行代码。如果您要运行需要快速扩容的应用程序,并且使用 App Engine 支持的特定语言版本编写,那么 Google 建议您使用标准环境。对于具有更稳定流量的应用程序,使用自定义运行时或不受支持的编程语言在 Docker 容器中运行,或者要访问在运行在 Compute Engine 上的 Google Platform 项目的其他部分,请使用 App Engine 灵活环境。

在 Cloud Run、Cloud Functions 和 App Engine 之间进行选择

通常,Serverless 平台最好用于构建无状态应用程序,并且无需管理基础架构。一些示例包括:

  • 快速制作功能原型
  • 快速自动缩放 Web 应用程序
  • 为了响应后台事件执行一个任务

在确定哪种 Serverless 平台最适合您时,请记住以下几点:

  • 如果您已经将代码打包在 Docker 容器中或正在 Google Cloud 中运行 Kubernetes 集群,请针对您的 Serverless 工作负载考虑使用 Cloud Run 或 Knative。
  • 对于运行响应实时事件的代码,或在不使用容器的情况下处理请求,请使用 Cloud Functions。
  • 如果您需要在一个地方放置多个函数并且只想部署整个应用程序,请使用 App Engine。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Google Cloud Run:Serverless 容器
  • Google Cloud Functions: Serverless 函数
  • Google App Engine: Serverless 应用
  • 在 Cloud Run、Cloud Functions 和 App Engine 之间进行选择
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档