AWS多个SQS队列和工作人员优化设计

时间:2016-02-17 23:14:00

标签: node.js amazon-web-services message-queue amazon-sqs

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

定期触发一个作业并将消息放入队列(SQS)。工作人员接受此任务,并在此基础上需要创建其他任务(大约1-10 K任务)。所有这些任务也被放到另一个队列中,还有其他工作人员来处理这些任务。
可以用以下方式显示这些流程:

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

基于项目惯例和官僚主义,需要一些时间为worker_1创建两个单独的服务,这些服务可以监听周期性任务并创建细粒度的任务,并且只需处理特定任务的工人_2,制作码头图像,CI工作等等......并部署它。 所以,这是交易:
1.花费额外时间并创建两个单独的服务。另一方面,这些服务可能非常简单。即使有两个单独的项目也存在疑问。 2.将此作为一个服务,将消息放入同一队列,并且还将侦听同一队列中的消息并为以下方法工作:worker_1和worker_2。

感谢任何建议或想法!

1 个答案:

答案 0 :(得分:2)

我不认为可以有一个“正确”的答案,你已经有两个选项的优缺点列表。我想到的一些额外的事情:

  • SQS队列实际上不允许您选择特定类型的消息,您几乎需要先读取所有内容。因此,如果您共享队列,则可能无法控制优先级消息。
  • 要使两个服务进行交互,他们需要一个共享的消息定义。共享相同的代码库可以更容易地开发和测试消息传递代码。当然,它也可以是一个共享库。
  • 在同一服务器/应用程序中部署两种工作类型将共享资源,这在低端可能更经济,或者可能在大规模时混淆。
  • 可以将所有代码开发到同一个应用程序中,如果它们全部位于同一服务器和队列中,或者将单独的服务器从单独的队列中读取,则将决策留给部署时间。这对我来说似乎很理想。