Kafka提供了兩種主要的日志清理策略:刪除策略(delete)和壓縮策略(compact),它們各自有不同的應用場景和實現方式。
刪除策略(Delete)
- 基于時間的保留策略:當日志段超過指定的保留時間后,Kafka會刪除這些日志段。保留時間可以通過配置參數
log.retention.hours
、log.retention.minutes
或log.retention.ms
來設置,默認值為168小時(7天)。
- 基于日志大小的保留策略:當日志段的總大小超過配置的閾值時,Kafka會刪除最早的日志段。大小限制可以通過配置參數
log.retention.bytes
來設置,默認值為無窮大(-1)。
- 基于日志起始偏移量的保留策略:這種策略較為少見,它是基于日志段的起始偏移量來決定哪些日志段可以被刪除。
壓縮策略(Compact)
- 工作原理:壓縮策略主要用于僅保留每個鍵的最新消息版本,適用于更新頻繁的場景,例如數據庫變更日志。Kafka會定期掃描日志段,識別出需要壓縮的段,并為每個日志段構建一個映射,記錄每個鍵的最新偏移量。然后,Kafka會將這些消息寫入新的日志段,并替換舊的日志段。
- 優點:壓縮策略可以有效地減少存儲空間的占用,同時保留每個鍵的最新值,這對于需要跟蹤數據變化的應用場景非常有用。
需要注意的是,具體的配置參數可能會因Kafka版本的不同而有所差異,因此在實際應用中,還需要根據具體的業務需求和系統環境來調整相關參數。