监控和显示需要 20-30 分钟执行的异步作业(如 EMR 和 AWS 胶水)结果的最佳方法是什么
What is the best way to monitor and show the results of Async jobs (like EMR & AWS glue) which take 20-30 minutes to execute
我的程序需要很长时间才能执行。现在我想在完成后向 UI 显示此作业的状态。我找到了解决这个问题的两个方法:
- 在 30 分钟的作业结束时调用 api 执行以更新作业完成的状态。这很好,因为它可以提供有关工作中发生的事情的额外信息,但它的缺点是如果出现完全错误,调用 api 的代码有可能永远不会发生,因此状态永远不会更新。
- 此任务一旦开始就对其进行持续监控。有一个 while 循环并继续检查任务是否完成。这是一个很好的方法,因为我们几乎总能获得任务的正确状态,但通常我们只能在这里看到高级别 yes/no 而不是能够看到可能可用的细粒度执行细节.
有一件事我还没有实现,但我认为我是一个很好的解决方案,这两个解决方案串联在一起,所以如果有一个成功的案例,我会得到执行的细节。如果完全失败,我也会从其他监控工具获得该输出。为处理时间较长的作业构建此类监控支持时遵循的一般原则是什么?
使用 AWS Step Functions 作为无服务器状态机。它支持直接与一堆服务交互 https://docs.aws.amazon.com/en_us/step-functions/latest/dg/connect-supported-services.html
我的程序需要很长时间才能执行。现在我想在完成后向 UI 显示此作业的状态。我找到了解决这个问题的两个方法:
- 在 30 分钟的作业结束时调用 api 执行以更新作业完成的状态。这很好,因为它可以提供有关工作中发生的事情的额外信息,但它的缺点是如果出现完全错误,调用 api 的代码有可能永远不会发生,因此状态永远不会更新。
- 此任务一旦开始就对其进行持续监控。有一个 while 循环并继续检查任务是否完成。这是一个很好的方法,因为我们几乎总能获得任务的正确状态,但通常我们只能在这里看到高级别 yes/no 而不是能够看到可能可用的细粒度执行细节.
有一件事我还没有实现,但我认为我是一个很好的解决方案,这两个解决方案串联在一起,所以如果有一个成功的案例,我会得到执行的细节。如果完全失败,我也会从其他监控工具获得该输出。为处理时间较长的作业构建此类监控支持时遵循的一般原则是什么?
使用 AWS Step Functions 作为无服务器状态机。它支持直接与一堆服务交互 https://docs.aws.amazon.com/en_us/step-functions/latest/dg/connect-supported-services.html