有没有任何api可以在kafka中查找分区是否平衡



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

在设计和开发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. 您也可以通过编程如何识别分区滞后

  2. Confluent Control Center是付费的,但它是一个非常有趣的工具,可以监控整个Kafka,包括消费者及其分区/汇流控制中心

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

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

最新更新