Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 启动大量卡夫卡流会大量加载列表中的第一个卡夫卡代理_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka 启动大量卡夫卡流会大量加载列表中的第一个卡夫卡代理

Apache kafka 启动大量卡夫卡流会大量加载列表中的第一个卡夫卡代理,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我有15个节点的卡夫卡集群: kafka1.com:9092,kafkaN.com:9092…,kafka10.com:9092 此外,我还有10个节点的应用程序,它消耗大约100个主题(从2到240个分区)。对于每个主题,应用程序使用一些转换逻辑创建KafkaStreams对象的单独实例 在我拥有如此多的使用者节点之前,我没有任何问题,但随着部署期间节点数量的增加,该应用程序开始大量加载kafka集群。但是,如果整个集群在部署过程中平均损失约2%的CPU,那么代理列表中的第一个节点kafka1

我有15个节点的卡夫卡集群:
kafka1.com:9092,kafkaN.com:9092…,kafka10.com:9092

此外,我还有10个节点的应用程序,它消耗大约100个主题(从2到240个分区)。对于每个主题,应用程序使用一些转换逻辑创建KafkaStreams对象的单独实例

在我拥有如此多的使用者节点之前,我没有任何问题,但随着部署期间节点数量的增加,该应用程序开始大量加载kafka集群。但是,如果整个集群在部署过程中平均损失约2%的CPU,那么代理列表中的第一个节点
kafka1.com:9092
将损失大约50-60%的CPU和关键指标
请求处理程序线程空闲的平均时间分数
对这个经纪人来说变得很低

如果kafka处于负载(巨大吞吐量)状态,或者根本不处理消息,则此行为完全相同

我尝试过使用设置,但每次都看到相同的指标=( 我甚至将卡夫卡客户端更新为
2.3.0
版本 代理是
1.1.1
version

我认为这可能和元数据获取有关,因为我看不到Kafka Streams(消费者、生产者、管理员客户端)从列表中的第一个代理请求另一个数据的其他方式


但是为什么它会如此频繁地加载broker?

如果没有具体的细节和监控指标,很难准确地说出根本原因是什么

然而,根据经验,卡夫卡荷载分布不均的主要原因如下:

  • Kafka broker节点之间的分区分布不均匀

    这种情况实际上在中进行了描述。虽然描述了扩展集群的情况,但它也可能发生在大型集群的常规操作期间。基本上,Kafka很可能在代理节点之间不均匀地分布分区

    因此,
    kafka1.com:9092
    可能是集群中大部分分区的领导者,因此提高了CPU/磁盘/网络使用率(因为大部分消费者连接到it+复制开销)

    这个问题的解决办法是

  • 不均衡的领导人选举(以及反复的领导人重新平衡)

    这通常与分区分布不均匀一起发生。基本上,如果领导节点被压倒,Kafka将决定重新选举领导。但是,由于分区分布不均匀,这没有帮助,导致更多领导重新选举,从而增加集群上的负载

    这个问题的解决办法是(连同)

    这看起来可能与直觉背道而驰(因为,增加复制因子会增加复制开销)。但是,这提示Kafka在更多节点之间分发数据,从而有助于减轻负担过重的节点的负载

  • 分区(和相应的代理节点)之间的消息分布不均匀

    基本上,如果应用程序使用(通常是这种情况),您可能无法在分区之间获得消息的循环分发。根据Kafka常见问题解答:。因此,某些分区(以及相应的代理节点)可能会数据加载过多,而其他分区可能数据加载不足


  • 另外,如果集群在没有实际输入消息的情况下总体繁忙,这通常是由于Kafka试图用偏移量和ACK同步所有副本造成的。

    不幸的是,在我的情况下分区分布正常,但有许多thx需要回答。