我正在实现一个类似于下图的流水线:
*K-topic1* ---> processor1 ---> *K-topic2* ---> processor2 -->
*K-topic3* ---> processor3 --> *K-topic4*K主题组件表示Kafka主题和处理器组件代码(Python/Java)。
对于处理器组件,其目的是读取/使用主题中的数据,对其执行一些处理/ETL,并将结果持久化到链中的下一个主题以及持久存储,如S3。
我有一个关于设计方法的问题。
在我看来,每个处理器组件都应该封装消费者和生产者功能。
最好的方法是拥有一个可以包含KafkaConsumer和KafkaProducer类的处理器模块/类吗?到目前为止,我见过的大多数示例都有单独的消费者和生产者组件,它们是单独运行的,需要运行两倍数量的组件,而不是将生产者和消费者封装在每个处理器对象中。
欢迎任何建议/参考。
这个问题不同于
Designing a component both producer and consumer in Kafka
正如这个问题特别提到的使用Samza,这里不是这种情况。
发布于 2019-01-04 01:01:15
的目的是读取/使用主题中的数据,对其执行一些处理/ETL,并将结果持久化到链中的下一个主题
这正是Kafka Streams和/或KSQL的强项。您可以使用Processor API,但从您所描述的内容来看,我认为您只需要Streams DSL
将结果持久化到链中的下一个主题以及持久化存储,比如S3。
通过上面的主题,您可以使用Kafka Connect Sink将主题数据获取到其他外部系统中。不需要编写一个消费者来为你做这件事。
https://stackoverflow.com/questions/54019665
复制相似问题