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

标签 java apache-kafka

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

最佳答案

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

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

关于java - Apache Kafka 使用日志压缩策略或如何清理旧的压缩日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581493/

相关文章:

java - Spring 的卡夫卡。未启动 EmbeddedKafkaBroker

apache-kafka - Kafka 主题压缩

apache-spark - java.lang.AssertionError : assertion failed When join on stream Spark 错误

java - Kafka 消息版本控制

java - 制作可清洁绘图区域的最小方法

java - 更改 edittext 上的 textview(如果可能没有按钮)

java - Java 中的 Oracle 连接池

node.js - 如何传递 SSL 配置,如信任库位置和密码?

java - 构建并上传 jar 到 jcenter

javascript - Firefox:添加自定义键盘快捷键,例如用 'Saved Logins' 打开 'Show Passwords'