Apache Ignite与Apache Kafka的比较

4

一个有点新手的问题。
如果我想使用Apache Ignite进行消息传递和事件处理,那么还需要使用Kafka吗?
实际上,Kafka相比Ignite会给我带来哪些(如果有的话)额外的功能呢?
提前感谢。

1个回答

5
Kafka更具可伸缩性,基于磁盘,面向发布-订阅,并且与大多数重要的流处理框架(如flink或Spark)具有本地和可靠的集成。
然而,Ignite是一种内存网格,我将其用作补充,以制作快速应用程序,例如微服务、Spark作业等其他软件,将其用作缓存、索引、内存SQL、键值或分布式数据库。 Ignite具有多种用途的API,但我认为它们不想与Apache Kafka竞争。
它们是不同的,但在您的情况下,如果您想发布事件并由多个消费者使用它们,则Kafka可能更合适。

嗨,感谢您的快速回复。以下是一些后续问题(仅供我理解):1. Ignite 2.1引入了持久性、基于磁盘的功能,这与Kafka的功能类似吗?2. Ignite还具有类似Spark的ML组件吗���3. Ignite的分布式特性也使其高度可扩展和可靠,至少需要3个节点?我很高兴使用Kafka + Ignite,但真正想知道仅使用Ignite的限制在哪里。 - sigmazen
4
"Ignite对于事件和数据的一致性非常有用,无论是在内存中还是在磁盘上。但是,它不能像Kafka那样提供消息传递的保证。我的建议是:如果您需要消息传递的保证,应该将Kafka与Ignite一起使用。Ignite已经通过其KafkaStreamer与Kafka进行了集成:https://apacheignite-mix.readme.io/docs/kafka-streamer" - Dmitriy
感谢 @Dmitriy 的额外见解。所以,如果我可以通过我的客户端处理保证(即消息是幂等的并且可以被重新发送),那么我可以仅使用Ignite来简化事情...否则我将包括Kafka。太棒了。谢谢你们两个。 - sigmazen
这里有一些额外的信息:http://apache-ignite-users.70518.x6.nabble.com/Messaging-Reliability-td3882.html,而且这篇文章也很好:https://www.infoq.com/articles/no-reliable-messaging。 - sigmazen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接