Kafka压缩触发逻辑疑问:最大压缩滞后时间到后是否无视脏数据比率触发?
Kafka压缩触发逻辑疑问解答
你配置的Kafka主题参数如下:
max.compaction.lag.ms: 43200000 min.compaction.lag.ms min.cleanable.dirty.ratio: "0.5
你的问题:即使min.cleanable.dirty.ratio设定的阈值未满足,该主题的压缩仍会在max.compaction.lag.ms指定的时间到期后触发?
你的理解完全正确。
这几个参数的作用逻辑是这样的:
max.compaction.lag.ms:这是消息的最长压缩延迟时间,不管分区内未压缩的脏数据比例有没有达到min.cleanable.dirty.ratio的阈值,只要消息在日志中存在的时间超过了这个值,Kafka就会触发压缩操作,保证旧消息不会一直卡在等待比例达标的状态。min.cleanable.dirty.ratio:这是触发压缩的脏数据比例阈值,当分区内未被压缩的脏数据占总数据的比例达到或超过设定值时,会触发压缩。min.compaction.lag.ms:这是消息的最短压缩延迟时间,意思是消息写入日志后,必须至少留存这么久才会被纳入压缩范围,防止刚写入的消息就被压缩处理。
简单来说,压缩触发是满足任一条件即可:要么脏数据比例达标,要么消息留存时间超过max.compaction.lag.ms。
内容的提问来源于stack exchange,提问作者Магомед Якубов
相关产品推荐
相关产品推荐

