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 или что-то еще в зависимости от задания под рукой.

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

12
задан skaffman 6 March 2010 в 10:58
поделиться

1 ответ

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

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

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

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

с уважением,

2
ответ дан 3 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: