Apache Beam 和 Apache Kafka 在流处理方面有什么区别?我也在努力掌握技术和程序上的差异。
请通过您的经验报告帮助我理解。
Apache Beam 和 Apache Kafka 在流处理方面有什么区别?我也在努力掌握技术和程序上的差异。
请通过您的经验报告帮助我理解。
Beam 是一种 API,它以一种统一的方式使用 Flink、Storm 等底层流处理引擎。
Kafka 主要是一个集成平台,它提供基于独立应用程序用于相互通信的主题的消息传递系统。
在这个消息系统(以及生产者/消费者 API)之上,Kafka 提供了一个 API 来使用消息作为数据和主题作为输入或输出来执行流处理。Kafka 流处理应用程序是独立的 Java 应用程序,充当常规的 Kafka 消费者和生产者(这对于了解如何管理这些应用程序以及如何在流处理应用程序实例之间共享工作负载很重要)。
简而言之,Kafka 流处理应用程序是独立的 Java 应用程序,在 Kafka 集群之外运行,从 Kafka 集群提供数据并将结果导出到 Kafka 集群。对于其他流处理平台,流处理应用程序在集群引擎内部运行(并由该引擎管理),从其他地方提供数据并将结果导出到其他地方。
Kafka 和 Beam Stream API 之间的一大区别是 Beam 区分了数据流中的有界数据和无界数据,而 Kafka 没有这种区别。因此,使用 Kafka API 处理有界数据必须使用定时/会话窗口手动完成以收集数据。
Beam 是一种编程 API,但不是您可以使用的系统或库。有多个 Beam runner可以实现 Beam API。
Kafka 是一个流处理平台,附带 Kafka Streams(又名 Streams API),这是一个 Java 流处理库,用于从 Kafka 主题读取数据并将结果写回 Kafka 主题。