Apache Kafka против Apache Storm

Apache Kafka: система распределенных сообщений
Apache Storm: обработка сообщений в реальном времени

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

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

Ответ 1

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

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

Общий поток этих инструментов (как я знаю) выглядит следующим образом:

система реального времени → Kafka → Storm → NoSql → BI (необязательно)

Итак, у вас есть приложение реального времени, обрабатывающее данные большого объема, отправляет его в очередь Kafka. Storm извлекает данные из kafka и применяет некоторые необходимые манипуляции. На данный момент вам обычно нравится получать некоторые преимущества от этих данных, поэтому вы либо отправляете их на какой-то Nosql db для дополнительных вычислений BI, либо можете просто запросить этот NoSql из любой другой системы.

Ответ 2

Кафка и Шторм имеют несколько другую цель:

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

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


Но вы можете использовать их вместе: например, ваше приложение использует kafka для отправки данных на другие серверы, которые используют шторм для выполнения некоторых вычислений.

Ответ 3

Вот как это работает

Kafka. Чтобы обеспечить поток в реальном времени

Storm - для выполнения некоторых операций над этим потоком

Вы можете взглянуть на проект GitHub https://github.com/d3/d3.

(D3js - библиотека графического представления)

Идеальный случай:

Realtime application -> Kafka -> Storm -> NoSQL -> d3js

Этот репозиторий основан на:

Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js

Ответ 4

Я знаю, что это более старая нить, и сравнения Apache Kafka и Storm были правильными и правильными, когда они были написаны, но стоит отметить, что Apache Kafka много лет развивается и начиная с версии 0.10 (апрель 2016 года) Kafka включил API-интерфейс Kafka Streams, который обеспечивает возможности обработки потока без необходимости в любом дополнительном программном обеспечении, таком как Storm. Kafka также включает Connect API для подключения к различным источникам и приемникам (адресатам) данных.

Блог анонса - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/

Текущая документация Apache - https://kafka.apache.org/documentation/streams/

В 0.11 Kafka функциональность обработки потока была дополнительно расширена, чтобы обеспечить "Однократно семантику и транзакции".

https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/

Ответ 5

Как каждый объясняет вам, что Apache Kafka: очередь непрерывных сообщений

Apache Storm: инструмент непрерывной обработки

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

https://github.com/miguno/kafka-storm-starter

Просто следуй за ним, ты получишь какую-то идею