kafka 協議分析 (壹) 基礎篇
kafka 協議分析 (二) Produce API
kafka 協議分析 (三) Fetch API
Kafka作為分布式消息組件被廣泛使用,官方也提供了非常易用的各語言版本的client。由於系統的異構性,我們使用了不同語言的client生產和消費消息。實際使用的過程中,發現有生產了消息卻消費不到等情況。由於client屏蔽了很多底層細節,所以通過網絡抓包去分析數據才是解決問題的關鍵。要分析網絡數據包就必須了解 KAFKA PROTOCOL 。(PS:本文是假定妳對Kafka的 基本概念 已經了解,特別是 topic,partition,broker 和 leader )
協議:為了實現壹個目的,怎樣 構建請求 以及如何 解析響應 。
要想分析和使用kafka協議,我們必須要事先弄清楚協議的基礎理論。本文主要介紹這些基礎概念,後面文章會陸續介紹kafka的常用api(主要介紹low level api和high level api)。
協議中的請求和響應都由下面3種類型的數據組成。
請求和響應的前4個字節都是壹個表示請求體或響應體多大的數字:
註意:後面介紹中將不會再專門列出message_size域,默認在頭部包含該域值
所有請求都具有相同格式的請求頭
所有響應都具有相同格式的響應頭