kafka 系列 7 2 日誌索引

2021-10-24 15:40:28 字數 1675 閱讀 7603

kafka的索引檔案以稀疏索引的方式構造訊息的索引,每個segmentfault檔案,對應 2 個索引檔案。偏移量索引檔案(xx.index)用於建立訊息偏移量到實體地址之間的對映關係;時間戳索引檔案(xx.timeindex)根據指定的時間戳查詢對應的偏移量資訊。

.index、.timeindex均保持嚴格單調遞增,在查詢時,都使用二分查詢法,如果查不到,均返回比查詢值要小的最大值。

當日誌分段檔案滿足以下幾個條件任意之一,便會切分索引檔案

分段檔案大小超過broker引數log.segment.bytes配置的值,預設為1073741824,即1g

當前分段日誌中訊息的最大時間戳與當前系統的時間戳差值大於log.roll.mslog.roll.hours引數配置的值。其中前者優先順序大於後者,預設配置了log.roll.hours = 168,即7

.index.timeindex的大小達到broker端引數log.index.size.max.bytes配置的值,該值預設為10485760即10mb

追加的訊息的偏移量與當前日誌分段的偏移量之間差值大於integer.max_value

.index每個索引項,佔8個位元組。結構如下圖所示:

relativeoffset:相對偏移量,表示訊息相對於baseoffset偏移量,占用4個位元組

訊息的偏移量(offset)占用8個位元組,稱為絕對偏移量。為了節省空間,relativeoffset採用4個位元組,relativeoffset = offset - baseoffset

因為relativeoffset4個位元組,因此當offset - baseoffset值大於integer.max_value,則會導致無法繼續儲存在當前 .index 檔案

每個索引項占用12個位元組,結構如下圖:

當前日誌分段最大的時間戳。佔8個位元組

relativeoffset:

時間戳所對應的訊息的相對偏移量。佔4個位元組

不同點rocketmq的索引檔案,存放在index目錄下。

rocketmq使用的是hash進行查詢,使用的是鍊錶法解決衝突hash衝突。

Kafka日誌儲存解析(二)日誌索引

每個日誌分段檔案對應了兩個索引檔案,主要用來提高查詢訊息的效率。如上圖 kafka中的索引檔案屬於稀疏索引,不是所有的訊息都有對應的索引項。每當寫入一定量 由broker端引數log.index.interval.bytes指定,預設是4kb 的訊息時,偏移量索引檔案和時間戳索引檔案分別增加乙個偏移...

Apche日誌系列 4 日誌分析

儘管日誌檔案中包含著大量有用的資訊,但這些資訊只有在經過深入挖掘之後才能夠最大限度地發揮作用。本文首先討論了能夠從日誌檔案獲得的資訊以及不能從日誌檔案獲得的資訊,然後介紹了幾種優秀的日誌分析工具以及如何自己程式設計分析日誌檔案。一 可以得到哪些資訊 4月4日 我們面臨的問題是,雖然日誌檔案中包含了大...

Kafka日誌索引

kafka中的索引檔案以稀疏索引 sparse index 的方式構造訊息的索引,並不保證每個訊息在索引中都有對應的索引項。每當寫入一定量 由broker端引數log.index.interval.bytes指定,預設值4k 偏移量索引檔案 時間戳索引檔案分別增加乙個偏移量索引項和時間戳索引項,lo...