在 Apache Kafka 中记录主题数据时使用 log.retention.bytes 参数的混乱

B R*_*ddy 0 apache-kafka

“log.retention.bytes”是我们用来保留主题消息日志的参数,我给定的值为 1073741824。

我参考了 Kafka 文档,其中提到“log.retention.bytes”中给出的大小是每个分区,所以这意味着假设如果我为我正在使用的所有主题有 20 个分区,那么 Kafka 的总字节大小根据文档,retain 是 20*1073741824 。

但我需要的是清晰的是

Will Kafka retain 20*1073741824 bytes for all the topics?
                     (or)
Will Kafka retain 20*1073741824 bytes per topic?
Run Code Online (Sandbox Code Playgroud)

KZa*_*gol 5

log.retention.bytes用于在每个主题分区的日志中保留的参数。默认情况下,日志大小是无限的。

如果我们使用“删除”保留策略,此配置控制分区(由日志段组成)在我们丢弃旧日志段以释放空间之前可以增长到的最大大小。默认情况下,没有大小限制,只有时间限制。由于此限制是在分区级别强制实施的,因此将其乘以分区数即可计算主题保留时间(以字节为单位)。

如果设置log.retention.bytes = 1 GB,当分区大小达到 1 GB 时, Kafka 将触发清理活动。请记住,这不是主题大小。它是分区大小。

Kafka 为您提供了其他选项来配置保留期,即log.retention.ms。默认保留期为 7 天。如果您想更改持续时间,您可以指定 log.retention.ms 配置的值。

如果您指定这两种配置,则清理将在满足任一条件时开始。