系统空闲时,将触发将主题分区重新分配给使用者组的操作

时间:2019-11-29 10:21:17

标签: apache-kafka kafka-consumer-api

我们一直在为生产kafka集群使用apache-kafka版本0.10.0.1。而且,我们在日志中看到了一种模式,即使使用者数量或分区数量没有变化,也可以重新分配分区。由于大多数消费者闲置时都会发生此事件,因此我们排除了消费者缓慢或出现n / w问题的可能性。

我们最终认为,以下必须是触发重新评估的原因:

    为消费者设置了
  • connections.max.idle.ms。

但是我们还在监视工具中注意到了以下内容,它是一个自定义应用程序。

此应用程序的主要目的是向我们展示kafka主题分区的当前使用者(所有其他消耗此群集的生产应用程序)以及该分区的日志结束偏移量及其使用者偏移量。

为此,我们使用了以下代码:

try(KafkaConsumer<String, String> consumer = createConsumer(consumerGroup)){
    TopicPartition topicPartition = new TopicPartition(topic, partition);
    comsumer.assign(Collections.singletonList(topicPartition));
    return consumer.position(topicPartition);} // catch 

在上面的代码中,我们通过查询kafka提供现有的使用者组和分区组。

考虑到上面的实现,如果我们有一个应用程序“ A”,其消费者组名称为“ C”。 “ A”不是管理分区,而是让kafka组协调器代表它进行分区。

如果我们运行上面的代码来获取使用者偏移量,那么我们将在代码中管理分配,但使用的是相同的组名“ C”。组协调员会知道吗?这是否有可能触发分区重新分配?

0 个答案:

没有答案