【问题标题】:Designing a component both producer and consumer in Kafka在 Kafka 中设计生产者和消费者组件
【发布时间】:2015-07-01 15:32:07
【问题描述】:

我使用KafkaZookeeper 作为我的数据管道的主要组件,每秒处理数千个请求。我使用Samza 作为实时数据处理工具,用于我需要对数据进行的小型转换。

我的问题是我的一位消费者(比如说ConsumerA)使用来自Kafka 的几个主题并处理它们。基本上是对所消化的主题进行总结。我还想将这些数据作为一个单独的主题推送到 Kafka,但这会在 Kafka 和我的组件上形成一个循环。

这是困扰我的问题,这是 Kafka 中想要的架构吗?

我是否应该在Samza 中进行所有处理,并仅将来自Samza 的摘要(摘要)信息存储到Kafka。但是我要做的处理量非常大,这就是为什么我想为它使用一个单独的组件(ComponentA)。我想我的问题可以推广到所有类型的数据管道。

那么,组件在数据管道中既是消费者又是生产者是一种好的做法吗?

【问题讨论】:

  • “我还想将此数据作为单独的主题推送到 Kafka,但这会在 Kafka 和我的组件上形成一个循环。”如果您要发布到单独的主题,它如何创建循环?假设您只对消费除新创建的主题之外的所有主题感兴趣。此外,您的架构中存在“ConsumerA”和 Samza 是否有任何理由?鉴于 Samza 将执行与 ConsumerA 相同的转换?
  • @Naveen 他们不会将相同的主题推送到 kafka,但组件方面仍然会在 ComponentA 和 kafka 之间形成一个循环。 (ComponentA 是生产者和消费者)。
  • 关于 samza 不,我在问我是否应该在 Samza 而不是我的组件上进行处理。在这种情况下,可以避免循环,但由于处理量很高,我想在第二个组件上进行
  • “组件明智仍然形成循环” - 我不明白,为什么这是一个问题?您是否担心网络流量?
  • 这就是我要问的。它会产生问题吗?我看不出这可能会造成任何伤害的任何情况,但我仍然觉得这是一种需要避免的架构。

标签: message-queue apache-kafka producer-consumer data-integration apache-samza


【解决方案1】:

只要 Samza 所写的主题与它所消费的主题不同,不,就不会有问题。读取和写入 Kafka 的 Samza 作业是架构的规范和意图。还可以有 Samza 作业,将一些数据从另一个系统引入,或者将一些数据从 Kafka 写入不同系统的作业(甚至是根本不使用 Kafka 的作业)。

但是,在同一主题中进行读取和写入的作业是您会遇到循环并且需要避免的地方。这有可能非常快地填满您的 Kafka 代理的磁盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2018-01-07
    • 2018-02-08
    相关资源
    最近更新 更多