Fargate vs Lambda,何时使用哪个?

jan*_*Dro 19 amazon-ecs aws-lambda serverless aws-fargate

我对整个无服务器环境都很陌生,而且我正试图在使用Fargate和Lambda时解决这个问题.

我知道Fargate是ECS的无服务器子集,Lambda也是无服务器的,但是由事件驱动.但我希望能够以简单的方式向其他熟悉容器的人解释这两种范例,而不是那些使用AWS和无服务器的人.

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

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

就容器而言,如果容器的设计是这样设计的话,可以安全地说:

docker run <some_input>
Run Code Online (Sandbox Code Playgroud)

然后这是Lambda的工作.

但是,如果容器设计为执行以下操作:

docker run --expose 80
Run Code Online (Sandbox Code Playgroud)

然后这是Fargate的工作.

这是一个很好的比喻吗?

Mar*_*k B 14

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

此外,我不确定为什么你说某些东西更适合Fargate,因为你"总是需要至少一个实例运行".Lambda + API Gateway非常适合API调用,API Gateway随时可以接收API调用,然后它将调用Lambda函数来处理它(如果响应尚未缓存).

  • [截至2018年10月,Lambda每次调用支持15分钟](https://aws.amazon.com/about-aws/whats-new/2018/10/aws-lambda-supports-functions-that-c​​an-run-达到15分钟/) (11认同)
  • 谢谢 Mark,我也觉得 Lambda 是为容器而生的,而实际上它不是。还有很多东西要学! (4认同)

小智 11

重要的是要注意,使用Lambda,您不需要构建,保护或维护容器.你只是担心代码.现在已经提到过,Lambda有5分钟的时间限制和3GB内存限制(CPU按比例增加).此外,如果偶尔使用它,可能需要预热(按计划调用)以获得额外的性能

Fargate管理您需要定义,维护和保护的docker容器.如果您需要更多地控制代码运行的环境中可用的内容,则可能使用容器(或服务器),但管理层再次使用该容器.您还可以选择内存/ CPU大小以及运行运行所需的时间长度.

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