kafka消息存儲在kafka集群中(分parition存儲,每個partition對應壹個目錄。目錄名為 {partitionId},kafka接收到的消息存放於此目錄下,包含log文件,index文件,timeindex索引文件(0.10.1後的版本)
使用kafka-run-class工具調用kafka.tools.DumpLogSegments,查看kafka消息落盤後信息。 如下 :
如:
kafka消息日誌的清理邏輯是啟動線程定期掃描日誌文件,將符合清理規則的消息日誌文件刪除。
日誌清理主要參數
由上圖可知,kafka默認的清理策略是基於文件修改時間戳的清理策略,默認會保留七天的消息日誌量,基於消息日誌總量大小的清理規則不生效。
在磁盤總量不足,消息量浮動較大的場景下並非最佳的日誌清理策略(可能撐爆磁盤),在該場景下,可以考慮使用基於消息日誌總量的清理策略。然後如何估算kafka消息的磁盤占用呢?
發送壹條消息(uncompressed) :
如果是壓縮格式的消息,可能不同的壓縮算法,不同的消息格式有較大差別,需要實測估算
PS : 在存在多replica的常見下,還需要在此次評估基礎上乘以replica的副本數