Apache kafka 卡夫卡重置刀具耗电元件偏移量未重置为零

Apache kafka 卡夫卡重置刀具耗电元件偏移量未重置为零,apache-kafka,kafka-consumer-api,apache-kafka-streams,yahoo-kafka-manager,Apache Kafka,Kafka Consumer Api,Apache Kafka Streams,Yahoo Kafka Manager,我试图理解一些基本的Kafka概念,以便能够正确监控基于KafkaStreams的应用程序的进度 特别是出于调试目的,我需要能够让我的应用程序重新使用整个主题。为此,我使用了 在执行脚本查看卡夫卡管理器中的一些输入主题后,我看到消费者补偿减少,而滞后增加(这是有意义的)。尽管消费者补偿不会变为零。我试图解释这一点,但我还没有找到卡夫卡管理器中消费者补偿和对数大小所指内容的具体解释 为了使其符合我看到的内容,我假设Logsize是自主题开始以来放入主题的消息总量,但不一定是主题中当前的消息量。因为

我试图理解一些基本的
Kafka
概念,以便能够正确监控基于KafkaStreams的应用程序的进度

特别是出于调试目的,我需要能够让我的应用程序重新使用整个主题。为此,我使用了

在执行脚本查看卡夫卡管理器中的一些输入主题后,我看到
消费者补偿
减少,而
滞后
增加(这是有意义的)。尽管
消费者补偿
不会变为零。我试图解释这一点,但我还没有找到卡夫卡管理器中
消费者补偿
对数大小
所指内容的具体解释

为了使其符合我看到的内容,我假设
Logsize
是自主题开始以来放入主题的消息总量,但不一定是主题中当前的消息量。因为有些可能因为年龄超过保存期而被丢弃。我说得对吗


如果不是,那么在为一些输入主题运行重置工具后,我观察到
消费者偏移量
等于
日志大小
(而不是零),并且
滞后
为零,这一事实背后的解释是什么?

但是,我不熟悉
雅虎卡夫卡管理器
,您还可以使用
bin/kafka consumer groups.sh
(kafka自带的工具)。这里的LOG-END-OFFSET表示您所描述的意思。从命名的角度来看,我不清楚
Logsize
是否与“log end offset”相同,或者分区中最高和最低偏移量之间的差异

在执行脚本并查看Kafka管理器中的一些输入主题后,我看到使用者偏移量减少,滞后增加

这是有道理的——因为“滞后”是“日志结束偏移量”和“提交偏移量”的区别,所以在重置应用程序后,滞后应该增加。然而,我不确定为什么承诺消费群偏移量不是零(你能用
bin/kafka consumer group.sh
--也许
yahoo kafka manager
报告一些不同的情况)

更新:但是工具不会将偏移设置为零,而是设置为“日志开始”。(文档不正确。)

另外请注意,
auto.offset.reset
策略可能会在您重置应用程序并重新启动它后生效([committed]如果日志被截断,偏移量零可能无效)。这能解释你观察到的行为吗


这篇博文还可能有助于理解更多细节:

您确定主题中的第一个偏移量为0吗?通过向某个测试主题写入数据,我验证了我关于Logsize含义的假设是正确的。但是我认为,auto.offeset.reset与我看到的东西无关。我认为重置工具本身会选择最新的可用偏移量,如果零不可用,则不会将偏移量重置为零。我通过将值设置为latest和Earlime并没有看到任何变化来检查它。如果重置工具将偏移量设置为零,
auto.offset.reset
在每种情况下的行为都会不同。重置工具会以这种方式更新吗?嗯。。。不确定。顺便说一句:这些文件并不完全正确。输入主题(cf)的工具“seeksToBeginning”(搜索开始),因此重置后启动Streams应用程序时不应触发
auto.offset.reset
(有意义的是——文档不正确:(-我将打开一个PR来修复下一版本的文档)