【问题标题】:Fargate vs Lambda, when to use which?Fargate vs Lambda,什么时候用哪个?
【发布时间】:2019-02-15 22:01:46
【问题描述】:

我对整个无服务器领域还是很陌生,我正在努力思考何时使用 Fargate 与 Lambda。

我知道 Fargate 是 ECS 的无服务器子集,而 Lambda 也是无服务器的,但由事件驱动。但我希望能够向其他熟悉容器但不太了解 AWS 和无服务器的人解释这两种范式。

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

但是,如果我们要移植到一台接收 API 调用的服务器上,我们可能希望使用 Fargate,因为我们总是需要至少一个映像实例启动并运行。

就容器而言,并且用非常笼统的术语来说,如果容器的设计目的是:

docker run <some_input>

那么这是 Lambda 的工作。

但是如果容器被设计成这样:

docker run --expose 80

那么这是 Fargate 的工作。

这是一个很好的类比吗?

【问题讨论】:

    标签: aws-lambda amazon-ecs serverless aws-fargate


    【解决方案1】:

    请务必注意,使用 Lambda,您无需构建、保护或维护容器。你只关心代码。现在如前所述,Lambda 有一个最大运行时间限制和 3GB 内存限制(CPU 按比例增加)。此外,如果偶尔使用它,可能需要预热(按计划调用)以获得额外性能。

    Fargate 管理您需要定义、维护和保护的 docker 容器。如果您需要对运行代码的环境中可用的内容进行更多控制,您可能会使用容器(或服务器),但这又与管理有关。您还有更多关于内存/CPU 大小和运行时间长度的选项。

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

    【讨论】:

    • 值得一说,即使有 lambda 限制,您也可以安排一个 lambda 调用其他几个 lambda,比如说下载和调整一些图像的大小,这样您就可以轻松解决限制并获得相当快的流程。
    • @Mojimi 调用一个 lambda,它调用一个 lambda,它调用一个 lambda,哦,是的,我希望看到它在一个有多个开发人员在工作的大型项目中工作。不是。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢马克,我也觉得 Lambda 不是为容器而生的。还有很多东西要学!
    • @janDro 他们确实在后台的码头工人中运行,但我们无权访问他们,他们是“语言码头工人”。这就是 Fargate 的用武之地。
    【解决方案3】:

    这是正确的类比,但它并不是能够解释这两种范式的详尽列表。

    总的来说,Lambda 更适合无服务器应用程序。它的本质是功能即服务(FaaS)。它只是完成简单的任务,仅此而已。不要期望太多。

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

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

    1. 便携性
    2. 环境控制
    3. 触发器类型
    4. 响应时间
    5. 响应大小
    6. 处理时间
    7. 内存使用情况

    这些是主要因素。但该列表并未涵盖这两种无服务器技术之间需要考虑的所有因素和限制。

    想了解更多我推荐这篇文章https://greenm.io/aws-lambda-or-aws-fargate/

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 2013-02-20
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 2022-06-18
        • 2016-09-09
        相关资源
        最近更新 更多