kafka Burrow针对相同的consumer_group和相同的主题报告多个偏移量

时间:2018-08-01 05:21:58

标签: apache-kafka kafka-consumer-api linkedin-api spring-kafka

设置

myTopic有一个single partition

consumer_group是我的spring-boot应用程序,它使用spring-kafka客户端,并且该消费者组总是一个single consumerspring-kafka version 1.1.8 RELEASE

我在single broker node中有一个kafkaKafka version 0.10.1.1

当我使用consumer_group查询特定的burrow时,我看到相同主题 15个偏移条目

观察

curl http://burrow-node:8000/v3/kafka/mykafka-1/consumer/my_consumer_grp
"myTopic":[
{"offsets":[
    {"offset":6671,"timestamp":1533099130556,"lag":0},
    {"offset":6671,"timestamp":1533099135556,"lag":0},
    {"offset":6671,"timestamp":1533099140558,"lag":0},
    {"offset":6671,"timestamp":1533099145558,"lag":0},
    {"offset":6671,"timestamp":1533099150557,"lag":0},
    {"offset":6671,"timestamp":1533099155558,"lag":0},
    {"offset":6671,"timestamp":1533099160561,"lag":0},
    {"offset":6671,"timestamp":1533099165559,"lag":0},
    {"offset":6671,"timestamp":1533099170560,"lag":0},
    {"offset":6671,"timestamp":1533099175561,"lag":0},
    {"offset":6671,"timestamp":1533099180562,"lag":0},
    {"offset":6671,"timestamp":1533099185562,"lag":0},
    {"offset":6671,"timestamp":1533099190563,"lag":0},
    {"offset":6671,"timestamp":1533099195562,"lag":0},
    {"offset":6671,"timestamp":1533099200564,"lag":0}
    ]

更多观察结果

  1. 当我再次重新启动应用程序时,除了时间戳不断更新之外,我没有找到要创建的新偏移条目。这可能是由于auto.commit.interval.ms
  2. 当我开始生产/消费时;我看到偏移量和偏移量之一的变化;后来,其他的补偿措施赶上了;这让我觉得这些是复制品;
  3. offset.retention.minutes是默认的1440

问题

  • 为什么在burrow报告中有15个偏移条目?
  • 如果它们是副本,为什么在__consumer_offsets下将一个分区主题分成14个不同的副本?是否有任何文档?
  • 如果它们不是 个副本,它们又是什么?

1 个答案:

答案 0 :(得分:0)

这是我基于the docs的理解。钻地存储可配置数量的提交偏移量。这是一个滚动的窗口。消费者每次提交时,洞穴都会存储提交时的提交偏移量和滞后时间。您所看到的可能是应用了类似以下的存储配置(从burrow.iml中剔除)的结果:

[storage.default]
class-name="inmemory"
workers=20
intervals=15
expire-group=604800
min-distance=1

请注意,间隔设置为15。 我相信此功能只是为了提供一些有关消费者组提交和相关延迟的历史记录,而与副本无关。

编辑:

Burrow Wiki上的Consumer Lag Evaluation Rules页更详细地说明了此功能。简而言之,此可配置的偏移/滞后数据窗口用于计算消费者组状态。