Apache Kafka И Rabbitmq: В Чем Разница И Что Лучше Изучать?

Мы решили внести свой скромный вклад в развитие сообщества и перевели оригинальная статья .

Статья опубликована на сайте Простое обучение .

Мы все больше полагаемся на данные для выполнения задач в нашей работе и повседневной жизни.

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

В результате возрастает необходимость обработки потока информации между элементами этой системы.

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

Вот почему программисты используют брокеров сообщений и подобные инструменты для обмена информацией и общения.



Apache Kafka и RabbitMQ: в чем разница и что лучше изучать?



В чем разница между брокером сообщений и системой Pub/Sub?

Брокеры сообщений — это программные модули, которые позволяют приложениям, службам и системам взаимодействовать и обмениваться информацией.

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

Брокеры сообщений проверяют, маршрутизируют, хранят и доставляют сообщения предполагаемым получателям.

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

Публикация/подписка или публикация/подписка — это схема распространения сообщений, которая позволяет производителям публиковать любое необходимое им сообщение.

Инженеры по данным и ученые, работающие с данными, называют Pub/Sub методом распространения широковещательного типа, при котором между производителем и потребителями существует связь «один ко многим».



Что такое Апач Кафка?

Apache Kafka — это распределенная платформа потоковой передачи событий с высокой пропускной способностью и открытым исходным кодом.

Написанная на Java и Scala, Kafka представляет собой шину сообщений Pub/Sub, ориентированную на потоковую передачу и воспроизведение данных с высокой интенсивностью.

Kafka не полагается на очередь, а добавляет сообщения в журнал и оставляет их там до тех пор, пока не будет достигнут лимит хранилища или пока потребитель не прочитает эти сообщения.

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

Пользователи могут использовать пакетную обработку сообщений для увеличения пропускной способности и эффективной доставки сообщений.

Хотя Kafka поставляется только с Java-клиентом, существует специальный адаптер SDK, который позволяет создать собственную системную интеграцию.

Существует также постоянно растущий каталог проектов экосистемы сообщества и клиентов с открытым исходным кодом.

Kafka вышла в 2011 году, поэтому этот инструмент можно назвать «новичком».



Для чего используется Apache Kafka?

Apache Kafka лучше всего подходит для потоковой передачи из пункта А в пункт Б без сложной маршрутизации, но с максимальной пропускной способностью.

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

Kafka также можно использовать для обработки данных в многоэтапной конвейерной обработке.

Kafka — отличное решение, если вам нужна платформа для хранения, чтения, перечитывания и анализа потоковых данных.

Его сильная сторона — обработка и анализ данных в реальном времени.

Инструмент идеально подходит для постоянного хранения сообщений или для систем, которые регулярно проверяются.



Что такое RabbitMQ?

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

Этот инструмент называется «распределенным», поскольку он обычно работает как кластер узлов, в котором очереди распределяются (реплицируются) по узлам для обеспечения высокой доступности и отказоустойчивости.

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

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

Этот инструмент можно рассматривать как почтовое отделение, которое получает, хранит и отправляет почту; только RabbitMQ принимает, хранит и передает сообщения с двоичными данными.

По умолчанию RabbitMQ использует протокол AMQP 0.9.1, и существуют расширения для поддержки дополнительных протоколов: AMQP 1.0, HTTP, STOMP и MQTT. RabbitMQ официально поддерживает Elixir, Go, Java, JavaScript, .

NET, PHP, Python, Ruby, Objective-C, Spring и Swift. Пользователи имеют доступ к различным инструментам разработки и клиентам, использующим расширения сообщества.



Для чего используется RabbitMQ?

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

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

RabbitMQ идеально подходит для веб-серверов, которым требуется быстрый запрос-ответ. Этот инструмент балансирует нагрузку между рабочими приложениями при высокой нагрузке (более 20 000 сообщений в секунду) и может обрабатывать фоновые задания или долго выполняющиеся задачи, такие как преобразование PDF, сканирование файлов или масштабирование изображений.

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



