【问题标题】:Kafka internal data managementKafka内部数据管理
【发布时间】:2020-08-17 20:04:14
【问题描述】:

谁能帮我理解以下场景会发生什么:

来自主题 A 的流对其执行了一些不同的操作,导致生成多个内部 kafka 主题,例如: KSTREAM-REDUCE-0000000014 KSTREAM-JOIN-0000000358 等等

这些在拓扑中显示为“consumer-group-name-generated-name”

主题 A 加入主题 B ... B 必须重新设置密钥才能与 A 加入一个内部主题“group-Re-KeyB”。

如果我的拓扑发生变化,那么除非所有这些内部主题的名称相同,否则我需要更改我的消费者组名称或随机生成的 KSTREAM-REDUCE-0000000014 可能包含不同类型的对象。

如果我将新消费者组的偏移量设置为从前一个消费者组最新提交,我们将不会从头开始重播主题 A 或 B。

这些内部主题会发生什么?例如,“group-Re-KeyB”会拥有所有数据来加入 A 还是只知道新的主题 B 记录??

【问题讨论】:

    标签: apache-kafka kafka-consumer-api apache-kafka-streams


    【解决方案1】:

    如果您更改拓扑并更改名称,则新旧拓扑很可能不兼容,建议重置您的应用程序并让新拓扑从头开始重新处理所有数据(以重建所需的内部状态):@987654321 @

    作为替代方案,您可以为所有运算符指定显式名称(从 Kafka Stream 2.4 开始),例如,您可以使用 Materialzed.as(...) 来命名状态存储和相应的更改日志主题。显式命名避免了内部主题的名称发生变化,因此,即使您更改了拓扑,您也可以在不使用新的application.id 的情况下重新启动新的拓扑,从而保留旧拓扑的状态。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2023-03-07
      • 2017-07-17
      • 2011-11-14
      • 2021-04-15
      • 1970-01-01
      相关资源
      最近更新 更多