KAFKA与现代内存数据网格(IMDG)相比

时间:2018-05-03 07:40:15

标签: java apache-kafka hazelcast ignite infinispan

我有一些IMDG经验我对KAFKA很新。我想了解Kafka的用例。我知道它是一个流媒体/消息平台。它的许多问题在现代内存数据网格中都有一些相互矛盾的部分。当有人更喜欢使用Kafka以及您更喜欢使用IMDG时,您能否对用例有所了解?我需要画一个平行的。

我会举一个例子。我注意到使用Kafka进行数据复制。尽管可能,我觉得IMDG更有能力和自动化用于此目的。

此外,我对这两种技术如何相互补充感兴趣,因为我认为它们并未直接竞争。

2 个答案:

答案 0 :(得分:3)

这两种类型的系统确实存在一些功能重叠,但它们仍然是具有不同主要目标的两种不同类型的系统。因为我们无法比较它们的主要特征。

Kafka主要是pub / sub 持久消息代理。数据网格主要是内存缓存系统。这是人们可以选择使用的第一个区别或关键属性。

在二级,我认为这是线路变得模糊的地方,两种类型的系统都提供某种分布式计算功能(Kafka Streams,Ignite或Hazelcast计算网格/服务)和数据提取功能。但是,这不能作为主要选择标准。

这两种类型在各自的主要目的上并非直接相互竞争。基于流的计算引擎可以使用数据网格进行计算或进行瞬态缓存,但我不知道它如何依赖计算/数据网格来获得可靠的独立消息代理,因为它依赖于类似于卡夫卡为它。

小型应用程序可以省去一种类型以使用另一种类型的次要功能,但对两者都有很高要求的应用程序实际上可能需要使用这两种类型的系统。

例如,如果您要构建具有多个数据源的高容量数据管道,并且必须使用持久的消息代理,则可能必须使用Kafka,但如果您同样对低后期查询下行,您还需要使用计算网格,无论是缓存还是分布式计算。

答案 1 :(得分:1)

我最近一直在思考同样的问题。我得出了这些结论:

在以下情况下,请使用Ignite / Hazelcast之类的IMDG:

  • 您的处理用例在计算网格中很有意义,并且您的网格(其中可能包含许多应用程序/流程)是持久的分布式数据流的唯一使用者

在以下情况下使用Kafka:

  • 您具有处理层的异构环境,并且需要一个独立的数据集成层来提供持久的分布式数据流

此外,它们不一定相互排斥。您可能会发现后者在您的组织中很有意义。但是,某些消费者可能对IMDG / IMCG有特定的用例,并且更喜欢利用企业范围的Kafka平面获取种子数据,并将其IMDG / IMCG内部数据结构重用于网格内专用的中间数据流,因此没有真正的理由将那些人重新转移到卡夫卡。可能会将结果重新分配给Kafka,以进一步传播到企业的其余部分。

顺便说一句,像ignite和hazelcast这样的IMDG / IMCG可以提供发布/订阅,就数据弹性而言,其持久性与Kafka相同,并可以对其进行流处理。

相关问题