Apache Kafka使用日志压缩策略或如何清理旧的压缩日志

时间:2015-11-07 10:09:00

标签: java apache-kafka

我是卡夫卡的新人并有一些问题。 如果我理解正确,在0.8 kafka版本之前我们只有一种方法来保留日志:删除旧日志部分并使用参数 log.cleaner.delete.retention.ms 设置此时间。 现在我们可以在参数 log.cleanup.policy 中选择压缩设置,这将删除日志尾部中相同键的重复项。 但有没有办法实现这种情况:压缩最近的消息并删除此日志的旧部分? 抱歉我的英语不好,但我真的很想了解卡夫卡。

1 个答案:

答案 0 :(得分:0)

嗯,这取决于你的意思"旧记录"。据我所知你不能混合"压实"在时间/大小方面删除。但是通过压缩,您可以通过发送具有空值的密钥来删除记录(而不仅仅是重复)。但是您必须手动决定哪些"键"你说是旧的,然后发送这些键将为空值作为值。

所以从文档中总结一下: 压缩还允许删除。具有密钥和空有效负载的消息将被视为从日志中删除。此删除标记将导致删除具有该密钥的任何先前消息(与具有该密钥的任何新消息一样),但删除标记是特殊的,因为它们将在一段时间后自己从日志中清除以释放空间。删除不再保留的时间点标记为"删除保留点"在上图中。

相关问题