Kafka Consumer 和 Kafka Streams 之间有什么区别吗?

Is there any difference between KafkaConsumer and KafkaStreams?

我正在使用 Apache Kafka 0.8.2.1,计划升级我的应用程序以使用 Apache Kafka 1.0.0。 当我检查 Kafka Streams 时,我对 KafkaConsumer 和 KafkaStreams 之间的区别有一些疑问。

基本上,KafkaConsumer 必须使用轮询方法从代理消费。我可以在轮询时指定一些持续时间,每当我得到 ConsumerRecored 时,我都可以处理它以生成一些有用的信息。 另一方面,KafkaStream 无需指定任何轮询持续时间,只需调用 start() 方法即可。

我知道 KafkaConsumer 基本上习惯于 consume 从字面上看,从代理和 KafkaStreams 可以做各种事情,例如 Map-Reduce 或与数据库交互,甚至重新生成到其他卡夫卡或任何其他系统。

所以,这是我的问题。 KafkaConsumer 和 KafkaStream 基本上有什么区别吗(换句话说,当涉及到 apache kafka 库的级别时。)?

是的,Kafka Consumer 和 Kafka Streams 是有区别的。

Kafka Consumer 可用于接收端接收数据和处理以供以后计算(基于topic和partition) Kafka Streams API 将已发布的内容实时存储和分发到各种应用程序和系统,供读者使用。

如您所说,它们提供不同的功能:

  • KafkaStreams 允许对记录执行复杂的处理
  • KafkaConsumer 允许从 Kafka 集群接收记录

KafkaStreams 在幕后使用常规的 KafkaConsumers 和 KafkaProducers 客户端来检索记录并将处理结果发送给代理。它为许多配置使用预定义值,但仍然公开大量客户端配置。

KafkaStreams 是使用 Kafka 客户端(消费者和生产者)的常规(尽管非常先进)Kafka 应用程序。它的 API 允许更高级别的应用程序专注于业务逻辑而不是 Kafka 细节。

作为 Apache Kafka 发行版的一部分,它使用最佳实践和技巧来充分利用 Kafka。