微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

工作流系统与多线程解决 lambda 超时约束

如何解决工作流系统与多线程解决 lambda 超时约束

我有一个 lambda,它必须调用很多作业(所有作业都是调用一个 lambda),一旦所有作业成功完成,我必须向另一个系统发送通知,这就是我同步调用它们的原因并按顺序导致 lambda 超时。

我有两个解决方

  1. 使用 Step Functions 或任何其他工作流系统,一旦所有作业到达其最终状态,工作流就会知道并通知其他系统

  2. 我以多线程方式调用所有作业,因为所有作业都将在网络 I/O 上被阻塞,因此处理速度大大加快,我能够在约束范围内处理所有请求

我知道这是工作流的一个经典问题,问题是为什么或为什么我不应该使用多线程或步进函数

多线程会导致未知问题吗?

谢谢

解决方法

我建议使用 Step Functions。使用多线程与其说是解决方案,不如说是一种变通方法,因为您只是在解决当前必须在以后重新出现的问题。

请考虑以下情况:Lambda 的 vCPU 数量是有限的。您可以获得的最大数量为 6(在撰写本文时)。

这意味着您不能“仅仅”并行运行 10.000 个作业。只是没有足够的内核/CPU 来并行运行所有作业。这意味着您仍然或多或少地按顺序运行它们,只是比以前更快。

因此,您可能会处理如此多的作业,以至于即使使用多线程,您也会超时运行。因此,您只是在将来将此问题移得更远,但您并没有解决它。

因此,我认为使用 Step Functions 是更好的解决方案。显然,Step Functions 也有限制,但更容易处理/管理。与多线程相比,您实际上可以并行运行更多作业。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。