Aws lambda Fargate vs Lambda,何时使用哪种?

Aws lambda Fargate vs Lambda,何时使用哪种?,aws-lambda,amazon-ecs,serverless,aws-fargate,Aws Lambda,Amazon Ecs,Serverless,Aws Fargate,我对整个无服务器环境还很陌生,我正试图弄清楚何时使用Fargate vs Lambda 我知道Fargate是ECS的一个无服务器子集,Lambda也是无服务器的,但受事件驱动。但我希望能够用简单的术语向其他熟悉容器但不太熟悉AWS和serverless的人解释这两种范式 目前,我们有两个物理服务器负责接收文本文件,解析它们,并用结果填充几个db表。根据我的理解,我认为这是一个更适合Lambda的用例,因为解析文本文件的过程是由时间表触发的,运行时间不长,并且在不使用时会下降 然而,如果我们要在

我对整个无服务器环境还很陌生,我正试图弄清楚何时使用Fargate vs Lambda

我知道Fargate是ECS的一个无服务器子集,Lambda也是无服务器的,但受事件驱动。但我希望能够用简单的术语向其他熟悉容器但不太熟悉AWS和serverless的人解释这两种范式

目前,我们有两个物理服务器负责接收文本文件,解析它们,并用结果填充几个db表。根据我的理解,我认为这是一个更适合Lambda的用例,因为解析文本文件的过程是由时间表触发的,运行时间不长,并且在不使用时会下降

然而,如果我们要在接收API调用的服务器上进行移植,我们可能会希望使用Fargate,因为我们总是需要至少一个映像实例启动和运行

就集装箱而言,如果集装箱设计用于:

docker run <some_input>
那么这就是法尔盖特的工作


这是一个很好的类比吗

这是一个很好的类比的开始。然而,Lambda在可用CPU和RAM方面也有限制,每次调用的最大运行时间为15分钟。因此,任何需要更多资源或需要运行15分钟以上的内容都更适合Fargate


另外,我也不知道为什么您会说Fargate更适合某个实例,因为您“总是需要至少运行一个实例”。Lambda+API网关非常适合API调用。API网关始终准备好接收API调用,然后它将调用Lambda函数来处理它(如果响应尚未缓存)。

注意,使用Lambda不需要构建、保护或维护容器,这一点很重要。你只需要担心代码。如前所述,Lambda有一个最大运行时间限制和3GB内存限制(CPU按比例增加)。此外,如果偶尔使用,可能需要对其进行预热(在时间表上称为预热),以提高性能

Fargate管理docker容器,您需要定义、维护和保护这些容器。如果您需要更多地控制代码运行环境中的可用内容,您可以使用容器(或服务器),但这同样需要管理。在内存/CPU大小和运行时间长度方面,您还有更多选项


即使对于您提到的API服务器,您也可以将API网关放在前面并调用Lambda。

正如Mark已经提到的,您可以使用Lambda+API网关将Lambda函数作为API公开。
但是lambda在函数执行方面有很大的局限性。支持的编程语言、内存消耗和执行时间都有限制(最近从之前的5分钟增加到15分钟)。这就是AWS Fargate可以提供容器世界和无服务器(FaaS)世界的好处的地方。在这里,您只需要担心容器(其CPU、内存需求、IAM策略…),而通过选择Fargate启动类型,将其余的留给Amazon ECS。ECS将选择正确的实例类型、管理您的集群、自动扩展、最佳利用率。

这是一个正确的类比,但不能详尽地解释这两种范例

通常,Lambda更适合于无服务器应用程序。其本质是一种功能即服务(FaaS)。它只做简单的任务,仅此而已。不要期望太多

应将其视为无服务器模块的第一个选项。但它有更多的限制和限制。模块架构从功能需求和非功能需求、围绕的基础设施和许多其他因素进行阐述

要做出最低限度的决定,您必须查看限制列表,例如:

  • 便携性
  • 环境控制
  • 触发类型
  • 响应时间
  • 响应大小
  • 处理时间
  • 内存使用
  • 这些是主要因素。但该列表没有涵盖所有这些无服务器技术之间考虑的因素和限制。


    为了了解更多关于我推荐这篇文章的信息

    谢谢马克,我还觉得Lambda是为集装箱而设计的,而实际上它不是。还有很多东西要学@janDro他们在后台运行dockers,但我们无法访问他们,他们是“语言dockers”。这就是Fargate的用武之地。值得一提的是,即使有lambda的限制,你也可以安排一个lambda调用其他几个lambda,比如下载并调整一些图像的大小,这样你就可以轻松地绕过这些限制,并有一个相当快的流程。@Mojimi调用lambda的lambda调用lambda的lambda调用lambda的lambda调用lambda的lambda,哦,是的,我希望看到这在一个有多个开发人员参与的大型项目中发挥作用。不
    docker run --expose 80