gpt4 book ai didi

node.js - AWS多SQS队列和workers优化设计

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:03 24 4
gpt4 key购买 nike

我有以下任务要使用 AWS 堆栈实现:

定期触发一个作业并将消息放入队列 (SQS)。工作人员收到此任务,并基于它需要创建其他任务(大约 1-10 K 任务)。所有这些任务也被放入另一个队列,并且有额外的工作人员来处理这些任务。
这些流程可以通过以下方式描述显示:

周期性任务 ->SQS->woker_1(创建更多任务) -> SQS -> workers_2

基于项目惯例和官僚作风,需要一些时间为 worker_1 创建两个单独的服务,监听周期性任务并创建细粒度任务,为 worker_2 只处理特定任务,制作 docker 镜像,CI 作业等......并部署它。所以,这是权衡:
1. 花费额外的时间并创建两个单独的服务。另一方面,这些服务可能非常简单。甚至怀疑有 2 个独立的项目。2. 将其作为一项服务,将消息放入同一个队列,并将监听同一个队列中的消息,并为 worker_1 和 worker_2 perorm 工作。

如有任何建议或想法,我们将不胜感激!

最佳答案

我认为对此没有“正确”的答案,您已经列出了两种选择的优缺点。我想到的一些其他事情:

  • SQS 队列并不能真正让您挑选出特定类型的消息,您几乎需要以先进先出的方式阅读所有内容。因此,如果您共享队列,您可能无法控制消息的优先级。
  • 要使两个服务交互,它们需要共享消息定义。共享相同的代码库将使开发和测试消息传递代码变得更加容易。当然也可以是共享库。
  • 在同一服务器/应用程序中部署这两种工作器类型会共享资源,这在低端可能更经济,但在大规模时可能会造成混淆。
  • 有可能将所有代码开发到同一个应用程序中,如果所有代码都在同一个服务器和队列上,或者不同的服务器从不同的队列读取,则将决定权留给部署时间。这对我来说似乎很理想。

关于node.js - AWS多SQS队列和workers优化设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35469677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com