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