gpt4 book ai didi

amazon-web-services - AWS Lambda 异步代码执行

转载 作者:行者123 更新时间:2023-12-02 04:28:01 26 4
gpt4 key购买 nike

我已经搜索了任何答案,但我读到的所有内容都是关于并发 lambda 执行和 async Node 中的关键字语法,但是我找不到有关 lambda 实例执行的信息。

这是因为我在一次聚会上,有人提到 lambda 实例(即由 AWS 托管的包含我的代码的临时容器)一次只能执行一个请求。这意味着如果我有 5 个请求进来(为了简单起见,让我们说一个已经热的实例)它们都将在一个单独的实例中运行,即在 5 个单独的容器中。

对我来说,香蕉的事情是这破坏了异步编程多年的发展。从 2009 年开始,node.js 开始普及 i/o 编程,因为对于 Mill CRUD 应用程序的无聊运行,您的大部分请求时间都花在等待外部数据库调用或其他事情上。编写异步代码允许单个执行线程看似同时执行多个请求。虽然 node 没有发明它,但我认为可以说它普及了它,并且在过去十年中一直是后端技术发展的巨大插入力。许多语言都添加了一些特性来使异步编程更容易(回调/任务/ promise / future 或任何你想调用它们的东西),并且 web 服务器已经从每个请求的单个线程转移到基于事件循环(节点、vertx、kestrel 等)去年的模型。

无论如何,历史课已经足够了,我的观点是,如果我听到的是真的,那么使用 lambdas 进行开发会将大部分内容抛在脑后。如果 lambda 运行时永远不会通过我正在运行的实例发送多个请求,那么以异步方式编程只会浪费资源。比如说我在说 C#,而我的 lambda 是用于检索小部件。然后这个代码var response = await db.GetWidgets()实际上效率很低,因为它将当前线程上下文推送到堆栈上,因此它可以在等待该调用返回时允许其他代码执行。由于在原始请求完成之前不会调用其他请求,因此以同步方式编程更有意义,除了可以进行并行调用的地方。

这样对吗?

如果是这样,我真的很震惊,它没有被更多地讨论。我在过去几年中看到了异步编程的范式转变,这完全改变了这一点。

TL;DR:lambda 真的只允许每个实例一次执行一个请求吗?如果是这样,这将结束服务器开发向异步代码的重大转变。

最佳答案

是的,您是对的 - 即使您的 Lambda 异步执行某些工作,Lambda 也会启动多个容器来处理并发请求(我已经通过自己的经验证实了这一点,并且许多其他人也观察到了相同的行为 - 请参阅 this answer 到类似的问题)。对于每个受支持的运行时(C#、Node.js 等)都是如此。

这意味着 Lambda 函数中的异步代码 不允许一个 Lambda 容器同时处理多个请求 ,正如你所说。话虽如此,您仍然可以获得异步代码的所有其他好处,并且您仍然可以通过例如异步进行许多 Web 服务或数据库调用来潜在地提高 Lambda 的性能 - 所以 Lambda 的这个属性不会使异步编程变得无用平台上。

关于amazon-web-services - AWS Lambda 异步代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51960136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com