1. 程式人生 > >kafka(七):訊息格式

kafka(七):訊息格式

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訊息

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日誌檔案