【问题标题】:Producer-consumer processing pattern for Kafka processingKafka 处理的生产者-消费者处理模式
【发布时间】:2019-01-03 09:41:23
【问题描述】:

我正在实现一个类似于下图的流式传输管道:

*K-topic1* ---> processor1 ---> *K-topic2* ---> processor2 --> 
*K-topic3* ---> processor3 --> *K-topic4*

K-topic 组件代表 Kafka 主题和处理器组件代码 (Python/Java)。

对于处理器组件,其目的是从主题读取/使用数据,对其执行一些处理/ETL,并将结果持久化到链中的下一个主题以及持久存储,例如 S3。

我对设计方法有疑问。

在我看来,每个处理器组件都应该封装消费者和生产者的功能。

最好的方法是拥有一个可以包含 KafkaConsumer 和 KafkaProducer 类的处理器模块/类吗?迄今为止,我见过的大多数示例都有单独的消费者和生产者组件,它们分别运行,并且需要运行双倍数量的组件 而不是在每个处理器对象中封装生产者和消费者。

欢迎任何建议/参考。

这个问题不同于

Designing a component both producer and consumer in Kafka

因为那个问题特别提到了使用 Samza,但这里不是这种情况。

【问题讨论】:

标签: apache-kafka


【解决方案1】:

目的是从主题中读取/使用数据,对其执行一些处理/ETL,并将结果持久化到链中的下一个主题

这正是 Kafka Streams 和/或 KSQL 的优势所在。您可以使用Processor API,但根据您的描述,我认为您只需要 Streams DSL API

将结果持久化到链中的下一个主题以及持久化存储,例如 S3。

从上述主题中,您可以使用 Kafka Connect Sink 将主题数据获取到这些其他外部系统中。无需编写消费者来为您执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2017-02-09
    • 2021-04-30
    • 1970-01-01
    • 2018-11-17
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多