2016-08-28 5 views
-2

У меня возникли проблемы с пониманием преимуществ использования сельдерея. Я понимаю, вы можете использовать Celery с Redis, RabbitMQ и т. Д., Но почему бы мне просто не получить клиента для этих служб очереди сообщений напрямую, а не сидеть Сельдерей перед ним?Сельдерей с Redis vs Redis Alone

+0

Преимущества исходят из того, как вы его используете, поэтому у него могут не быть никаких преимуществ. Если вы строите небольшую систему, то Сельдерей может быть вам не полезен. Он может быть полезен для больших систем с несколькими узлами. – ipinak

+0

Этот вопрос не подходит для этого сайта. Хорошие, объективно оправданные ответы будут зависеть от конкретных деталей решаемой проблемы, но вы открыли поле для всей вселенной возможных проблем, что делает ваш вопрос слишком широким и основанным на мнениях. Могут быть проблемы A и B, где проблема A будет намного лучше решена заданием cron + Redis, тогда как проблема B действительно выиграет от использования Celery + Redis. Независимо от того, следует ли использовать Сельдерей, действительно зависит от деталей решаемой проблемы. – Louis

ответ

2

Преимущество использования сельдерея заключается в том, что нам в основном нужно написать код обработки задачи, а обработка доставки задачи на процессор задач позаботится о структуре Celery. Масштабирование обработки задач также легко, просто запустив больше работников Celery с более высокой параллелизмом (больше потоков/процессов обработки). Нам даже не нужно писать код для отправки задач в очереди и выполнение задач из очередей. Кроме того, он имеет встроенную возможность добавления/удаления пользователей для любой из очередей задач. Структура поддерживает повтор задач, обработку ошибок, накопление результатов и т. Д. Он имеет много функций, которые помогают нам сосредоточиться только на реализации логики обработки задач.

Для аналогии реализация программы уменьшения масштаба для работы на Hadoop не является очень сложной задачей. Если данные малы, мы можем написать простой скрипт Python для реализации логики сокращения карты, которая будет превосходить Hadoop map-reduce Job, обрабатывая одни и те же данные. Но когда данные очень велики, мы должны разделить данные на разных машинах, нам нужно будет запускать несколько процессов на разных машинах и координировать их выполнение. Сложность заключается в запуске нескольких экземпляров карт, а затем в задачах редукторов на нескольких машинах, сборе входных данных и распределении входов для картографов, передаче выходов картографов на соответствующие редукторы, мониторинг прогресса, перезапуск неудачных задач, обнаружение завершения задания и т. Д. Но поскольку у нас есть Hadoop, нам не нужно заботиться о сложной сложности выполнения распределенной работы. Точно так же сельдерей также помогает нам сосредоточиться в основном на логике выполнения задач.