无服务器容器和带有自定义运行时的App Engine flexible之间有什么区别?

时间:2019-02-15 12:25:50

标签: containers serverless app-engine-flexible

我碰到了这篇文章:Bringing the best of serverless to you 我了解到即将推出的名为 Cloud Functions上的无服务器容器的产品,该产品目前在Alpha中。

如文章所述:

  

今天,我们还推出了无服务器容器,可让您   在完全托管的环境中运行基于容器的工作负载,以及   仍然只为您使用的东西付费。

GCP solutions page

  

Cloud Functions上的无服务器容器使您可以在以下容器上运行自己的容器化工作负载   GCP具有无服务器的所有优势。而且您仍然只需支付   使用的东西如果您有兴趣了解更多有关   无服务器的容器,请注册Alpha。

所以我的问题是这种无服务器的容器与具有自定义运行时的应用引擎灵活的容器有何不同?它还使用docker文件?

这是我的怀疑,因为提到的名称是 Cloud Functions上的无服务器容器,所以区别可能包括云功能的作用。如果是这样,无服务器容器中的云功能起什么作用?

请澄清。

2 个答案:

答案 0 :(得分:1)

什么是云功能?

来自official documentation

  

Google Cloud Functions是用于构建和连接云服务的无服务器执行环境。使用云功能,您可以编写简单的,单一用途的功能,这些功能附加到从云基础架构和服务发出的事件。触发正在监视的事件时,将触发您的功能。您的代码在完全托管的环境中执行。无需配置任何基础架构,也不必担心管理任何服务器。

简单来说,Cloud Function是由某个事件(HTTP请求,PubSub消息,Cloud Storage文件插入...)触发的,运行该函数的代码,返回结果,然后该函数死亡。

当前有four runtime environments可用:

  • Node.js 6
  • Node.js 8(测试版)
  • Python(测试版)
  • 开始(测试版)

使用 Cloud Functions上的无服务器容器产品,您可以为自己的自定义运行时环境提供Docker映像。但是Cloud Function的生命周期是相同的:

It is triggered > Runs > Outputs Result > Dies

App Engine Flex应用程序

App Engine flexible environment中运行的应用程序已部署到虚拟机,即Google Cloud Compute Engine实例。您可以选择要使用的计算机类型和资源(CPU,RAM,磁盘空间)。 App Engine灵活的环境会在平衡负载的同时自动放大和缩小您的应用程序。

以及使用Cloud Functions的情况,Google提供了运行时,但是如果您想使用Python,Java,Node.js,Go,Ruby,PHP,.NET的替代实现,则可以使用{{ 3}}。甚至甚至可以使用C ++,Dart等其他语言,只需为应用程序提供Docker映像。

Cloud Functions和App Engine Flex应用之间有什么区别?

它们之间的主要区别是生命周期和用例。

如上所述,云功能具有定义的生命周期,并且在任务完成时死亡。他们应该被用来做一件事情并将其做好。

另一方面,在GAE Flex环境上运行的应用程序将始终至少运行1个实例。此应用程序的典型情况是为多个端点提供服务,用户可以在其中执行REST API调用。但是,由于您可以完全控制提供的Docker Image,因此它们提供了更大的灵活性。您可以在那里“随便”做什么。

答案 1 :(得分:1)

什么是无服务器容器?

official blog post(搜索无服务器容器)所述,它基本上是一个运行在Dockerfile定义的自定义环境中的Cloud Function。

在官方博客文章中对此进行了声明:

  

对于无服务器容器,我们提供了相同的基础   支持云功能的基础架构,但您将能够   只需提供一个Docker映像作为输入即可。

因此,除了将代码部署在CF上,您还可以将Docker映像与运行时和要执行的代码一起部署。

具有自定义运行时的Cloud Functions与App Engine Flexible之间有什么区别?

有5个基本区别:

  1. 网络:在GAE Flexible上,您可以自定义实例运行的网络。这样,您就可以添加防火墙规则来限制出入流量,阻止特定端口或指定要运行的SSL

  2. 超时:云功能最多可以运行9 minutes,另一方面,Flexible可以无限期运行。

  3. 只读环境:Cloud Functions环境是只读的,而Flexible可以被写入(这仅用于在Flexible实例重启或终止时存储自发信息,所有存储的数据都会丢失)

  4. 冷启动:与Flexible相比,Cloud Functions部署迅速且启动迅速。这是因为Flexible在VM内运行,因此要花费额外的时间才能启动VM。

  5. 它们的工作方式:云功能受事件驱动(例如:将照片上传到云存储中执行功能),而柔性则由请求驱动。(例如:处理请求来自浏览器)

如您所见,能够部署少量代码而无需照顾上面列出的所有功能是一个功能。

此外,考虑到无服务器容器仍在Alpha中,因此,将来许多事情可能会发生变化,并且仍然没有太多文档来深入解释其行为。