同RocketMQ -- 过期文件的删除,kafka也会定期清理文件。
在Broker启动的时候,就会启动一个定时任务,延迟30s,然后每5分钟就开始去判断释放要删除过期文件。
任务开始的时候,就会遍历所有的Segment文件。
默认情况下,仅保留7天的文件。判断时间是通过Segment文件中的最大时间戳largestTimestamp来判断的,而不是文件的修改时间。
如果所有的Segment文件都被删除了,那需要创建一个新的Segment文件。
如果当前有多个Segment文件,那这几个Segment文件的总大小如果超过了设置的阈值,假设超过了2.5G,而每个Segment文件都是1G,那需要删除3个Segment文件才可以保证Segment文件的总大小小于了设置的阈值。
和上面一样,如果所有的Segment文件都被删除了,那需要创建一个新的Segment文件。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。