来源:https://www.splunk.com/en_us/blog/devops/gcp-serverless-comparison.html 作者:Splunk 译者:donghui
本文来源: ServerlessLife 公众号
Serverless 平台的主要优点是,它们使您可以专注于编写代码,而不必关心管理基础结构,自动扩容或为所用资源支付更多费用。
这使得 Serverless 计算非常适合以下用例:
Cloud Run、Cloud Functions 和 App Engine 都是 Google Cloud 提供的 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 工作负载,或者将有状态和无状态工作负载一起部署。
尽管 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 运行时),但可以使用您的云环境中的事件触发功能。
App Engine 是 Google 针对 Web 和 API 后端的完全托管的 Serverless 应用程序平台。尽管 Serverless 函数使您可以轻松地运行轻量级和独立的函数,但使用 Cloud Functions 运行更复杂的应用程序可能会很困难。对于想要构建具有多种功能的 Serverless 应用程序或保留超出单个请求范围的某种程度的上下文的开发人员,Google App Engine 提供了一种引人注目的选择。
在 Google App Engine 中,您只需获取代码并将其部署到 Google 上,然后为您消耗的资源付费-这在 App Engine 上作为包含一个或多个服务的单个资源运行。对于每种服务,您都可以部署该服务的一个或多个版本,这些版本又可以在一个或多个实例中运行,具体取决于每个版本处理的流量。
如上所示,使用单个命令从您的应用程序目录在 Google App Engine 上部署 Hello World。
根据您的特定需求,您可以在两种类型的 App Engine 环境中选择一种来运行代码。如果您要运行需要快速扩容的应用程序,并且使用 App Engine 支持的特定语言版本编写,那么 Google 建议您使用标准环境。对于具有更稳定流量的应用程序,使用自定义运行时或不受支持的编程语言在 Docker 容器中运行,或者要访问在运行在 Compute Engine 上的 Google Platform 项目的其他部分,请使用 App Engine 灵活环境。
通常,Serverless 平台最好用于构建无状态应用程序,并且无需管理基础架构。一些示例包括:
在确定哪种 Serverless 平台最适合您时,请记住以下几点:
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。