Основные различия между Apache Kafka и RabbitMQ

Эти фреймворки подходят к процессу обмена сообщениями совершенно по-разному, и их возможности сильно различаются.

В таблице представлены основные различия между инструментами.

Apache Kafka и RabbitMQ КроликMQ Апач Кафка
Производительность От 4000 до 10 000 сообщений в секунду 1 миллион сообщений в секунду
Хранение сообщений На основании подтверждения На основании политики (например, 30 дней)
Тип данных Транзакционные данные Эксплуатационные данные
Потребительский режим работы Умный брокер/тупой потребитель Тупой брокер/умный потребитель
Топология Обмен: прямой, разветвленный, тематический, на основе заголовка На основе системы публикации/подписки.

Размер полезной нагрузки Без ограничений Ограничение по умолчанию — 1 МБ.

Примеры применения Простые случаи Массовая обработка данных/высокопроизводительная передача данных
Узнайте больше о разнице между Apache Kafka и RabbitMQ:
  • Поток данных.

    RabbitMQ использует определенный ограниченный поток данных.

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

  • Использование данных.

    RabbitMQ отлично подходит для пользовательских запросов и транзакционных данных, таких как создание и размещение заказов.

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

  • Обмен сообщениями.

    RabbitMQ отправляет пользователям сообщения, которые удаляются из очереди после их обработки и подтверждения.

    Кафка — это журнал.

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

  • Модель дизайна.

    RabbitMQ использует модель «умный брокер/глупый потребитель».

    Брокер постоянно доставляет сообщения потребителям и отслеживает их статус.

    Apache Kafka использует модель тупого брокера/умного потребителя.

    Этот инструмент не отслеживает сообщения, прочитанные каждым пользователем.

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

    Потребители должны самостоятельно отслеживать свою позицию в каждом журнале.

  • Топология.

    RabbitMQ использует топологию обмена очередями: сообщения отправляются на обмен, откуда они затем распределяются по различным привязкам очередей для потребления потребителями.

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



Apache Kafka и RabbitMQ: чему стоит научиться в 2022 году?

Каждый инструмент хорош для определенного круга задач, поэтому однозначного ответа на этот вопрос нет. Изучите Kafka, если ваша работа предполагает любой из следующих сценариев:
  • Системы поиска или моделирования событий меняются как последовательность событий.

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

  • Потоки с пропускной способностью не менее 110 000 событий в секунду, сложная маршрутизация или порядок секционирования хотя бы один раз.

Изучите RabbitMQ, если в вашей компании есть какой-либо из этих сценариев:
  • Детализированная согласованность/набор гарантий для каждого сообщения.

  • Сложная маршрутизация пользователям/потребителям
  • Приложения, которым требуется несколько возможностей публикации/подписки или двухточечная связь запрос-ответ.
  • Приложения, которые должны поддерживать устаревшие протоколы: STOMP, MQTT, AMQP, 0-9-1.
В зависимости от количества свободного времени и энергии, вы можете изучить как Apache Kafka, так и RabbitMQ: эта стратегия расширит ваш набор навыков, повысит гибкость в новой рабочей среде и повысит вашу конкурентоспособность на рынке труда.

Освоив оба инструмента, вы будете готовы ко всему.

Для тех, кто хочет изучить Apache Kafka 20-22 мая пройдет онлайн-интенсив» Apache Kafka для разработчиков Это углубленный экспресс-курс с практикой работы на Java или Golang и платформе Spring+Docker+Postgres. За три дня вы сможете получить опыт разработки нескольких приложений с использованием Kafka, погрузиться в тонкости инструмента и сразу приступить к работе.

используя его в своей работе.

Теги: #ИТ-инфраструктура #Системное администрирование #Высокая производительность #Большие данные #rabbitmq #bigdata #Apache #apache kafka

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.