Подтвердить что ты не робот

Resque или Gearman - выбор правильного инструмента для фоновых заданий

Мы разрабатываем веб-приложение, в котором с примерно 50% запросов на запись мы в конечном итоге нажимаем данные на несколько хранилищ данных и вставляем и обновляем значительное количество записей в этих хранилищах данных. Чтобы улучшить время отклика, мы хотим обрабатывать такие запросы асинхронно в фоновом режиме.

Наше веб-приложение написано в Ruby on Rails.

Два решения, к которым я склонен, - Resque и Gearman.

Resque: Больше информации здесь: http://github.com/blog/542-introducing-resque Resque очень хорошо подходит для Ruby, и это специально предназначено для обработки фоновой работы. "Фоновые задания могут быть любым классом или модулем Ruby, который отвечает за выполнение. Существующие классы могут быть легко преобразованы в фоновые задания, или вы можете создавать новые классы специально для выполнения работы".

Gearman: Он специально не предназначен только для фоновых заданий для асинхронной обработки, но что-то, что это определенно может сделать. По-видимому, более надежный, или, похоже, кажется. Еще одно преимущество Gearman заключается в том, что, хотя ваш клиентский код может быть в Ruby, рабочий код может быть включен, скажем, в PHP. Хотя сейчас мы полностью работаем над Ruby on Rails, кто знает, может ли в будущем мы захотим использовать PHP или что-то еще в зависимости от выполняемой работы.

Что бы вы порекомендовали? У вас есть опыт работы с одним из двух? Какие проблемы с производством реальной жизни следует учитывать при выборе между ними? И я даже сравниваю яблоко с яблоком здесь?

4b9b3361

Ответ 1

У меня есть опыт работы с Gearman, когда я искал распределенный механизм forking, который мог бы предложить распределение рабочей нагрузки для async. обработки в кластерной среде.

Я могу сказать вам, что он работает в "симулированном" случае, когда асинхронная обработка была отправлена ​​на 2 машины (по 2 сотрудника на каждой машине = 4 сотрудника). Не в реальном сценарии (что бы вы ни говорили). Реальный сценарий случая будет реализован, когда "симуляции" предоставят полезную информацию.

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

Я бы предложил взять подход "симуляции", который я сделал, и выполнить ваши тесты, прежде чем решать, какой из них использовать.

С уважением,