Вы используете Apache Kafka в качестве распределенной и надежной очереди, которая может обрабатывать большие объемы данных и позволяет передавать сообщения от одной конечной точки к другой.
Шторм - это не очередь. Это система с распределенными возможностями обработки в реальном времени, что означает, что вы можете выполнять все виды манипуляций с данными в реальном времени параллельно.
Общий поток этих инструментов (насколько я знаю) выглядит следующим образом:
система реального времени -> Kafka -> Storm -> NoSql -> BI (необязательно)
Итак, у вас есть приложение в реальном времени, которое обрабатывает большие объемы данных и отправляет их в очередь Kafka. Storm извлекает данные из kafka и применяет некоторые необходимые манипуляции. На этом этапе вы обычно хотите получить некоторые преимущества от этих данных, поэтому вы либо отправляете их в какую-то базу данных Nosql для дополнительных вычислений BI, либо вы можете просто запросить этот NoSql из любой другой системы.
У Кафки и Шторма несколько иное назначение:
Kafka - это распределенный брокер сообщений, который может обрабатывать большое количество сообщений в секунду. Он использует парадигму публикации-подписки и полагается на темы и разделы. Kafka использует Zookeeper для обмена и сохранения состояния между брокерами. Таким образом, Кафка в основном отвечает за передачу сообщений с одной машины на другую.
Storm - это масштабируемая, отказоустойчивая аналитическая система в реальном времени (как Hadoop в реальном времени). Он потребляет данные из источников (Spouts) и передает их конвейеру (Bolts). Вы можете объединить их в топологию. Итак, Storm - это, по сути, вычислительная единица (агрегирование, машинное обучение).
Но вы можете использовать их вместе: например, ваше приложение использует kafka для отправки данных на другие серверы, которые используют шторм для выполнения некоторых вычислений.
источник
Я знаю, что это более старый поток, и сравнения Apache Kafka и Storm были действительными и правильными, когда они были написаны, но стоит отметить, что Apache Kafka сильно изменился за эти годы, и с версии 0.10 (апрель 2016 г.) Kafka включил API Kafka Streams, который предоставляет возможности обработки потоков без необходимости в каком-либо дополнительном программном обеспечении, таком как Storm. Kafka также включает в себя Connect API для подключения к различным источникам и приемникам (получателям) данных.
Блог объявлений - https://www.confluent.io/blog/introduction-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/
источник
Вот как это работает
Kafka - для обеспечения потока в реальном времени
Storm - для выполнения некоторых операций с этим потоком
Вы можете взглянуть на проект GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .
(D3js - библиотека графических представлений)
Идеальный случай:
Этот репозиторий основан на:
источник
Как все объясняют, Apache Kafka: это очередь непрерывного обмена сообщениями.
Apache Storm: инструмент непрерывной обработки
здесь, в этом аспекте, Kafka будет получать данные с любого веб-сайта, такого как FB, Twitter, с помощью API, и эти данные обрабатываются с помощью Apache Storm, и вы можете хранить обработанные данные в любой из любых баз данных, которые вам нравятся.
https://github.com/miguno/kafka-storm-starter
Просто следуйте за ним, вы получите некоторое представление
источник
Когда у меня есть вариант использования, который требует от меня визуализировать или предупреждать о шаблонах (подумайте о тенденциях в твиттере), продолжая обрабатывать события, у меня есть несколько шаблонов.
NiFi позволил бы мне обработать событие и обновить постоянное хранилище данных с помощью небольшой (er) пакетной агрегации с очень, очень небольшим количеством пользовательского кода.
Storm (много настраиваемого кода) позволяет мне почти в реальном времени получать доступ к трендам.
Если я могу подождать много секунд, я могу выполнить пакетную обработку из kafka в hdfs (Parquet) и обработать.
Если мне нужно знать за секунды, мне понадобится NiFi и, возможно, даже Storm. (Подумайте о мониторинге тысяч земных станций, где мне нужно видеть погодные условия небольшого региона для предупреждений о торнадо).
источник
Просто Kafka отправляет сообщения от узла к другому, а Storm обрабатывает сообщения. Посмотрите этот пример того, как вы можете интегрировать Apache Kafka с Storm
источник