首页 > 解决方案 > Kakfa - 在运行时更改拓扑属性

问题描述

我目前正在运行一组拓扑,我想在运行时更改拓扑属性,例如

  1. 更改线程数
  2. 将源主题添加到现有主题列表
  3. 添加接收器

是否可以在不停止 kafka 流的情况下在运行时更改属性。我的一个想法是停止 kafka 流,然后加载这些配置并重新开始。但似乎不是一个理想的解决方案。任何人都可以提出更好的方法吗?

标签: javaapache-kafkaapache-kafka-streams

解决方案


这取决于。更改实例的线程数很容易。您只需要客户close()KafkaStreams,更改配置,创建一个新客户端并重新启动它。大多数人会通过完全重启相应的 JVM 来做到这一点。

添加源主题和接收主题并不容易。特别是对于源主题,您需要停止所有实例,然后将它们一一重启,包括新的源主题。原因是,使用的分区分配器假定所有实例都订阅完全相同的主题。如果违反此假设,即如果某些实例订阅了新主题,则新主题的这些分区可能会分配给尚未更新的“旧”实例,这将导致“旧”实例崩溃实例不知道如何处理它没有订阅的分配分区。


推荐阅读