【问题标题】:Which version of Kafka Stream would be more efficient?哪个版本的 Kafka Stream 会更高效?
【发布时间】:2019-07-27 01:03:23
【问题描述】:

我正在尝试编写一个 Kafka 流,我必须加入两个流,我想问一下哪个选项更有效?

我有一个带有 AvroObject1 的 Kafka TopicA 和 1000 万个 AvroObject1,另一个带有 AvroObject2 的 TopicB 和 50000 个 AvroObject2。

以下哪种流连接配置会更有效(或者根本不会有任何区别?)

avroObject1Stream
   .join(avroObject2Stream)

avroObject2Stream
  .join(avroObject1Stream)

作为后续问题,在 TopicA 我有 1 天的保留期和 TopicB 10 天的保留期,我使用以下 JoinWindows 配置....

avroObject1Stream
   .join(avroObject2Stream,
            JoinWindow.of(Duration.ofDays(10)).grace(Duration.ofDays(10)))

现在我知道流加入主题的日志保留时间是 JoinWindows 维护时间 + 1 天(开箱即用),但这对于 TopicA 1 天保留意味着什么,AvroObject1 会在它们年长时从 TopicA 中消失1 天,但 1 天后它们是否仍会在 Stream Join Topic 中可见,或者 Kafka 保留操作会使它们从 Join Topic 中消失?

谢谢解答...

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    这是流处理,因此,“对象数量”无关紧要。无论如何,流在概念上是无限的。因此,这两个程序是相同的,内部连接没有区别,流是左,哪个流是右。

    join 的 changelog 保留时间不会影响输入主题的保留时间。对于连接,基本上发生的情况是,每个输入记录都被复制到本地存储和附加的更改日志主题中。如果您的数据从输入主题中删除,则数据不会从更改日志主题的存储中删除。商店保留时间过后,商店和变更日志主题将删除其记录副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      相关资源
      最近更新 更多