LINUX.ORG.RU

Как разгребать очередь?

 


0

1

Положим есть у нас несколько серверов с некими очередями в которых накапливаются записи о событиях. Для простоты положим что это таблицы в базах данных в которые добавляются записи. Мы можем узнавать о факте поступления новой записи, при желании можем узнать сколько всего не обработанных записей на каждом сервере.

Далее вопрос: как бы вы натравливали воркеры на эти записи? 1) создали на каждом сервере пул воркеров которые бы периодически либо по сигналу лезли бы за записями? 2) создали бы пул воркеров на сторонних машинах которые узнавали бы о новых записях через какую-то очередь типа rabbitmq? 3) как бы вы решали сколько воркеров нужно натравить на новые записи чтобы с одной стороны их не было мало с другой чтобы сотни воркеров не бросились за одной записью?

★★

Возьми redis, кидай задачи (или их id) в список, в воркерах делай brpop. Redis сам будет будить нужное количество воркеров и раскидывать им задачи.

vzzo ★★★
()

Для простоты положим что это таблицы в базах данных в которые добавляются записи. Мы можем узнавать о факте поступления новой записи, при желании можем узнать сколько всего не обработанных записей на каждом сервере.

Это было не для простоты. Для простоты это предложения писать не надо было.

Для организации таких очередей существует вагон решений(брокеров), ищите distributed queue.

FeyFre ★★★★
()

как бы вы натравливали воркеры на эти записи?

Организовывал бы очередь не в базе, а сразу в чем-то подходящем, типа redis, rabbitmq.

anonymous
()
Ответ на: комментарий от anonymous

Организовывал бы очередь не в базе, а сразу в чем-то подходящем, типа redis, rabbitmq.

если это чатики наверное, а если это деньги тогда сначала база, а далее то что может и грохнуться в любой момент типа rabbitmq

quester ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.