(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之前版本的格式
(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日誌檔案
Kafka訊息格式
從0.8.x版本開始到現在的2.x版本,kafka的訊息格式也經歷了 3 個版本 v0 版本 v1 版本和 v2 版本 kafka 從 0.8.x 版本開始到 0.10.x 版本之前的訊息格式通常稱為 v0 版本。下圖中左邊的 record 部分就是 v0 版本的訊息格式,每個 record v0 ...
訊息佇列 訊息佇列 kafka
kafka是乙個分布式的基於發布 訂閱模式的訊息佇列,主要用於大資料實時處理領域。要理解kafka首先要有分布式的概念,要有訊息佇列的概念。分布式系統最大的優勢就是解耦和削峰,這種情況下,a系統生成了乙個訊息,b系統非同步獲取,那麼就需要乙個存放訊息的訊息佇列 mq 相比較傳統的訊息佇列,訊息被消費...
Kafka訊息模型
一 訊息傳遞模型 傳統的訊息佇列最少提供兩種訊息模型,一種p2p,一種pub sub,而kafka並沒有這麼做,巧妙的,它提供了乙個消費者組的概念,乙個訊息可以被多個消費者組消費,但是只能被乙個消費者組裡的乙個消費者消費,這樣當只有乙個消費者組時就等同與p2p模型,當存在多個消費者組時就是pub s...