recover(恢复日志段)
- 什么是恢复日志段?
Broker 在启动时会从磁盘上加载所有日志段信息到内存中,并创建相应的 LogSegment 对象实例。是Broker重启后恢复日志段的操作逻辑。
执行流程
step1
step2
step3
注意该操作在执行过程中要读取日志段文件。因此,若你的环境有很多日志段文件,你又发现Broker重启很慢,那你现在就知道了,这是因为Kafka在执行recover的过程中需要读取大量磁盘文件。
Log源码添加一个简便方法,统计介于高水位值和LEO值之间的消息总数。
private[log] def messageCountBetweenHWAndLEO: Long = { logEndOffset - highWatermarkMetadata.messageOffset }
参考