我目前正在探索使用 flink 进行流处理的领域。然而,到目前为止,我阅读的大多数专业文章都在谈论 flink 和 kafka。然而,我没有找到一个明确的解释,为什么这对组合看起来如此合乎逻辑,也没有解释 kafka 做什么 flink 不能做什么,反之亦然。
到目前为止,我发现了以下内容:
- flink 不能使用 readCsvFile 进行 PROCESS_CONTINUOUSLY,而 kafka 可以在这方面提供支持,
- kafka 可以进行流聚合,但与 kafka 相比似乎有限(不确定)。
因此,请毫不犹豫地添加您到目前为止对这些系统的了解和经验。非常感谢您。
的确,乍一看区别并不明显。
Apache Kafka 是一种处理实时信息并将其快速传送给消费者的解决方案,这意味着它是一个消息代理。
Apache Flink 是一个流处理框架。涉及数据内存分布式计算。
也就是说,基本上,Kafka 将扮演消息路由器的角色,而 Apache Flink 将处理数据。
正如您在下面的示例架构中看到的那样,Kafka 将允许从异构源发布消息,而 Apache Flink 将通过应用窗口化或减少功能来处理这些数据。
如果您查看 Kafka 文档,他们会在 Kafka 之上引入一个名为 Kafka Stream 的新功能(它不是原始 Kafka 的一部分)。这也是一个流处理框架,具有像 Apache Flink 一样处理数据的能力。