天天看點

Kafka源碼解析之日志段類LogSegment(下)

recover(恢複日志段)

  • 什麼是恢複日志段?

    Broker 在啟動時會從磁盤上加載所有日志段資訊到記憶體中,并建立相應的 LogSegment 對象執行個體。是Broker重新開機後恢複日志段的操作邏輯。

執行流程
Kafka源碼解析之日志段類LogSegment(下)

step1

Kafka源碼解析之日志段類LogSegment(下)

step2

Kafka源碼解析之日志段類LogSegment(下)

step3

Kafka源碼解析之日志段類LogSegment(下)

注意該操作在執行過程中要讀取日志段檔案。是以,若你的環境有很多日志段檔案,你又發現Broker重新開機很慢,那你現在就知道了,這是因為Kafka在執行recover的過程中需要讀取大量磁盤檔案。

Log源碼添加一個簡便方法,統計介于高水位值和LEO值之間的消息總數。

private[log] def messageCountBetweenHWAndLEO: Long = {
logEndOffset - highWatermarkMetadata.messageOffset
}      

參考