__consumer_offset 存儲着消費者提交的消費位移算法
每一條消息都有一個 offset 用來標誌它在分區中的偏移量,offset 是邏輯值,而非實際物理偏移量佈局
表示消息的大小性能
crc32 校驗值。校驗範圍爲 magic 至 value 之間spa
消息格式版本號,V0 固定爲 03d
消息的屬性。總共佔1個字節,低 3 位表示壓縮類型。
0:NONE、1:GZIP、2:SNAPPY;3:LZ4. 其他位保留日誌
-1,表示沒有設置 keycode
可選blog
消息體的長度,-1,表示爲空事務
消息體kafka
kafka
從 0.10.0
版本至 0.11.0
版本以前所使用的消息格式版本爲 v1
, 比 v0
多了一個 timestamp
字段
消息格式版本號,V0 固定爲 1
前三位一樣表示壓縮類型。
第4位:0-timestamp 類型爲 CreateTime
, 1-timestap 類型爲 LogAppendTime
timestamp
類型由 broker
端參數 log.message.timestamp.type
配置,默認值爲 CreateTime
kafka
版本從 0.11.0
以後都稱爲 v2.
消息總長度
棄用
時間戳增量,保存與 RecordBatch
起始時間戳的差值
位移增量,保存與 RecordBatch
起始位移的差值
支持應用級別的擴展
當前 RecordBatch
的起始位移
計算從 partitionleader epoch
字段開始到末尾的長度
分區 leader 的版本號或更新次數
V2 固定爲 2
佔用 2 個字節;低三位表示壓縮格式,第4位表示時間戳類型,第5位表示 RecordBatch
是否處於事務中,0-非事務,1-事務。第6位表示是不是控制消息,0-非控制,1-控制,控制消息用來支持事務功能
RecordBatch
中最後一個 Record
的 offset
與 first offset
的差值。最要被 broker
用於確保RecordBatch
中 Record
組裝的正確性
RecordBatch
第一條Record
時間戳
RecordBatch
中最大時間戳
PID,用於支持冪等和事務
用於支持冪等和事務
用於支持冪等和事務
RecordBatch
中 Record
個數
broker
可經過 compression.type
配置壓縮方式,默認 producer
,即保留生產者的壓縮方式
kafka
可能在 producer
端或者 broker
端中進行壓縮。
當消息在 broker
端從新壓縮時,會形成性能降低,所以須要儘可能避免。
如下會在 broker
端發生從新壓縮
broker
端和producer
端不一樣的壓縮算法。broker
端發生消息格式轉換,即新版本消息向老版本消息轉化。kafka
將多條消息放一塊兒壓縮,生產者發送的是壓縮的數據,broker 存儲的也是壓縮的數據。消費者在拉取消息時,也是壓縮的數據,在處理前纔會解壓消息。