Lambda函数是否实现了单例并发模型

0

【以下的问题经过翻译处理】 您好,我们正在研究如何将我们传统的模型后端应用迁移到AWS Lambda服务的方法。在搜索相关内容和阅读Lambda官方文档后,我注意到Lambda使用一种线程安全的单实例单请求的方式来处理并发模型,我的理解正确吗?

问题是:对于像node.js这样利用事件池来最大化IO密集型工作处理能力的编程模型,我们是否可以指定单实例但多请求并发的模型来缓解全局并发限制和冷启动问题?而且我认为这种方式也可以通过降低IO等待时间来节省成本。

尽管我看到有一些使用预留/预置实例的方法,但我认为支持更细粒度的并发方法可能会更好

profile picture
专家
已提问 3 个月前3 查看次数
1 回答
0

【以下的回答经过翻译处理】 首先,是的,你是正确的,你应该将lambda函数视为“单个请求=单个线程安全无状态的lambda函数”。这种思维范式迫使我们工程师将计算与数据(状态)分离开来,独立地对它们进行扩展,避免共享状态、副作用,并最终实现高级别的并行性,避免并行编程中难以调试的陷阱。

关于你问题的后半部分:AWS Lambda的真正美妙之处在于它允许我们摆脱对低级概念(如CPU利用率和IO等待时间)的考虑,只专注于"业务逻辑"和你想要通过代码实现的具体目标。(当然,AWS Lambda在内部进行了相当广泛的底层优化,以避免资源的浪费)

从技术上讲,你可以在单个Lambda调用中运行自己的事件循环,并在每个Lambda调用中处理多个请求。然而,我会将其视为一种反模式,并且这可能意味着你可能根本不需要使用Lambda。

我建议你尝试一下,不要过多考虑底层资源的优化。另外,如果我没有记错的话,默认的Lambda预留并发数是1000,所以应该足够用于处理高流量的实验。

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则