以下两种保留配置有什么区别?
offsets.retention.minutes
log.retention.minutes
我不明白它是如何不同或相互关联的。据我了解,一旦删除偏移量,日志中的记录就无法访问,反之亦然。有什么我误解了吗?
以下两种保留配置有什么区别?
offsets.retention.minutes
log.retention.minutes
我不明白它是如何不同或相互关联的。据我了解,一旦删除偏移量,日志中的记录就无法访问,反之亦然。有什么我误解了吗?
偏移量是指向消费者已消费的最新消息的指针。因此,如果您阅读 10 条消息,则偏移量会移动 10 个位置。offsets.retention.minutes
如果在设定的时间段内未更改偏移量,则允许您将偏移量移回开始处。
为了可视化它,假设我们将字母(a
按g
顺序)放入 Kafka 主题中,所有时间都不同。在我们开始使用消息之前,偏移量指向最旧的消息:
OFFSET: *
MESSAGES: a b c d e f g
现在我们使用 3 条消息(a
, b
, c
),所以偏移量移动了:
OFFSET: *
MESSAGES: a b c d e f g
现在假设我们已经设置了log.retention.minutes=10
,并且我们在 11 分钟前将a
andb
放入了主题中,但其他消息是最近插入的。我们会看到:
OFFSET: *
MESSAGES: c d e f g
现在让我们设置offsets.retention.minutes=1
,并假设距离我们上次消费任何东西已经过去了 90 秒。我们会看到:
OFFSET: *
MESSAGES: c d e f g
因为c
现在是该主题上最旧的消息(也是将被消费的第一条消息)。