Мы разрабатываем веб-приложение, в котором с примерно 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 или что-то еще в зависимости от выполняемой работы.
Что бы вы порекомендовали? У вас есть опыт работы с одним из двух? Какие проблемы с производством реальной жизни следует учитывать при выборе между ними? И я даже сравниваю яблоко с яблоком здесь?