【问题标题】:Apache Kafka using both log compaction policy or how clean old compacted logApache Kafka 使用日志压缩策略或如何清理旧的压缩日志
【发布时间】:2016-02-08 11:13:42
【问题描述】:

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

【问题讨论】:

    标签: java apache-kafka


    【解决方案1】:

    从 0.10.1.0 开始,Kafka 支持日志压缩和删除共存。

    修改cleanup.policy 以采用逗号分隔的有效策略列表,即cleanup.policy=compact,delete

    https://cwiki.apache.org/confluence/display/KAFKA/KIP-71%3A+Enable+log+compaction+and+deletion+to+co-exist

    【讨论】:

      【解决方案2】:

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

      所以从文档中总结一下: 压缩还允许删除。带有键和空负载的消息将被视为从日志中删除。此删除标记将导致删除具有该键的任何先前消息(与具有该键的任何新消息一样),但删除标记的特殊之处在于它们本身会在一段时间后从日志中清除以释放空间.删除不再保留的时间点在上图中标记为“删除保留点”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2016-02-11
        • 2018-03-12
        • 2021-09-23
        • 1970-01-01
        • 2016-06-16
        相关资源
        最近更新 更多