保留配置offsets.retention.minutes和log.retention.minutes之间的区别

时间:2018-02-28 10:58:08

标签: apache-kafka retention

以下两种保留配置有什么区别?

  • offsets.retention.minutes
  • log.retention.minutes

我不知道它是如何相互关联或相互关联的。根据我的理解,一旦移除了偏移量,就无法访​​问日志中的记录,反之亦然。有什么我误解了吗?

1 个答案:

答案 0 :(得分:10)

偏移量是指向消费者已消耗的最新消息的指针。因此,如果您阅读10条消息,则偏移量将移动10个位置。 offsets.retention.minutes允许您将偏移量移回到开头,如果它在一段时间内没有更改。

为了使其可视化,我们假设我们将字母a放在g(按此顺序)在Kafka主题中,所有这些都在不同的时间。在我们开始使用消息之前,偏移量指向最早的消息:

OFFSET:    *
MESSAGES:  a b c d e f g

现在我们消耗3条消息(abc),以便偏移移动:

OFFSET:          *
MESSAGES:  a b c d e f g

现在我们假设我们设置了log.retention.minutes=10,我们在11分钟前将ab放入主题,但最近插入了其他消息。我们看到了:

OFFSET:          *
MESSAGES:      c d e f g

现在让我们设置offsets.retention.minutes=1,并假装自上次消耗任何东西以来已经过了90秒。我们看到了:

OFFSET:        *  
MESSAGES:      c d e f g

因为c现在是该主题上最早的消息(以及将要消耗的第一个消息)。