Зачем сельдерею нужен брокер сообщений?

Поскольку сельдерей - это очередь заданий / очередь задач, имя показывает, что он может поддерживать свои задачи и обрабатывать их. Тогда зачем ему брокер сообщений, такой как rabbitmq или redis?

Очередь задач распределен

shahaf 17.06.2018 07:36

вы можете объяснить распределенную очередь задач?

Shailendra 17.06.2018 07:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
2
3 388
1

Ответы 1

Celery - это Распределенная очередь задач, что означает, что система может находиться на нескольких компьютерах (контейнерах) в нескольких местах с одной централизованной шиной.

базовая архитектура выглядит следующим образом:

рабочие - процессы, которые могут принимать задания (данные) из шины (очереди задач) и обрабатывать их

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

автобус - очередь задач, это в основном база данных, которая хранит задания в виде сообщений, чтобы рабочие могли их получать,

Важно реализовать параллельную и неблокирующую базу данных, поэтому, когда один процесс принимает или отправляет задание с / на шину, он не мешает другим работникам получать / размещать свои рабочие места.

RabbitMQ, Redis, ActiveMQ, Kafka и другие являются лучшими кандидатами на такое поведение.

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

большинство шин реализуют функцию подтверждения / сбоя, поэтому рабочие могут подтвердить свою работу, или, если нет подтверждения (или сообщить об ошибке), это сообщение может быть снова отправлено другому рабочему, и на этот раз оно может быть успешно обработано, поэтому данные не будут потеряны. . (это сильно зависит от логики отработки отказа и контекста данных в качестве входных данных для задачи)

Celery включает scheduler (бить), который периодически помещает определенные задания в шину и, таким образом, периодически создает задачи.

давайте работать с примером утилизации, вы хотите выбросить весь мир, но Китай может разрешить трафик только из своего региона, как и Европа и США. так что вы можете построить рабочих и разместить их по всему миру

вы можете использовать только одну шину, скажем, она находится в США, все другие работники знают эту шину и могут подключиться к ней, поэтому, разместив определенную работу (лом фарфора) на автобусе, расположенном в США, процесс в Китае может работать над этим, следовательно, распределить

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

Я предлагаю прочитать формальный документы, это довольно просто

У меня вопрос, я не понимаю, в чем разница между очередью rabbitmq и очередью сельдерея, это одно и то же или они разные? Tnx Tom

Tomislav Mikulin 21.09.2018 13:14

@TomislavMikulin да и нет, сельдерей управляет очередью заданий, реализация этой очереди зависит от типа брокера, она может реализовать ее с помощью очереди rabbitmq или списка redis или даже какой-либо другой структуры данных зависит от брокера и его api

shahaf 21.09.2018 13:39

когда мы используем сельдерей в контексте rabbitmq, «очередь задач шины», как вы упомянули в своем ответе, это очередь rabbitmq или очередь сельдерея?

Tomislav Mikulin 21.09.2018 14:03

Автобус из кролика (очереди), сельдерей предоставляет прозрачный API-интерфейс, т.е. добавляет в очередь, берет из очереди и т. д.

shahaf 21.09.2018 14:44

согласно вашему комментарию, можем ли мы сказать, что сельдерей делает брокера сообщений универсальным? это дает возможность выбрать любого другого брокера. Верно?

ahmet 03.02.2019 19:54

@shahaf Вопрос касался Celery и RabbitMQ. Из ответа неясно, когда мы используем RabbitMQ. Я добавил RabbitMQ в ответ. Пожалуйста, дайте мне знать, правильно это или нет.

illuminates 12.01.2021 20:11

Другие вопросы по теме