【发布时间】:2023-04-01 12:59:01
【问题描述】:
据我了解,AWS Lambda 在用户无法访问的 EC2 实例上运行上传的代码。它创建运行上传代码所需的运行时环境,管理权限并平衡负载。这就是我认为 AWS Lambda 在幕后所做的事情。
引用Wikipedia:
与在专用服务器、虚拟机或容器上持续运行的代码相比,不常用的无服务器代码可能会遭受更大的响应延迟。这是因为,与自动缩放不同,云提供商通常会在不使用无服务器代码时完全“关闭”无服务器代码。
这是有道理的,但 AWS Lambda 确实 claim 使用自动缩放:
AWS Lambda 通过运行代码以响应每个触发器来自动扩展您的应用程序。您的代码并行运行并单独处理每个触发器,根据工作负载的大小精确扩展。
我的问题是 -
- AWS Lambda 如何分配内存和 CPU 来运行我的代码?
- 我的所有 Lambda 请求是否都由单个 EC2 实例提供服务(如果有的话)?
- 如果是,那么当请求数量增加时,他们如何扩展?
- 如果否,那么如果他们必须为每次收到 lambda 请求时运行的代码创建运行时环境,他们如何减少延迟?
【问题讨论】:
-
Lambda 应用程序部署在容器中。您选择容器 RAM 大小并按容器运行时间计费。自动缩放发生在容器级别 - 更多容器实例开始处理增加的负载,或者如果它们的空闲时间超过可配置的跨度则终止
-
如果您考虑the amount of vCPU cores you get,它会变得更加有趣
标签: amazon-web-services amazon-ec2 aws-lambda