gpt4 book ai didi

apache-kafka - 卡夫卡 : Consumer API vs Streams API

转载 作者:行者123 更新时间:2023-12-03 05:34:15 25 4
gpt4 key购买 nike

我最近开始学习 Kafka 并最终解决了这些问题。

  • 消费者和流有什么区别?对我来说,如果任何工具/应用程序消费来自 Kafka 的消息,那么它就是 Kafka 世界中的消费者。
  • Stream 有什么不同,因为它也从 Kafka 消费或向 Kafka 生产消息?为什么需要它,因为我们可以编写自己的消费者
    应用程序使用消费者 API 并根据需要处理它们还是从消费者应用程序将它们发送到 Spark?

  • 我在这方面做了谷歌,但没有得到任何好的答案。对不起,如果这个问题太微不足道了。

    最佳答案

    2021 年 1 月更新:我写了一个 four-part blog series on Kafka fundamentals我建议阅读这些问题。对于这个问题,请查看 part 3 on processing fundamentals .
    2018 年 4 月更新 : 现在你也可以用ksqlDB ,Kafka 的事件流数据库,用于处理 Kafka 中的数据。 ksqlDB 建立在 Kafka 的 Streams API 之上,它也提供一流的 Streams 和 Tables 支持。

    what is the difference between Consumer API and Streams API?


    Kafka 的 Streams 库 ( https://kafka.apache.org/documentation/streams/) 建立在 Kafka 生产者和消费者客户端之上。与普通客户端相比,Kafka Streams 明显更强大,也更具表现力。
    与普通消费者相比,使用 Kafka Streams 编写从头到尾的实际应用程序要简单得多,速度也更快。
    以下是 Kafka Streams API 的一些功能,其中大部分功能不受消费者客户端支持(这需要您自己实现缺失的功能,基本上是重新实现 Kafka Streams)。
  • 通过 Kafka 事务支持一次处理语义( what EOS means )
  • 支持容错有状态(当然也包括无状态)处理,包括流处理 joins , aggregations , 和 windowing .换句话说,它支持开箱即用地管理应用程序的处理状态。
  • 支持 event-time processing以及基于processing-time的处理和 ingestion-time .它还可以无缝处理 out-of-order data .
  • 对两者都有一流的支持 streams and tables ,这是流处理遇到数据库的地方;在实践中,大多数流处理应用程序都需要流和表来实现它们各自的用例,所以如果流处理技术缺少这两个抽象中的任何一个(比如,不支持表),你要么被卡住,要么必须自己手动实现这个功能(祝你好运...)
  • 支持 interactive queries (也称为“可查询状态”)以通过请求-响应 API 向其他应用程序和服务公开最新的处理结果。这对于只能执行请求-响应,而不能执行流式处理的传统应用程序尤其有用。
  • 更具表现力:它附带 (1) 函数式编程风格 DSL使用诸如 map 之类的操作, filter , reduce以及 (2) 命令式风格 Processor API例如进行复杂事件处理 (CEP),以及 (3) 您甚至可以将 DSL 和处理器 API 结合起来。
  • 有自己的testing kit用于单元和集成测试。

  • http://docs.confluent.io/current/streams/introduction.html有关 Kafka Streams API 的更详细但仍然高级的介绍,这也应该有助于您了解与较低级别的 Kafka 消费者客户端的差异。
    除了 Kafka Streams,您还可以使用流数据库 ksqlDB在 Kafka 中处理您的数据。 ksqlDB 将其存储层 (Kafka) 与其计算层(ksqlDB 本身;这里的大部分功能使用 Kafka Streams)分开。它支持与 Kafka Streams 基本相同的功能,但您编写流式 SQL 语句而不是 Java 或 Scala 代码。您可以通过 UI、CLI 和 REST API 与 ksqlDB 交互;它还有一个本地 Java 客户端,以防您不想使用 REST。最后,如果您不想自行管理您的基础设施, ksqlDB is available as a fully managed service在融合云中。

    So how is the Kafka Streams API different as this also consumes from or produce messages to Kafka?


    是的,Kafka Streams API 既可以读取数据,也可以向 Kafka 写入数据。它支持 Kafka 事务,因此您可以例如从一个或多个主题读取一条或多条消息,如果需要,可选择更新处理状态,然后将一条或多条输出消息写入一个或多个主题——所有这些都作为一个原子操作。

    and why is it needed as we can write our own consumer application using Consumer API and process them as needed or send them to Spark from the consumer application?


    是的,您可以编写自己的消费者应用程序——正如我提到的,Kafka Streams API 使用 Kafka 消费者客户端(加上生产者客户端)本身——但是您必须手动实现 Streams API 提供的所有独特功能.有关“免费”获得的所有内容,请参阅上面的列表。因此,用户会选择普通的消费者客户端而不是更强大的 Kafka Streams 库是一种罕见的情况。

    关于apache-kafka - 卡夫卡 : Consumer API vs Streams API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44014975/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com