retention.bytes 是否定义了非活动段的最大大小?



我有一个卡夫卡设置,用于保留,如下所示:

# A size-based retention policy for logs. Segments are pruned from the log as long as the remaining$
# segments don't drop below log.retention.bytes.$
log.retention.bytes=1073741824$
$
# The maximum size of a log segment file. When this size is reached a new log segment will be created.$
log.segment.bytes=1073741824$

所以log.retention.byteslog.segment.bytes的大小是 1gb,然后我创建了一个只有一个分区的主题。将消息刷新到我的主题后,我观察到总是有两个日志文件,一个文件已经达到 1gb,另一个是正在接收消息的活动文件。

我的问题是,此log.retention.bytes是否定义了非活动段文件的最大总大小,不包括活动段文件?

谢谢

是的,这大致正确。我通常不喜欢将此设置定义为"最大大小",因为它并不完全正确。

查看它的一种方法是考虑log.retention.bytesKafka 删除段后必须保留的最小数据量。或者 Kafka 保证随时保留的数据量(显然只有在未达到时间保留限制的情况下!

活动区段不符合删除条件。因此,正如您注意到的那样,当第一个段填满时,即使您达到 1GB,Kafka 也不会删除任何内容。相反,它滚动了一个新段(新的活动段(。一旦这个新段也达到 1GB,您实际上在磁盘上就有了 2GB 的数据。

此时,将再次滚动一个新区段,并且您有 2 个非活动区段。只有现在 Kafka 才能删除一个段并且仍然满足log.retention.bytes,因为磁盘上会有 1GB 的数据 + 活动段。

最新更新