Новый сервис на Rai...
 
Уведомления
Очистить всё

Новый сервис на Rails 8: Solid Queue или всё-таки Sidekiq?

8 Сообщения
6 Пользователи
11 Реакции
673 Просмотры
egorov_s
Сообщения: 5
Автор темы
Дружит с bundler бэкенд-разработчик
Присоединился: 4 года назад
[#62]

Стартуем новый сервис на Rails 8.0, в генераторе теперь по умолчанию Solid Queue. До этого у меня везде был Sidekiq с Redis, и он ни разу не подводил. Нагрузка ожидается скромная, тысяч 50 джоб в сутки: письма, вебхуки, пересчёт остатков. Есть смысл тащить Redis только ради очереди или Solid Queue уже можно брать?


7 ответов
GalinaKorneva
Сообщения: 30
Читает чужие PR бэкенд-разработчица
Присоединился: 4 года назад

На 50 тысячах в сутки Solid Queue справится без вопросов, это меньше одной джобы в секунду. Плюс для меня такой: если положить очередь в основную базу, джоба ставится в той же транзакции, что и запись, и не бывает, что запись откатилась, а джоба ушла. В Rails 8 по умолчанию очередь живёт в отдельной базе, тогда этого плюса нет, зато основную базу опрос не грузит. У Sidekiq взрослее экосистема и интерфейс, больше готовых решений для уникальности и ограничения частоты. Для нового сервиса на такой нагрузке я бы Redis не заводила.


Ответ
pavel_1988
Сообщения: 8
Разобрался с блоками разработчик
Присоединился: 3 года назад

Мы на Solid Queue с прошлой весны, сервис на 300 тысяч джоб в сутки, PostgreSQL. Работает. Из граблей: сначала все воркеры опрашивали базу каждые 0,1 секунды, и база это чувствовала. Для неспешных очередей подняли polling_interval до секунды, нагрузка ушла.


Ответ
1 ответ
artem_67
Присоединился: 4 года назад

Пишет тесты разработчик на Go
Сообщения: 18

Очередь в реляционной базе, которую опрашивают раз в секунду. Ну да, ну да)


Ответ
kostya.sokurov
Сообщения: 73
Держит прод бэкенд-разработчик, senior
Присоединился: 4 года назад

Там, где Sidekiq уже стоит, я его не трогаю, переезд ради переезда не нужен. Для нового проекта с такой нагрузкой взял бы Solid Queue: на один сервис в инфраструктуре меньше, на одну вещь, которая может упасть ночью, тоже. Только сразу поставьте mission_control-jobs, без интерфейса к очередям жить тяжело.


Ответ
Юлия Ф.
Сообщения: 11
Разобрался с блоками фулстек-разработчица
Присоединился: 3 года назад

А GoodJob почему никто не вспоминает? Тоже в базе, интерфейс и крон из коробки. Правда, только PostgreSQL.


Ответ
egorov_s
Сообщения: 5
Автор темы
Дружит с bundler бэкенд-разработчик
Присоединился: 4 года назад

artem_67, на 50 тысячах в сутки это как раз нормально. Решили так: Solid Queue в отдельной базе на том же сервере MySQL, как делает генератор, Redis не заводим. Неделю гоняли на стейдже нагрузку в три раза больше ожидаемой: потерянных джоб ноль, задержка до старта в среднем 0,4 секунды, нам хватает. Если упрёмся, вернёмся к вопросу. За GoodJob спасибо, но у нас MySQL.


Ответ
1 ответ
GalinaKorneva
Присоединился: 4 года назад

Читает чужие PR бэкенд-разработчица
Сообщения: 30

Ретраи только настройте явно через retry_on: у Active Job по умолчанию их нет, раньше это за вас делал Sidekiq.


Ответ