__consumer_offsets如何为两个使用者保持偏移量?

时间:2019-07-09 07:15:39

标签: apache-kafka

enter image description here

就像上图一样,如果消费者A从一个分区消费而消费者B从消费者组消费同一分区,那么Kafka如何管理__consumer_offsets中的偏移量?

我想知道Kafka如何在.index.log.timeindex文件中写入使用者偏移量。

2 个答案:

答案 0 :(得分:1)

从以下文档中引用报价:https://kafka.apache.org/documentation/#impl_offsettracking

Kafka provides the option to store all the offsets for a given consumer group in a designated broker.

因此,它是每个消费者组而不是每个消费者。另外,本文可能对您有所帮助:https://medium.com/@felipedutratine/kafka-consumer-offsets-topic-3d5483cda4a6如果您从消费者补偿主题中读取,您将收到[groupId,topicName,partitionNumber]格式的数据。

答案 1 :(得分:0)

如果有一个以上的消费者在消费该主题(一个消费群体中的消费者),Kafka会像下面这样保留偏移量。 (我只喜欢图像,它们可以帮助我更好地理解:))

enter image description here

enter image description here

enter image description here

在__consumer_offsets-中,有类似以下的文件。那就是记录偏移量的地方。

enter image description here

索引文件和日志文件包含以下内容(示例): Timeindex文件的使用类似于索引文件,可帮助Kafka快速在磁盘上查找消息。

enter image description here

最后,下图可以让您大致了解偏移量如何存储在日志文件中。

enter image description here

所有图片均来自Google。