我正在阅读《Kafka:权威指南》第一版这本书来了解代理何时删除日志段。
根据我理解的文本,一个段在关闭之前不会被删除。仅当段达到 log.segment.bytes 大小时才能关闭(考虑未设置 log.segment.ms)。一旦某个段符合删除条件,log.retention.ms 策略将应用以最终决定何时删除该段。
然而,这似乎与我在生产集群(Kafka 2.5 版)中看到的行为相矛盾。
一旦满足 log.retention.ms,日志段就会被删除,即使段大小小于 log.segment.bytes。
[2020-12-24 15:51:17,808] INFO [日志分区=Topic-2,dir=/Folder/Kafka_data/kafka]由于保留时间604800000ms违规(kafka.log.日志)
[2020-12-24 15:51:17,808] INFO [日志分区=Topic-2, dir=/Folder/Kafka_data/kafka] 调度删除段 List(LogSegment(baseOffset=165828, size= 895454171 , lastModifiedTime=1608220234000,最大时间=1608220234478)) (kafka.log.Log)
大小仍然小于 1GB,但该段已被删除。
该书在新闻发布时提到 Kafka 版本是 0.9.0.1 。这个设置在 Kafka 的后续版本中也发生了变化。(我在 Kafka 文档中找不到任何具体提及此更改的信息)。以下是书中的片段。