У двух типов систем есть некоторое перекрытие функций, но они по-прежнему представляют собой два разных типа систем с разными основными целями. В этом мы не можем сравнивать их по основным признакам.
Kafka - это, прежде всего, паб / суб долговечный брокер сообщений. Сетки данных в основном системы кэш-памяти в памяти . Это первое различие или ключевой атрибут, по которому можно выбрать любой из них.
На вторичном уровне, который, как мне кажется, линии становятся размытыми, оба типа систем предоставляют какие-то возможности распределенных вычислений (Kafka Streams, Ignite или Hazelcast Compute Grid / Service) с функцией приема данных. Это, однако, не может быть принято в качестве основного критерия выбора.
Два типа на самом деле напрямую не конкурируют друг с другом по своей основной цели . Механизм вычислений на основе потоков может использовать сетку данных для вычислений или для кэширования переходных состояний, но я не понимаю, как он будет полагаться на сетки вычислений / данных для надежного автономного брокера сообщений, поскольку это будет зависеть от чего-то вроде Кафки для это.
Небольшое приложение может обойтись без одного типа, чтобы использовать вторичные функции другого, но приложение с высоким спросом на оба может фактически нуждаться в использовании обоих типов систем.
Например, если вы строите конвейер данных большого объема с несколькими источниками данных и вам необходимо использовать надежный брокер сообщений, вам, вероятно, придется использовать Kafka, но если у вас одинаково строгие требования к низким В ответ на задержку в нисходящем потоке вам также потребуется использовать вычислительную сетку, будь то для кэширования или для распределенных вычислений.