我有一些IMDG的经验,我对卡夫卡相当陌生。我试图理解卡夫卡的用例。据我所知,这是一个流/消息传递平台。它的许多问题在现代的内存数据网格中都有一些相反的部分。当有人更喜欢使用Kafka时,当您更喜欢使用IMDG时,您能稍微了解一下用例吗?我需要画一个平行图。
我举一个例子。我注意到使用Kafka进行数据复制。尽管有可能,我觉得IMDG在这方面更有能力和自动化。
另外,我对这两种技术是如何相互补充感兴趣的,因为我不认为它们是直接竞争的。
发布于 2018-05-03 08:03:00
这两种类型的系统确实有一些特性重叠,但它们仍然是两种不同类型的系统,其主要目标不同。在这一点上,我们不能比较它们的主要特征。
Kafka主要是一个酒吧/子持久消息代理。数据网格主要是内存缓存系统.这是您选择使用的第一个区别或关键属性。
在第二层,我认为这是线变得模糊的地方,这两种类型的系统都提供某种分布式计算能力(Kafka Streams、Ignite或Hazelcast计算网格/服务),具有数据摄取功能。然而,这不能作为主要的选择标准。
这两种类型在各自的主要用途上并不真正直接竞争对方的。基于流的计算引擎可能使用数据网格进行计算或进行瞬态缓存,但我不知道它如何依赖计算/数据网格来获得可靠的、独立的消息代理,因为它将依赖某种类似Kafka的消息代理。
一个小型应用程序可以放弃一种类型来使用另一种类型的次要功能,但是对这两种功能需求很高的应用程序实际上可能需要使用这两种类型的系统。
例如,如果您正在构建一个具有多个数据源的大容量数据管道,并且必须使用一个持久的message,那么您可能不得不使用Kafka,但是如果您同样对低延迟查询下载有很强的要求,那么您还需要使用一个计算网格,无论是用于缓存还是用于分布式计算。
发布于 2018-08-07 07:09:37
最近我一直在思考同样的问题。我得出的结论是:
使用IMDG (如Ignite/Hazelcast ),如果:
使用Kafka,如果:
而且,它们不一定是相互排斥的。您可能会发现,后者在您的组织中是有意义的。然而,一些消费者可能对IMDG/IMCG有特定的用例,并且更愿意进入企业宽幅Kafka平面获取种子数据,并将其IMDG/IMCG内部数据结构用于仅在网格中使用的中间数据流,因此没有真正的理由将这些数据重新转移到Kafka。它可能会将结果重新转移到卡夫卡,以便进一步传播给企业的其他成员。
顺便说一句,IMDGs/IMCGs (如ignite和hazelcast )可以提供pub/sub,在数据弹性方面和Kafka一样耐用,并提供流处理。
https://stackoverflow.com/questions/50149467
复制相似问题