保留配置 offsets.retention.minutes 和 log.retention.minutes 之间的区别
Difference between retention configuration offsets.retention.minutes and 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
和 b
放入主题,但其他消息是最近插入的。我们会看到:
OFFSET: *
MESSAGES: c d e f g
现在让我们设置offsets.retention.minutes=1
,并假设自从我们上次消耗任何东西以来已经过去了 90 秒。我们会看到:
OFFSET: *
MESSAGES: c d e f g
因为 c
现在是关于该主题的最旧消息(也是第一个将被使用的消息)。
以下两种保留配置有什么区别?
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
和 b
放入主题,但其他消息是最近插入的。我们会看到:
OFFSET: *
MESSAGES: c d e f g
现在让我们设置offsets.retention.minutes=1
,并假设自从我们上次消耗任何东西以来已经过去了 90 秒。我们会看到:
OFFSET: *
MESSAGES: c d e f g
因为 c
现在是关于该主题的最旧消息(也是第一个将被使用的消息)。