我有一些imdg的经验,我对Kafka还比较陌生。我试图理解Kafka的用例。我知道这是一个流媒体/消息平台。在现代内存数据网格中,它的许多问题都有一些矛盾之处。当有人更喜欢使用Kafka和你更喜欢使用imdg时,你能稍微解释一下用例吗。我需要画一个平行线。
我给你举个例子。我注意到kafka用于数据复制。尽管可能,我觉得imdg在这方面更有能力和自动化。
另外,我对这两种技术如何相互补充很感兴趣,因为我不认为它们是直接竞争的。
我有一些imdg的经验,我对Kafka还比较陌生。我试图理解Kafka的用例。我知道这是一个流媒体/消息平台。在现代内存数据网格中,它的许多问题都有一些矛盾之处。当有人更喜欢使用Kafka和你更喜欢使用imdg时,你能稍微解释一下用例吗。我需要画一个平行线。
我给你举个例子。我注意到kafka用于数据复制。尽管可能,我觉得imdg在这方面更有能力和自动化。
另外,我对这两种技术如何相互补充很感兴趣,因为我不认为它们是直接竞争的。
2条答案
按热度按时间xfyts7mz1#
我最近一直在思考同一个问题。我得出以下结论:
在下列情况下,使用imdg,如ignite/hazelcast:
您的处理用例在计算网格中是有意义的,而您的网格(其中可能包含许多应用程序/进程)是持久的分布式数据流的唯一使用者
在下列情况下使用Kafka:
您有一个处理层的异构环境,需要一个独立的数据集成层来提供持久的分布式数据流
而且,它们不一定相互排斥。您可能会发现后者在您的组织中是有意义的。然而,一些消费者可能有imdg/imcg的特定用例,他们更喜欢利用企业范围内的kafka平面获取种子数据,并将其imdg/imcg内部数据结构重新用于网格内专门使用的中间数据流,因此没有真正的理由将这些数据流重新转移到kafka。它可能会将结果重新转移回Kafka,以便进一步传播给企业的其他部门。
顺便说一句,imdgs/imcgs(如ignite和hazelcast)可以提供pub/sub,在数据弹性方面与kafka一样耐用,并在其上提供流处理。
svujldwt2#
这两种类型的系统确实有一些特征重叠,但它们仍然是两种不同类型的系统,具有不同的主要目标。因为我们无法比较它们的主要特征。
kafka主要是一个pub/sub持久消息代理。数据网格主要在内存缓存系统中。这是第一个区别或关键属性,人们可以选择使用它们中的任何一个。
在第二个层次上,我认为界线变得模糊,这两种类型的系统都提供了某种分布式计算能力(kafka streams、ignite或hazelcast计算网格/服务)和数据接收功能。然而,这不能作为主要的选择标准。
这两种类型在各自的主要目的上并不真正直接相互竞争。基于流的计算引擎可以使用数据网格进行计算或进行 transient 缓存,但我不认为它如何依赖计算/数据网格来实现可靠的独立消息代理,因为它依赖于类似kafka的东西。
小型应用程序可能不需要一种类型来使用另一种类型的次要功能,但是对这两种类型都有高要求的应用程序实际上可能需要同时使用这两种类型的系统。
例如,如果您正在构建一个包含多个数据源的大容量数据管道,并且您必须使用一个持久的消息代理,那么您可能必须使用kafka,但是如果您同样对低延迟查询downstream有很强的要求,那么您还需要使用计算网格,无论是用于缓存还是用于分布式计算。