[Kafka] - Kafka內核理解:Message


一個Kafka的Message由一個固定長度的header和一個變長的消息體body組成

header部分由一個字節的magic(文件格式)和四個字節的CRC32(用於判斷body消息體是否正常)構成。當magic的值為1的時候,會在magic和crc32之間多一個字節的數據:attributes(保存一些相關屬性,比如是否壓縮、壓縮格式等等);如果magic的值為0,那么不存在attributes屬性

body是由N個字節構成的一個消息體,包含了具體的key/value消息

存儲在磁盤的日志采用不同於Producer發送的消息格式,每個日志文件都是一個“log entries”序列,每一個log entry包含一個四字節整型數(message長度,值為1+4+N),一個字節的magic,四個字節的CRC32值,最終是N個字節的消息數據。每條消息都有一個當前Partition下唯一的64位offset,指定該消息的起始下標位置,存儲消息格式如下:

這個“log entries”並非由一個文件構成,而是分成多個segment file(日志文件,存儲具體的消息記錄)和一個索引文件(存儲每個segment文件的offset偏移量范圍)。 結構如圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM