kafka的文件清除策略

一 清除策略

Kafka 默认的日志保存时间为 7 ,可以通过调整如下参数修改保存时间。配置文件在kafka的config/server.properties文件中:
log.retention.hours,最低优先级小时,默认 7 天。
log.retention.minutes ,分钟。
log.retention.ms ,最高优先级毫秒。
log.retention.check.interval.ms,负责设置检查周期,默认 5 分钟。
那么日志一旦超过了设置的时间,怎么处理呢?

二 清除策略的分类

1.Kafka 中提供的日志清理策略有 delete compact 两种

2.1 日志删除

1.delete 日志删除:将过期数据删除:
  log.cleanup.policy = delete 所有数据启用删除策略
1 基于时间:默认打开 segment 中所有记录中的最大时间戳作为该文件时间戳。
(2) 基于大小:默认关闭 。超过设置的所有日志总大小,删除最早的 segment
log.retention.bytes ,默认等于 -1 ,表示无穷大。
思考: 如果一个 segment 中有一部分数据过期,一部分没有过期,怎么处理?
处理的规则:等待获取最新数据时间戳,也就是所有记录中的最大时间戳,作为判断过期的依据,然后进行清理。
kafka的文件清除策略_第1张图片

2. compact 日志压缩

compact 日志压缩: 对于相同 key 的不同 value 值,只保留最后一个版本。
kafka的文件清除策略_第2张图片
压缩后的 offset 可能是不连续的,比如上图中没有 6 ,当从这些 offset 消费消息时,将会拿到比这个 offset
offset 对应的消息,实际上会拿到 offset 7 的消息,并从这个位置开始消费。
这种策略只适合特殊场景,比如消息的 key 是用户 ID value 是用户的资料,通过这种压缩策略,整个消息 集里就保存了所有用户最新的资料。

 

你可能感兴趣的:(kafka,kafka)