【问题标题】:Kafka - increase partition count of existing topic through Confluent REST ApiKafka - 通过 Confluent REST Api 增加现有主题的分区数
【发布时间】:2022-06-20 15:58:58
【问题描述】:

我需要将分区添加到现有的 Kafka 主题。 我知道可以使用/bin/kafka-topics.sh script 来实现这一点,但我更愿意通过Confluent REST api 来实现这一点。

据我所知,api 参考中没有记录的端点,但我想知道这里的其他人是否能够完成这项工作。

编辑:由于这里似乎无法使用 REST api,我想知道在容器化设置中将分区添加到现有主题的最佳做法是什么。例如。如果有将客户 ID 映射到特定分区的自定义分区方案。在这种情况下,应用容器需要调整 kafka 容器的分区数。

【问题讨论】:

    标签: rest apache-kafka kafka-rest


    【解决方案1】:

    Confluent REST 代理没有用于主题更新管理的此类端点。

    您需要使用 shell 脚本或 shell 脚本使用的相应 AdminClient 类

    【讨论】:

    • 谢谢。你知道容器化设置的最佳实践是什么,应用程序既不能使用脚本也不能调用类?我看到的唯一解决方案是使用内部调用脚本的 kafka 容器部署一个小型 Web 服务。
    • 不确定“不能调用类”是什么意思。您只需要导入 Kafka 客户端库,但这需要 REST 服务才能重复使用。或者你可以简单地将脚本 docker run(或 k8s 的 kubectl exec)脚本作为独立容器
    • Terraform 提供者和 k8s 运算符也适用于 Kafka 主题
    【解决方案2】:

    这是我最终得到的解决方案:

    • 创建一个部署在 kafka docker 镜像中的小型 http 服务
    • http 服务接受增加分区计数的请求并将请求定向到 kafka 管理脚本 (bin/kafka/kafka-topics.sh)
      • 可以通过在Java Kafka lib 中使用AdminClient NewPartitions api 来实现类似的功能。此方案的优点是不需要更改 kafka docker 镜像,因为 AdminClient 可以通过 network 从另一个容器连接。

    对于生产设置,最好使用 AdminClient,因为选择的语言 (rust),我决定使用集成脚本方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2016-07-01
      • 2019-02-25
      • 1970-01-01
      • 2016-10-01
      相关资源
      最近更新 更多