批量工作负载与微服务调用

问题描述 投票:0回答:1

这是一个非常普遍的问题。我对这一切都很陌生,我很难决定是否应该将某件事视为批处理作业或对微服务的简单请求。

假设用户可以将 30 秒的视频上传到 S3,出于某种原因,我们希望处理每个视频,以便提取视频的各个图像并将其再次存储在 S3 中。此外,我们并不真正关心延迟,最小化计算成本(即云账单)更重要。

您会使用 AWS Batch 之类的东西吗?或者您是否会部署一组微服务,通过响应 API 服务调用来进行处理,可能在 S3 和微服务之间使用消息队列?

两种选择似乎都可以完成工作,但是解决此类问题的正确或正确方法是什么?

我已阅读https://docs.aws.amazon.com/batch/latest/userguide/best-practices.html。对于短作业,它表示您需要合并作业,以便它们在理想情况下每个运行 3 到 5 分钟。然而,它并没有真正讨论什么应该被视为批处理作业。

我觉得这个问题应该可以在谷歌上搜索,但我可能只是缺少正确的术语。

amazon-web-services design-patterns microservices aws-batch
1个回答
0
投票

这是一个常见的架构决策,使用 AWS Batch 和基于微服务的方法(如 Lambda)之间的选择取决于多种因素,例如:

  1. AWS 批量:

    • 批处理:如果您的主要目标是以批处理方式处理大量视频,而不太关心实时处理或低延迟,AWS Batch 可能是一个合适的选择。它专为批量工作负载而设计,对于此类任务来说具有成本效益。
    • 可扩展性:AWS Batch 可以有效地处理缩放,以同时处理大量视频。
    • 简单性:这是一项托管服务,可以简化批处理作业的作业调度、执行和资源管理。
  2. 微服务:

    • 实时处理:如果您需要对每个视频上传进行立即处理和实时响应,则具有API端点的微服务可能更合适。例如,如果您想向用户提供即时反馈或需要根据视频内容采取不同的操作,这非常有用。
    • 自定义逻辑:微服务提供了在视频处理的同时实现自定义逻辑和业务规则的灵活性。您还可以处理不同类型的视频处理请求。
    • 可扩展性:您可以单独扩展微服务,如果您对不同类型的视频有不同的处理需求,这可能会很有帮助。

至于您最关心的问题:

  • 成本:如果最大限度地降低计算成本是更高的优先级,则 AWS Batch 对于批处理可能更具成本效益。微服务可能会产生更多的运营成本。

  • 运营开销:微服务比 AWS Batch 需要更多的管理和运营工作,AWS Batch 是一项完全托管的服务。

  • 延迟:如果延迟不是问题,AWS Batch 可以并行处理视频,但微服务可以对处理即时请求提供更多控制。

最终,没有一刀切的答案,这取决于您的具体要求。您甚至可以考虑采用混合方法,根据每个视频上传的特征,使用 AWS Batch 批量处理视频,并使用微服务进行实时或交互式处理。所以这对谷歌来说是一件困难的事情很大程度上是因为它非常依赖于你的具体要求。

© www.soinside.com 2019 - 2024. All rights reserved.