Resque vs Sidekiq? [закрыто]

127

В настоящее время я использую Resqueдля своего фонового процесса, но в последнее время я слышал много шума sidekiq. Может ли кто-нибудь сравнить / отличить?

В частности, я хотел бы знать, есть ли способ программно отслеживать, завершено ли задание в sidekiq

Бхушан Лодха
источник
71
Я так рад видеть, что этот вопрос не был закрыт как «не соответствующий SO».
Dogweather
51
Можем ли мы прекратить закрывать все хорошие вопросы, пожалуйста, народ. Я знаю, что это довольно широко, это также очень важно и довольно интересно.
superluminary
19
Однажды они изобрели сайт, на котором программисты могут задавать вопросы, и этот сайт позволит получать субъективные ответы. Вопросы, которые можно проигнорировать или даже проголосовать за их актуальность.
baash05
4
@ baash05, и он будет называться Quora!
nakhli 06
6
Он будет называться Yahoo Answers, и его качество упадет до минимума.
Halfer

Ответы:

130

Resque:

Плюсы:

Cons

  • запускает процесс на каждого рабочего (использует больше памяти);
  • не повторяет выполнение заданий (по крайней мере, из коробки).

Sidekiq:

Pros

  • запускает поток на каждого рабочего (использует гораздо меньше памяти);
  • меньше разветвлений (работает быстрее);
  • больше возможностей из коробки.

Cons

  • [огромный] требует потоковой безопасности вашего кода и всех зависимостей . Если вы запускаете потокобезопасный код с потоками, у вас возникают проблемы;
  • работает с некоторыми рубинами лучше, чем с другими (рекомендуется jruby, эффективность на МРТ снижается из-за GVL (глобальной блокировки виртуальной машины)).
Серджио Тюленцев
источник
19
Как узнать, что у вас запущен «небезопасный для потока код»?
Dogweather
4
Например, если вы храните состояние в глобальных переменных, то у вас проблемы :) Что касается драгоценных камней, вот некоторые из них в вики .
Серджио Туленцев
25
@mrbrdo Вы ошибаетесь. GVL не имеет ничего общего с потокобезопасностью вашего кода Ruby. GVL - это потокобезопасность кода интерпретатора Ruby (код MRI C).
radarek
2
Я должен противоречить «профи» Resque, который гласит, что «вы можете использовать любой рубин». Сегодня в README for Resque говорится: «Мы хотели бы поддержать рубины без МРТ, но в них могут быть ошибки». github.com/resque/resque/blob/master/README.md#requirements
JellicleCat
2
Я бы особенно избегал Sidekiq, если вы планируете запускать JavaScript внутри своих заданий с помощью therubyracer. Это не ошибка Sidekiq как таковая, но многопоточность вызывает проблемы для therubyracer. См. Github.com/cowboyd/therubyracer/issues/206
Джереми Бертон,