我正在使用 Kafka
以及 Zookeeper
作为我的数据管道的主要组件,它每秒处理数千个请求。我正在使用 Samza
作为实时数据处理工具,我需要对数据进行小的转换。
我的问题是我的一个消费者 ConsumerA
)使用来自的多个主题 Kafka
并处理它们。基本上是创建一个摘要的主题是消化。我还想把这些数据作为一个单独的主题推送给Kafka,但这形成了一个关于Kafka和我的组件的循环。
这就是困扰我的,这是Kafka理想的建筑吗?
我应该做所有的处理吗 Samza
仅将摘要信息存储到 Kafka
从 Samza
. 但是我将要做的处理量非常大,这就是为什么我要使用一个单独的组件来处理它( ComponentA
). 我想我的问题可以推广到所有类型的数据管道。
那么,组件在数据管道中既是消费者又是生产者,这是一种好的实践吗?
1条答案
按热度按时间7fhtutme1#
只要萨姆扎写的主题不同于它所消费的,不,就不会有问题。从Kafka读写的samza作业是建筑的标准和意图。也可以有从另一个系统引入一些数据的samza作业,或者将kafka中的一些数据写入另一个系统的作业(甚至是根本不使用kafka的作业)。
然而,让一个作业读写同一个主题,会产生一个循环,这是应该避免的。这有可能填补你的Kafka经纪人的磁盘非常快。