首页 文章

Kafka:Consumer API vs Streams API

提问于
浏览
47

我最近开始学习Kafka并最终得到这些问题 .

  • Consumer和Stream有什么区别?对我来说,如果任何工具/应用程序消费来自Kafka的消息是Kafka世界中的消费者 .

  • Stream是如何不同的,因为这也消耗或产生消息给Kafka?为什么需要它,因为我们可以使用Consumer API编写我们自己的消费者应用程序并根据需要处理它们或将它们从消费者应用程序发送到Spark?

我对此做了谷歌,但没有得到任何好的答案 . 对不起,如果这个问题太琐碎了 .

1 回答

  • 62

    Update April 09, 2018 :现在您还可以使用KSQL(Kafka的流式SQL引擎)来处理Kafka中的数据 . KSQL Build 在Kafka之上's Streams API, and it too comes with first-class support for 3028685 and 3028686 . Think of it like the SQL brother of Kafka Streams where you don' t必须用Java或Scala编写任何编程代码 .

    Consumer API和Streams API有什么区别?

    Kafka的Streams API(https://kafka.apache.org/documentation/streams/) Build 在Kafka 's producer and consumer clients. It'之上,比Kafka消费者客户端更强大,更具表现力 . 以下是Kafka Streams API的一些功能:

    • 支持一次性处理语义(Kafka版本0.11)

    • 支持容错状态处理,包括流joinsaggregationswindowing

    • 支持event-time processing以及基于processing-timeingestion-time的处理

    • 拥有对streams and tables的一流支持,这是流处理与数据库相遇的地方;实际上,大多数流处理应用程序都需要流和表来实现它们各自的用例,所以如果流处理技术缺少两个抽象中的任何一个(比如说,不支持表),你就会被卡住或必须自己手动实现这个功能(祝你好运......)

    • 支持interactive queries将最新处理结果公开给其他应用程序和服务)

    • 更具表现力:它带有(1)函数编程风格DSL,其操作如 mapfilterreduce 以及(2)命令式样式Processor API例如进行复杂事件处理(CEP),以及(3)您甚至可以组合DSL和处理器API .

    有关Kafka Streams API的更详细但仍然是高级别的介绍,请参阅http://docs.confluent.io/current/streams/introduction.html,这也有助于您了解与较低级别Kafka客户端客户端的差异 . 这周还有Docker-based tutorial for the Kafka Streams APII blogged about .

    那么Kafka Streams API是如何不同的,因为这也消耗或产生消息给Kafka?

    是的,Kafka Streams API既可以读取数据,也可以将数据写入Kafka .

    为什么需要它,因为我们可以使用Consumer API编写我们自己的消费者应用程序并根据需要处理它们或将它们从消费者应用程序发送到Spark?

    是的,您可以编写自己的消费者应用程序 - 正如我所提到的,Kafka Streams API使用Kafka消费者客户端(以及 生产环境 者客户端)本身 - 但您必须手动实现Streams API提供的所有独特功能 . 请参阅上面的列表,了解“免费”获得的所有信息 . 因此,相当罕见的情况是用户会选择低级别的消费者客户端而不是更强大的Kafka Streams API .

相关问题