0

我正在使用 resque 来后台处理两种类型的作业:

(1) 3rd-party API requests 
(2) DB query and insert

虽然这两个作业可以并行处理,但每个作业类型本身只能按串行顺序处理。例如,数据库操作需要以串行顺序发生,但可以与第 3 方 API 请求并行执行。

我正在考虑以下任一方法来执行此操作:

(1) Having two queues with one queue handling only API requests and the other queue 
handling only db queries. Each queue will have its own worker.

(2) One single queue but two workers. One worker for each job.

我想知道这两种方法的区别,以及这两种方法中哪种方法更好。

4

1 回答 1

1

这种选择架构的选择并不简单,您必须牢记许多事情。

有两个队列,一个队列只处理 API 请求,另一个队列只处理数据库查询。每个队列都有自己的工作人员。

Ans:当两个队列都同样繁忙时,您可以使用这种架构,即如果您有一个队列有更多的工作而另一个是空的,那么您的一个工作人员将是偶像,并且会有工作在其他队列中等待。
您应该始终考虑充分利用您的员工。

一个队列,但有两个工人。每项工作一名工人。

Ans:这种方法也是我们在项目中使用的方法。
将所有作业排入一个队列并让多个工作人员在其上运行。
无论存在哪种类型的工作,您的员工都会一直很忙。
适当的工人利用是可能的。


最后我建议你可以使用第二种方法。

于 2017-03-18T10:46:58.687 回答