【发布时间】:2019-01-07 16:29:50
【问题描述】:
我有一个应用程序,我希望将计算负载卸载到 AWS,并且正在寻求一些架构指导。用户将启动一个主任务,其中包含约 100 个计算量大的子任务,可以并行运行。
我认为一个合适的解决方案是让桌面应用程序访问 API 网关端点以创建一个新任务,然后该任务会调用许多 Lambda,每个子任务一个。我希望每个子任务都有单独的进度报告,以及用户取消整个任务的能力。用户还可以使用 API 来查询创建的任务/点击另一个端点来取消它。
调用和管理这些 Lambda 子任务、访问每个 Lambda 的中间进度信息、最终结果并允许用户请求取消的合适架构/服务是什么?
【问题讨论】:
-
我强烈建议不要将 Lambda 函数用于长时间运行的进程。成本分配会伤害你很多。 Lambda 函数应该是快速函数,可以对发生的其他事情做出反应,等等。如果您需要使用长时间运行的 AWS lambda,那么您的设计肯定有问题。我建议使用 EC2/ECS 和 SQS 来实现这一目标。
标签: amazon-web-services architecture aws-lambda