Yii Queue (Очереди)

Обсуждаем, как правильно строить приложения
Ответить
gambitd
Сообщения: 3
Зарегистрирован: 2019.01.30, 13:30

Yii Queue (Очереди)

Сообщение gambitd » 2019.01.30, 13:46

Добрый день. Недавно эволюционировал от CRON до работы с Linux Workers.

Установил расширение yiisoft/yii2-queue все настроил - все работает.
Но с повышением нагрузки потребовалось запустить несколько Рабочих для одной очереди. И здесь начались проблемы: процессы стали конфликтовать между собой и выкидывать ошибки.

Сейчас использую Supervisor для менеджмента процессов и запускаю по 3 процесса на очередь. и DB драйвер для Yii компонента.
Суть моих Рабочих: конвертация файлов, загрузка на облако, удаление файлов и т.д.

Пробовал следующее:
1. записывать в таблицу queue время старта. и в Queue::beforeExec проверять не взял ли паралельный процесс это задание
2. в самих Job-классах писал кучу проверок типа file_exists, ActiveRecord->exists() и т.д.

это минимизировало ошибки но они всеравно выбрасываються в связи с параллельным выполнением. тобишь система не стабильна

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

Аватара пользователя
ElisDN
Сообщения: 5172
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii Queue (Очереди)

Сообщение ElisDN » 2019.01.30, 21:19

Какой драйвер используете? File? Redis? RabbitMQ?

gambitd
Сообщения: 3
Зарегистрирован: 2019.01.30, 13:30

Re: Yii Queue (Очереди)

Сообщение gambitd » 2019.01.31, 08:17

По началу решил использовать DB драйвер. Изза относительно не сложного дебага и Retryable Jobs. Затем планирую мигрировать на что-то посерьезней Я так понимаю база не сильно производительна в этом плане, да и влияет на общую загрузку проекта

Аватара пользователя
ElisDN
Сообщения: 5172
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Yii Queue (Очереди)

Сообщение ElisDN » 2019.01.31, 10:51

Замените на Redis или Rabbit и повторов не будет.

gambitd
Сообщения: 3
Зарегистрирован: 2019.01.30, 13:30

Re: Yii Queue (Очереди)

Сообщение gambitd » 2019.01.31, 11:09

Спасибо, в этих системах также можно хэндлить упавшие задачи как и БД? В БД все наглядно, а там есть инструменты для визуализации?

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

Если не сложно можете посоветовать годную литературу по использованию этих систем.

В чем профит использования той или иной системы управления сообщениями из вашего личного опыта?

Ответить