卡夫卡中的这个主题“ __consumer_offsets”是什么

时间:2018-12-13 00:35:27

标签: apache-kafka

运行此命令时,我得到2个主题。我知道我创建了测试主题,但是看到了另一个名为“ __consumer_offsets”的主题。 顾名思义,它暗示与消费者补偿有关,但是如何使用?

$ bin/kafka-topics.sh --list --zookeeper localhost:2181 __consumer_offsets test

$ bin/kafka-topics.sh --describe --zookeeper localhost:2181
Topic:__consumer_offsets        PartitionCount:50       ReplicationFactor:1     Configs:segment.bytes=104857600,cleanup.policy=compact,compression.type=producer
        Topic: __consumer_offsets       Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: __consumer_offsets       Partition: 1    Leader: 0       Replicas: 0     Isr: 0
                      *
                      *
                      *
        Topic: __consumer_offsets       Partition: 48    Leader: 0       Replicas: 0     Isr: 0
        Topic: __consumer_offsets       Partition: 49    Leader: 0       Replicas: 0     Isr: 0

这发生在Kafka 1.1.0中,为什么有50个分区。 还在寻找一种禁用此方法的方法,因为每次我尝试运行“描述”主题时,它都会先打印__consumer_offsets的50个分区,然后再打印我的主题。

3 个答案:

答案 0 :(得分:1)

消费者根据消费者组ID将最后消耗的消息偏移ID存储在kafka主题__consumer_offsets中。
这样一来,不同的使用者(显然具有不同的使用者ID)就可以处理上一条消费的消息之后的下一条消息,并避免重复的消息处理。

答案 1 :(得分:1)

在初始版本的Kafka中,偏移量是由zookeeper管理的,但是随着时间的推移,Kafka不断发展,引入了许多新功能。现在,Kafka在内部/系统级主题(即__consumer_offsets)中管理偏移量。

每当您创建一个主题而未明确指定分区数时,默认情况下,Kafka会为该主题创建50个分区。主题__consumer_offsets同样如此。

答案 2 :(得分:0)

使用者=>使用主题来存储他们所读取的消息的偏移量。当使用者重新启动时,它将启用恢复功能,它将在其下降并处理下一个偏移之前读取其消耗的最后位置。

@ cricket_007是正确的,您可以在Kafka中默认使用重复项,这是至少使用过一次的语义。