面试题答案
一键面试1. 时间策略
- 策略阐述:Kafka会定期清理超过一定时间的日志段。例如,配置
log.retention.hours
为168(一周),那么一周前的日志段就会被清理。日志段由多个日志文件组成,当满足时间条件时,整个日志段会被删除。 - 对性能影响:由于是按固定时间间隔进行清理检查,清理操作相对规律,不会频繁触发磁盘I/O。但如果时间设置过短,可能导致一些还可能被消费的数据被过早清理,影响数据的可用性;时间设置过长,则会占用过多磁盘空间。
- 对磁盘空间利用影响:能够有效控制磁盘空间的增长,避免因长期保留旧数据而耗尽磁盘空间。但如果清理时间窗口内数据量增长过快,可能在清理前磁盘空间就会达到瓶颈。
2. 大小策略
- 策略阐述:当日志数据达到一定大小时,Kafka会清理旧的日志段。通过
log.retention.bytes
配置总日志大小,当所有分区日志数据总和达到该阈值时,就会按照日志段的新旧顺序清理最早的日志段。 - 对性能影响:日志大小的监控和清理操作会增加系统的额外开销,因为需要持续监控磁盘占用情况。而且在清理时,可能会因为一次性删除大量数据而导致短暂的I/O负载升高,影响Kafka的读写性能。
- 对磁盘空间利用影响:可以精确控制磁盘使用上限,防止磁盘被填满。不过,如果设置的阈值过小,可能会频繁触发清理操作,影响系统稳定性;阈值过大,则无法及时释放磁盘空间。