同RocketMQ -- 過期檔案的刪除,kafka也會定期清理檔案。
在Broker啟動的時候,就會啟動一個定時任務,延遲30s,然後每5分鐘就開始去判斷釋放要刪除過期檔案。
任務開始的時候,就會遍歷所有的Segment檔案。
預設情況下,僅保留7天的檔案。判斷時間是通過Segment檔案中的最大時間戳largestTimestamp來判斷的,而不是檔案的修改時間。
如果所有的Segment檔案都被刪除了,那需要建立一個新的Segment檔案。
如果當前有多個Segment檔案,那這幾個Segment檔案的總大小如果超過了設定的閾值,假設超過了2.5G,而每個Segment檔案都是1G,那需要刪除3個Segment檔案才可以保證Segment檔案的總大小小於了設定的閾值。
和上面一樣,如果所有的Segment檔案都被刪除了,那需要建立一個新的Segment檔案。