【问题标题】:Kafka Streams: Increasing topic partitions for an application performing a KTable-KTable foreign key joinKafka Streams:为执行 KTable-KTable 外键连接的应用程序增加主题分区
【发布时间】:2022-01-09 07:42:31
【问题描述】:

我发现的大部分信息都与主键连接有关。我了解外键连接是 Kafka Streams 的一个相对较新的功能。我对这将如何扩展感兴趣。我知道 Kafka Streams 的并行性受到每个主题的分区数量的限制,但是我对增加输入主题分区意味着什么有一些疑问。

  • 外键连接是否对共同划分输入主题有相同的要求?也就是说,两个主题是否需要具有相同数量的分区?
  • 如何在应用程序在生产中运行数月或数年之后添加分区?支持每个 KTable 的更改日志主题存储来自某些输入主题分区的数据。如果要增加输入主题中的分区,这对我们的 KTables 的状态存储和更改日志有何影响?据推测,我们不能只是重新开始并丢失该数据,因为它已经积累了数月和数年,并且对于执行联接至关重要。它可能不会很快被上游数据取代。我们是否需要清除我们的状态存储、创建新的输入主题并将所有 KTable 更改日志主题数据重新发送给它们?
  • 其他内部“订阅”主题怎么样?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    外键连接是否对共同划分输入主题有相同的要求?也就是说,两个主题是否需要具有相同数量的分区?

    没有。更多详情请查看https://www.confluent.io/blog/data-enrichment-with-kafka-streams-foreign-key-joins/

    应用程序在生产环境中运行数月或数年之后如何添加分区?

    即使您不使用 Kafka Streams,您也无法真正做到这一点。问题是,您的输入数据是按键分区的,如果您添加一个分区,输入主题中的分区就会中断。 -- 推荐的模式是创建一个具有不同分区数的新主题。

    支持每个 KTable 的更改日志主题存储来自某些输入主题分区的数据。如果要增加输入主题中的分区,这对我们的 KTables 的状态存储和更改日志有何影响?

    它会破坏应用程序。事实上,Kafka Streams 会检查并在检测到输入主题分区的数量与更改日志主题分区的数量不匹配时引发异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 2021-03-13
      • 2020-11-03
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多