2016-11-10 2 views
0

Я использую Resque в фоновом режиме два типа заданий:Несколько очередей против нескольких рабочих мест в спасательном

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

Хотя эти два задания могут быть обработаны параллельно, каждый тип работы сам по себе может быть обработана только в последовательном порядке , Например, операции БД должны выполняться в последовательном порядке, но могут выполняться параллельно с запросами сторонних 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. 

Я хотел бы знать разницу в этих двух подходах и которые среди два будет лучший подходом принять.

ответ

1

Этот выбор выбора архитектуры не является прямым, вы должны помнить много вещей.

Наличие двух очередей с одной очередью, обрабатывающей только запросы API, а другая очередь Обработка только запросов db. Каждая очередь будет иметь своего рабочего.

Ans: Вы можете иметь эту архитектуру, когда у вас есть обе очереди одинаково заняты, т.е. если у вас есть одна очередь с большим количеством рабочих мест и других пусто, то ваш один работник будет кумиром и будут рабочие места, ожидающие в других очередь.
Вы всегда должны думать о полном использовании ваших работников.

Одна очередь, но два рабочих. Один работник для каждой работы.

Ans: Этот подход используется нами в нашем проекте.
Наличие всех заданий, стоящих в очереди в одной очереди, и работающих на нем нескольких сотрудников.
Ваши работники всегда будут заняты независимо от того, какой тип работы присутствует.
правильный рабочий использование возможно.


Наконец я хотел бы предложить, вы можете использовать 2-й подход.

Смежные вопросы