Kafka存储策略可通过以下参数配置,需根据业务需求选择合适策略并组合使用:
日志保留时间
通过 log.retention.ms(毫秒,优先级最高)、log.retention.minutes、log.retention.hours 设置消息保留时长,超时后删除。
示例:保留7天数据:log.retention.ms=604800000。
日志大小限制
通过 log.retention.bytes 限制单个分区的最大存储空间(字节),达到阈值后删除旧消息。
示例:限制1GB:log.retention.bytes=1073741824。
日志分段控制
log.segment.bytes:设置单个日志段文件大小(默认1GB),达到后滚动创建新段。log.segment.ms:按时间滚动日志段(默认7天),与大小策略配合使用。删除策略(delete)
基于时间或大小删除旧消息,需设置 log.cleanup.policy=delete,并配合时间/大小参数。
场景:仅需保留近期数据,如日志类Topic。
压缩策略(compact)
保留每个键的最新值,删除旧版本,需设置 log.cleanup.policy=compact,并启用清理线程(log.cleaner.enable=true)。
场景:需保留键的最新状态,如数据库变更日志。
混合策略
同时设置 delete,compact,先压缩保留键最新值,再按时间/大小删除冗余数据。
索引优化
log.index.interval.bytes:控制索引文件更新频率(默认4KB),减小索引体积。log.index.size.max.bytes:限制索引文件最大大小(默认10MB),避免频繁加载。冷热数据分层
通过自定义存储路径(log.dirs)和分段策略,将热数据存放在SSD,冷数据存放在HDD,提升访问效率。
retention.ms)可通过Kafka API动态修改,无需重启集群。配置示例(保留7天数据+压缩最新状态):
log.retention.ms=604800000 # 保留7天
log.cleanup.policy=delete,compact # 混合策略
log.segment.bytes=1073741824 # 1GB分段
log.cleaner.enable=true # 启用压缩