【发布时间】:2019-06-27 14:23:50
【问题描述】:
我在本地机器上玩Kafka,我添加了以下Topic配置:
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topic1 config retention.ms=60000
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topic1 —config file.delete.delay.ms=40000
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic topic1 --config segment.bytes=400000
我的理解是,当分段达到上面定义的分段大小(segment.bytes=400000)加上分段中的每条消息都比上面定义的保留时间更早(retention.ms=60000)时,分段将被删除.
我注意到只有 35 个字节的段,其中仅包含一条消息,在一分钟后被删除(可能更多)
我从哪里得到这些信息?来自Linkedin工程师关于删除过程如何工作的帖子:
留存率将基于两种留存率的组合 和段大小设置(作为旁注,建议使用 log.retention.ms 和 log.segment.ms,而不是小时配置。那是 出于遗留原因,但 ms 配置更加一致)。作为 消息被 Kafka 接收,它们被写入当前打开的 每个分区的日志段。该段旋转时 已达到 log.segment.bytes 或 log.segment.ms 限制。一次 发生这种情况时,日志段被关闭并打开一个新的。仅有的 日志段关闭后是否可以通过保留删除 设置。一旦日志段关闭并且所有消息 段中的旧于 log.retention.ms 或总分区 size 大于 log.retention.bytes,则日志段为 清除。
【问题讨论】:
标签: apache-kafka