Когда использовать - Задержка задания против RabbitMQ - PullRequest
0 голосов
/ 28 декабря 2018

Может ли кто-нибудь дать мне ясность о преимуществах использования RabbitMQ (очередь сообщений) вместо отложенного задания (фоновая обработка)?

В основном я хочу знать, когда использовать фоновую обработку и очередь сообщений?

Мое веб-приложение имеет 3 компонента: один главный сервер, который будет обрабатывать все запросы пользователей, и 2 сервера приложений, на которых должны выполняться все фоновые задания (такие как es reindex, обновление записей es, отправка электронных писем, crons).

Я видел статьи, в которых говорится, что База данных как очередь (отложенное задание) очень плохая, так как потребители будут опрашивать базу данных на предмет новых заданий и обновлять статусы заданий, что приведет к блокировке таблиц.Тогда как Rabbit MQ или другие очереди сообщений хранятся, чтобы избежать этой проблемы.

Существуют и другие альтернативы для отложенной работы, например, sidekiq, который будет работать поверх redis вместо mysql.Лучше использовать sidekiq вместо rabbitmq?

И есть ли преимущества использования sidekiq по сравнению с отложенной работой?

Ответы [ 3 ]

0 голосов
/ 16 июня 2019

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

Cadence предлагает много преимуществ по сравнению с использованием очередей для обработки задач.

  • Построены экспоненциальные повторные попытки с неограниченным интервалом истечения
  • Обработка ошибок.Например, он позволяет выполнить задачу, которая уведомляет другую службу, если оба обновления не могут быть выполнены успешно в течение заданного интервала.
  • Поддержка длительных пульсирующих операций
  • Возможность реализации зависимостей сложных задач.Например, для реализации цепочки вызовов или логики компенсации в случае неисправимых сбоев ( SAGA )
  • Обеспечивает полную видимость текущего состояния обновления.Например, при использовании очередей все, что вы знаете, если в очереди есть несколько сообщений, и вам нужна дополнительная БД для отслеживания общего прогресса.С Cadence каждое событие записывается.
  • Возможность отмены обновления в полете.
  • Встроенный распределенный CRON

См. презентация , чтоперебирает модель программирования Cadence.

0 голосов
/ 27 августа 2019

У вас есть 2 рабочих и 1 веб-сервер. Полагаю, ваше веб-приложение отправляет вашим сотрудникам несколько отложенных заданий.Поэтому вам нужен способ хранения данных, связанных с этими фоновыми заданиями .

. Для этого вы можете использовать как базу данных (например, Redis, это то, что делает сообщник), так и сообщение.очередь (как RabbitMQ).Очередь сообщений - это специализированная система, которая очень эффективна для этого варианта использования (позволяющая значительно повысить пропускную способность).База данных позволит вам лучше проанализировать себя (так как вы можете запросить таблицу заданий, чтобы увидеть текущую ситуацию), в то время как система очередей будет более эффективной, но также будет более «черным ящиком» и потребует новых навыков.

Если у вас нет проблем с производительностью, чем проще, тем лучше, даже простой базы данных mysql должно быть достаточно.Если вам нужна более мощная система или вам необходим большой мониторинг, вы также можете рассмотреть возможность использования специализированного размещенного сервиса, такого как zenaton (я являюсь основателем), который сделает всю тяжелую работу за вас, включая планирование илиболее сложная организация ваших фоновых заданий.

0 голосов
/ 29 декабря 2018

Оба выполняют одну и ту же задачу, то есть выполняют задания в фоновом режиме, но делают это по-разному.

С отложенным заданием каждый использует какую-то базу данных для хранения, запросы длярабочие места после этого обрабатывают их.Его просто настроить, но производительность и масштабируемость не велики.

RabbitMQ или его альтернативы Redis и т. Д. сложнее настроить, но их производительность, гибкость иМасштабируемость отличная, мы говорим о более чем 5000 заданий в секунду, кроме того, вы склонны использовать меньше кода.

...