这里说的日志,是指Kafka保存写入消息的文件;
Kafka日志清除策略包括中间:
基于时间和大小的删除策略;
Compact清理策略;
我们这里主要介绍基于Compact策略的Log Clean;...----
Compact策略说明
Kafka官网介绍: Log compaction;
Compact就是压缩, 只能针对特定的topic应用此策略,即写入的message都带有Key, 合并相同Key...清理过程涉及到log和index等文件的重写,比较耗IO, 因此kafka会作流控, 每次compact时都会先按规则确定要清理哪些TopicAndPartiton的log;
使用LogToClean类来表示要被清理的...;
这个segment的最后修改时间大于最大的保留时间,同时这个消息的value是有效的value,即不为null;
private def shouldRetainMessage(source: kafka.log.LogSegment...message后重写Log和Index文件过程;
具体写文件的流程可参考 Kafka中Message存储相关类大揭密
private[log] def cleanSegments(log: Log,