当前位置: 首页 > 知识库问答 >
问题:

分区分布不均匀

弘承运
2023-03-14

我们在AWS上运行16个节点kafka集群,每个节点是m4. xLargeEC2实例,具有2TB EBS(ST1)磁盘。Kafka版本0.10.1.0,目前我们有大约100个主题。一些繁忙的话题每天会有大约20亿个事件,一些低量的话题每天只有数千个。

我们的大多数主题在生成消息时使用UUID作为分区键,因此分区分布相当均匀。

我们有相当多的消费者使用消费群体从这个集群消费。每个使用者都有一个唯一的组id。有些使用者组每500毫秒提交一次偏移量,有些使用者组在处理完一批消息后将同步提交偏移量。

最近,我们观察到一些经纪人比其他经纪人忙得多的行为。通过一些挖掘,我们发现,实际上有相当多的流量流向“__consumer_offsets”,因此我们创建了一个工具来查看“__consumer_offsets”中每个分区的高水印,这揭示了分区分布非常不均匀。

基于此链接“Kafka的消费者补偿管理”

这似乎是一种有意的行为,每个消费者群体只有一个领导者,因此promise的补偿都需要去找这个领导者,并且也只使用“群体”。id"来决定分区。

考虑到我们有一些消费者从那些非常繁忙的主题中消费,因此提交偏移量将导致处理消费者组的代理上的“\uu consumer\u offset”主题的大量流量。

我的问题是:
1。我们有没有办法确保那些从繁忙话题中消费的消费者群体不会落在同一个经纪人身上?不希望创建热点。

提前谢谢

共有1个答案

诸葛乐逸
2023-03-14

关于问题1,至少在Kafka-1.0中是不可能的。0,它以“Utils.abs(groupId.hashCode)%groupMetadataTopicPartitionCount”的方式计算分区。因此,对于相同的组,id将落在相同的分区中。

对于问题2,首先,如果你的消费者能够赶上生产者的速度。使用单一消费者是可以的。如果消费者滞后持续增加,那么您应该考虑使用组来加速。您应该记住,一个组中的最大使用者受到您从中消费的主题的分区号的限制。其次,从消费者的角度来看,该组也可以作为HA解决方案。

 类似资料:
  • 0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.

  • 我正在使用Kafka Producer和RoundRobin分区器来处理一个有12个分区的主题。 代码可在此处找到https://github.com/apache/kafka/blob/2.8/clients/src/main/java/org/apache/kafka/clients/producer/RoundRobinPartitioner.java 我面临的问题是,这个分区程序让分区正确

  • 问题内容: 我试图识别/创建一个函数(在Java中),该函数给我一个非均匀的分布式数字序列。如果我有一个函数说它将给我一个从到的随机数。 该函数最适合任何给定的函数,下面仅是我想要的示例。 但是,如果我们说函数将返回来自分布式的s nonuni。 我想例如说 约占所有案件的20%。 大约是所有情况的50%。 约占所有案件的20%。 大约是所有情况的10。 总之somting,给我一个数字,如正态分

  • 问题内容: 我知道如果我使用Java的Random生成器,并使用nextInt生成数字,则数字将均匀分布。但是,如果我使用2个Random实例,并使用两个Random类生成数字,会发生什么。数字是否会均匀分布? 问题答案: 每个实例生成的数字将均匀分布,因此,如果将两个实例生成的随机数序列组合在一起,则它们也应均匀分布。 请注意,即使结果分布是均匀的,您也可能要注意种子,以避免两个生成器的输出之间

  • 本文向大家介绍python随机数分布random均匀分布实例,包括了python随机数分布random均匀分布实例的使用技巧和注意事项,需要的朋友参考一下 因为概率问题,所以需要测试一下python的随机数分布。到底是平均(均匀)分布,还是正态(高斯)分布。 测试代码如下: 测试结果: 结果说明: 平均(均匀)分布。 以上这篇python随机数分布random均匀分布实例就是小编分享给大家的全部内