Kafka Consumer 和 Kafka Streams 之间有啥区别吗? [复制]

Posted

技术标签:

【中文标题】Kafka Consumer 和 Kafka Streams 之间有啥区别吗? [复制]【英文标题】:Is there any difference between KafkaConsumer and KafkaStreams? [duplicate]Kafka Consumer 和 Kafka Streams 之间有什么区别吗? [复制] 【发布时间】:2018-07-15 04:49:27 【问题描述】:

我正在使用 Apache Kafka 0.8.2.1,计划升级我的应用程序以使用 Apache kafka 1.0.0。 在检查 Kafka Streams 时,我遇到了一些关于 KafkaConsumer 和 KafkaStreams 之间区别的问题。

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

我知道KafkaConsumer基本上习惯了consume字面意思,从broker和KafkaStreams可以做各种事情,比如Map-Reduce或与数据库交互,甚至重新生产到其他kafka或任何其他系统。

那么,有我的问题。 KafkaConsumer 和 KafkaStream 基本上有什么区别(换句话说,当谈到 apache kafka 库的级别时。)?

【问题讨论】:

查看文档中的架构部分:kafka.apache.org/10/documentation/streams/architecture 【参考方案1】:

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

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

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

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

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

【讨论】:

最大的不同可能是,Kafka Streams 允许您构建容错的有状态应用程序,而普通的 KafkaConsumer 对此不提供任何支持。【参考方案2】:

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

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

【讨论】:

以上是关于Kafka Consumer 和 Kafka Streams 之间有啥区别吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

kafka的consumer.properties的group.id到底有啥用

kafka consumer offset机制

Kettle安装Kafka Consumer和Kafka Producer插件

kafka consumer重新连接后如何获取当前最新数据

总结kafka的consumer消费能力很低的情况下的处理方案

Stream From 整合 Kafka