Kafka内部数据管理

问题描述

有人可以帮助我了解在以下情况下会发生什么:

主题A的流对它执行了一些各种操作,这些操作导致生成多个内部kafka主题,例如: KSTREAM-REDUCE-0000000014 KSTREAM-JOIN-0000000358 等

这些在拓扑中显示为“消费者组名称生成名称”

主题A加入主题B ...必须重新设置关键字B才能与A一起加入内部主题“ group-Re-KeyB”。

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

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

这些内部主题发生了什么?例如,“ group-Re-KeyB”将具有所有数据来进行到A的联接,还是只知道新的主题B记录?

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...