【问题标题】:Is there any api to find partition is balanced or not in kafka是否有任何api可以在kafka中找到分区是否平衡
【发布时间】:2023-03-31 13:21:01
【问题描述】:

是否存在任何 API 或客户端库可以告诉我有多少百分比的主题填充了数据,以便我可以弄清楚是否有任何方法可以检查分区是否平衡

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    这是在 Kafka 上进行设计和开发之前讨论的好策略。

    您需要考虑的第一点是如何定义您的密钥,以及您在为主题生成消息时计划使用的分区器。

    拇指规则:

    1. 如果您不想根据密钥收集不同组中的消息,只需将密钥作为 null 传递,以循环方式重新分发您的消息。
    2. 您还可以使用自定义分区器来定义分区,以防您需要进行更多细化。

    要检查分区分布,最好的方法是检查每个分区的滞后和速率字节/秒

    有很多方法可以监控

    1.您可以使用简单的API来获取各种矩阵,如滞后、速率等

    你可以参考这里Kafka Metrices

    kafka.server:type=ReplicaFetcherManager,name=MaxLag,clientId=Replica
    

    2.我通常更喜欢导出 JMX 的 Grafana,它会可视化矩阵

    Grafana

    3.我们也可以通过CLI来识别每个分区的偏移和滞后,真正给你即时的整体图

    bin/kafka-consumer-groups.sh --bootstrap-server broker1:9092 --describe --group consumer-group
    
    
    TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
     test                              1          10               30           20         consumer-group
    
    1. 您也可以以编程方式处理 How to identify partition lagging

    2. Confluent Control-Center 是一个付费但非常有趣的工具,用于监控整个 Kafka,包括消费者及其分区/ Confluent control center

    【讨论】:

      【解决方案2】:

      假设您创建了一个主题 X。您的生产者开始将大量数据推送到您的主题中。你的话题正在成倍增长。根据配置 log.segment.bytes,Kafka 将创建一个新段并开始向其中写入数据。旧段将保留 log.retention.ms 毫秒。因此,100% 的主题本身是难以计算的。

      但是,如果您正在寻找一种可以根据每个代理上的负载分配分区的工具,那么我建议您研究 Kafka-kit (https://www.datadoghq.com/blog/engineering/introducing-kafka-kit-tools-for-scaling-kafka/)。

      【讨论】:

      • 我不是在寻找可以根据每个代理上的负载分配分区的工具,而是我想使用某些脚本或通过任何程序找到当前分区或主题容量
      • 生产者在消息中发送 (key,value)+more。键可以是 customerId。将有关一位客户的所有数据放在一个分区中使设计更加可靠。现在,假设 partitionX 托管在 hostA 上并且它已超载,那么生产者不应该尝试变得聪明并开始向 partitionY 发送消息。如果 hostA 过载并关闭,则 Kafka 将开始使用同步副本。
      猜你喜欢
      • 2012-01-20
      • 2019-06-09
      • 2020-12-31
      • 2019-03-28
      • 1970-01-01
      • 2016-02-14
      • 2018-11-21
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多