我使用Kafka
和Zookeeper
作为我的数据管道的主要组件,每秒处理数千个请求。我正在使用Samza
作为实时数据处理工具,用于我需要对数据进行的小型转换。
我的问题是,我的一位消费者(假设为ConsumerA
)会消耗Kafka
中的多个主题并对其进行处理。基本上创建消化主题的摘要。我还想将这些数据作为一个单独的主题推送到Kafka,但这会在Kafka和我的组件上形成一个循环。
这是困扰我的,这是卡夫卡的理想建筑吗?
我是否应该在Samza
中执行所有处理,并仅将消化(摘要)信息存储到Kafka
的{{1}}。但是我要做的处理量非常大,这就是为什么我想为它使用一个单独的组件(Samza
)。我想我的问题可以推广到所有类型的数据管道。
组件成为数据管道中的消费者和生产者是一个好习惯吗?
答案 0 :(得分:1)
只要Samza写的不同主题而不是消费,不会,没有问题。读取和写入Kafka的Samza工作是该规范并且是该架构的预期。也可以让Samza的工作从另一个系统中获取一些数据,或者将一些数据从Kafka写入另一个系统(或者甚至根本不使用Kafka的工作)。
有一个工作读取和写入同一主题,是,你得到一个循环,并避免。这有可能填补你的卡夫卡经纪人。磁盘真的很快。