首页/数据/数据工程与 ETL 速查/日志压实 Log Compaction
本包目录(311 条)
管道基础52 条
Kafka64 条
调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

日志压实 Log Compaction

压实(cleanup.policy=compact)按键保留最新一条消息,适合变更日志与状态快照;删除通过写入带 null 值的 tombstone 消息表达。

语义同一 key 只保留最后一个 value(更早的最终被清理)
场景KTable changelog、配置变更流、CDC 明细表
相关参数min.cleanable.dirty.ratio、delete.retention.ms、segment.ms

创建压实主题

创建压实主题
kafka-topics.sh --bootstrap-server localhost:9092 \
  --create --topic user-profile-compact \
  --partitions 3 --replication-factor 3 \
  --config cleanup.policy=compact \
  --config min.cleanable.dirty.ratio=0.3
压实只保证最终收敛:key 的旧值在被清理前仍然可以被读到,重放时要按 key 去重取最新。

易错点

  • 压实主题的空隙不会被自动回收,读端要靠 key 归并,不能假设“只有一条”
  • tombstone 会保留 delete.retention.ms 后消失,重放时间窗口要覆盖该保留期

数据来源与参考

  • Apache Kafka 官方文档:Log Compaction
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