卡夫卡消费者群体的抵销降至-1

时间:2018-07-10 06:56:55

标签: docker apache-kafka kubernetes kafka-consumer-api

我们在gcr.io/google_containers/kubernetes-kafka:1.0-10.2.1 docker镜像的Kubernetes中运行一个Kafka集群,并使用gcr.io/google_containers/kubernetes-zookeeper:1.0-3.4.10和Zookeeper后端以及三个kafka和zookeeper实例一起运行Zookeeper后端。

我们有一些不同的消费群体,它们既消费和产生有关三个不同主题的数据。

行为:有时,消费者组会将其在某个分区上某个主题的偏移量设置为-1,然后从此停止一起消费该主题。如果重新启动使用者,我们可能会看到他们将偏移量设置为最新的偏移量,这可能意味着使用者在从-1到重新启动之间的时间内错过了消息。

我遇到了一个问题,那就是为什么一个消费群体为什么要将偏移量设置为-1,以及为什么在几天的正常运行时间后会“随机”设置偏移量。对于Kafka为什么会为特定消费者设置此偏移量,是否有任何逻辑上的解释?在我们的实际消费者中看不到任何表明他们明确在这样做的东西。

我们目前在golangNode.js中都运行着消费者,所有这些消费者都面临着这个问题,因此我们目前的假设是此问题与我们的消费者无关,而是使用我们的Kafka设置。

1 个答案:

答案 0 :(得分:0)

默认的偏移量保留策略offsets.retention.minutes过去是1天,而在较旧的Kafka版本中,即使对于活跃的消费者,偏移量也被清除掉了。已用KIP-211

修复

我们最初是在Kafka 0.10.2.1中发现此问题的,一些选择的主题丢失了消费者组偏移(即变为-1),因为几天来没有关于该主题的消息,并且实施了偏移保留策略,并且为活跃的消费者消除了抵消。

我们可以通过将保留时间设置增加到7天来解决此问题,这似乎也是卡夫卡最终要做的事情,请参见KIP-186