Apache kafka “这个话题是什么?”__“消费者补偿”;在卡夫卡

Apache kafka “这个话题是什么?”__“消费者补偿”;在卡夫卡,apache-kafka,Apache Kafka,当我运行这个命令时,我得到两个主题。我知道我创建了测试主题,但我看到了一个额外的主题,名为“消费者偏移”。 从名称上看,它意味着它与消费者补偿有关,但它是如何使用的 $bin/kafka-topics.sh--列表--zookeeper本地主机:2181 __消费者补偿 测试 $ bin/kafka-topics.sh --describe --zookeeper localhost:2181 Topic:__consumer_offsets PartitionCount:50

当我运行这个命令时,我得到两个主题。我知道我创建了测试主题,但我看到了一个额外的主题,名为“消费者偏移”。 从名称上看,它意味着它与消费者补偿有关,但它是如何使用的

$bin/kafka-topics.sh--列表--zookeeper本地主机:2181
__消费者补偿
测试

$ 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个分区。
还正在寻找一种禁用此功能的方法,因为每次我尝试运行“描述”主题时,它都会先打印50个“消费者”偏移分区,然后再打印我的主题。

消费者基于消费者组id将上次消费的消息偏移id存储在kafka topic
\uu消费者偏移中。

这使不同的消费者(显然具有不同的消费者id)能够在上次消费的消息之后处理下一条消息,并避免重复的消息处理。

消费者使用主题
\u consumer\u offset
存储他们读取的消息的偏移量。当耗电元件重新启动时,它将启用恢复。它将读取耗电元件停机前的最后一个位置,并处理下一个偏移量


@cricket_007是对的,在卡夫卡中,默认情况下可以有重复,这是使用的至少一次语义

在卡夫卡的初始版本中,偏移量由zookeeper管理,但随着时间的推移,卡夫卡不断发展,引入了许多新功能。现在,卡夫卡在一个内部/系统级主题中管理偏移量,即消费者偏移量


每当您在没有明确指定分区数的情况下创建一个主题时,Kafka就会默认为该主题创建50个分区。这同样适用于主题“消费者偏移量”。

知道为什么有50个分区吗分区的数量由卡夫卡配置中的
offset.topic.num.partitions
选项决定。50是默认值,但您可以更改它。我不会说“避免重复”,因为默认情况下,您至少会获得一次交付,如果在处理后未提交偏移,您将获得重复的。。。相反,偏移量主要是为了恢复/检查点而存储的。您可以查看它的可能副本。。。链接部分解决了这个问题。我甚至没有看到_模式主题。