如何解决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
的情况下重新启动新拓扑,从而保留旧拓扑的状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。