【发布时间】:2021-09-01 04:12:20
【问题描述】:
我正在学习 AWS Lambda,我担心同步的实时请求。 事实上 lambda 有一个“冷启动”,这对于处理 GET 请求来说并不好。
假设用户正在使用应用程序并执行 GET HTTP 请求以获取产品或产品列表,如果 lambda 处于睡眠状态,则需要 10 秒才能响应,我认为这是不可接受的响应时间。 将 AWS Lambda 用于经典(同步响应)API Rest 是好是坏?
【问题讨论】:
-
“响应时间为 10 秒” – 你从哪里得到那个的想法?唤醒大约需要 200 毫秒,而不是 10 秒。
-
@deceze 你是对的,也许不是 10 秒,但在某些文章中它说 1.5 秒,就像 medium.freecodecamp.org/… 一样。问题是,这类操作是好是坏?
-
“实时”、“慢”是主观术语。对于不同类型的应用程序,Lambda 的开销可以接受也可以不接受。所以我认为你的问题是无效的。最重要的是,互联网本身并不是“实时的”,网络延迟一般是不可预测的。
-
嗯,通常 lambda 执行模型对于无状态 HTTP 请求来说是完美的。您需要决定它是否适合您的用例。正如那篇文章所述,在某些配置中可能会有额外的开销产生延迟。是否使用这些特定配置由您决定。是否可以忍受几秒钟的冷启动由您决定。用户遇到冷启动的频率,只有您自己知道(访问者越多,他们就越少)。
-
Lambda 冷启动。启动可能需要几秒钟。如果您已将 lambda 配置为在 VPC 中,我最多可能需要 10 秒才能启动(创建网络接口需要一些时间)。一种解决方案是通过使用 cloudwatch 创建计划任务来保持 lambda 温暖,该任务会触发具有空有效负载的 lambda。无论 Lambda 需要几秒钟才能启动,它在任何情况下都不能用于实时。最好使用成熟的 Websocket 服务器或 SNS,甚至...... AWS IoT。
标签: amazon-web-services aws-lambda serverless