概述目标:使用日志压缩(compaction)与时间/大小保留控制主题数据量,同时保证键值最新性以支撑状态型消费。适用:幂等状态更新、配置变更主题、事件流长期保留。核心与实战主题开启压缩:kafka-configs.sh --alter --entity-type topics --entity-name app-state --add-config cleanup.policy=compact --bootstrap-server broker:9092 组合策略(压缩+删除):kafka-configs.sh --alter --entity-type topics --entity-name app-events --add-config cleanup.policy=compact,delete --bootstrap-server broker:9092 kafka-configs.sh --alter --entity-type topics --entity-name app-events --add-config retention.ms=604800000 --bootstrap-server broker:9092 段与索引参数:kafka-configs.sh --alter --entity-type topics --entity-name app-events --add-config segment.bytes=1073741824,segment.ms=3600000 --bootstrap-server broker:9092 示例验证主题配置:kafka-configs.sh --describe --entity-type topics --entity-name app-events --bootstrap-server broker:9092 压缩效果:-- 生产同键多次更新,观察compact后仅保留最后一条(以及必要删除标记) 验证与监控Broker指标:观察磁盘使用与压缩线程指标;确认segment与保留策略生效。消费者行为:在compact主题上实现状态恢复(从头消费获取最新键值)。风险控制:设置`min.cleanable.dirty.ratio`与`delete.retention.ms`,避免过频或过迟压缩。常见误区将事件主题全部设为compact导致历史丢失;应对事件流使用`delete`或组合策略。保留时间过长导致存储膨胀;需按需求设置`retention.ms`与分层存储策略。忽视segment参数导致碎片或过大文件影响性能;需平衡大小与时间。结语通过合理的压缩与保留策略,Kafka可在保证状态一致性的同时控制存储成本,支撑长周期稳定运行。

发表评论 取消回复