概述Kafka通过基于时间与大小的保留策略管理日志数据,日志压缩在键级别保留最新值以减少冗余。结合合理的分区与副本设置,在保证消费语义的同时优化存储与查询效率。关键实践与参数保留时间与大小: `retention.ms` `retention.bytes`压缩开关: `cleanup.policy=compact,delete`压缩阈值: `min.cleanable.dirty.ratio` `segment.ms`键语义: 以业务键写入,删除使用空值监测: 段文件数量、压缩进度与磁盘使用示例/配置/实现kafka-configs --bootstrap-server kafka:9092 --alter --topic orders --add-config retention.ms=604800000 kafka-configs --bootstrap-server kafka:9092 --alter --topic kv_state --add-config cleanup.policy=compact kafka-configs --bootstrap-server kafka:9092 --alter --topic kv_state --add-config min.cleanable.dirty.ratio=0.5 kafka-topics --bootstrap-server kafka:9092 --describe --topic kv_state Properties p = new Properties(); p.put("bootstrap.servers", "kafka:9092"); KafkaProducer<String, String> producer = new KafkaProducer<>(p); producer.send(new ProducerRecord<>("kv_state", "user:1001", "online")); producer.send(new ProducerRecord<>("kv_state", "user:1001", null)); producer.close(); 验证保留策略: 在一周后旧段被删除或滚动, 磁盘占用下降压缩语义: 对同键的旧值被移除, 仅保留最新值或删除标记读取一致: 消费者在 `read_committed` 下读取到压缩后的最新状态指标: 压缩进度与段合并耗时在阈值内注意事项压缩适用于键值状态场景, 流式事件慎用删除需使用空值写入作为墓碑大主题的压缩与保留任务需在低峰期评估与消费者位点与语义协同设置

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.522140s