【发布时间】: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,但这里不是这种情况。
【问题讨论】:
-
我会建议您探索 kafka 流 api,因为您的要求非常适合它
-
感谢您的建议。
-
不是——这个问题专门针对 Samza。
标签: apache-kafka