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到底有啥用
Kettle安装Kafka Consumer和Kafka Producer插件