1.kafka消息格式:
(1)一個Kafka的Message由一個固定長度的header和一個變長的消息體body組成
(2)header部分由一個位元組的magic(檔案格式)和四個位元組的CRC32(用于判斷body消息體是否正常,是否丢包,資料不一樣CRC32算出來的數字也是不一樣的)構成。
當magic的值為1的時候,會在magic和crc32之間多一個位元組的資料:attributes(儲存一些相關屬性,比如是否壓縮、壓縮格式等等);如果magic的值為0,那麼不存在attributes屬性
(3)body是由N個位元組構成的一個消息體,包含了具體的key/value消息
備注:Kafka 0.10.0之前版本的格式
2.kafka Log消息格式(如下圖)
(1)存儲在磁盤的日志采用不同于Producer發送的消息格式,
(2)每個日志檔案都是一個“log entries”序列
(a)每一個log entry包含一個四位元組整型數(message長度,值為1+4+N)
(b)一個位元組的magic
(c)四個位元組的CRC32值
(d)最終是N個位元組的消息資料。每條消息都有一個目前Partition下唯一的64位offset
(3)其實這個log entries也不是一個檔案,是一個index(索引檔案)和一個log日志檔案
3.參考
1.https://blog.csdn.net/u013256816/article/details/80300225