1 分區消費模式
直接由用戶端(任一語言編寫)使用Kafka提供的協定向伺服器發送RPC請求擷取資料,伺服器接受到用戶端的RPC請求後,将資料構造成RPC響應,傳回給用戶端,用戶端解析相應的RPC響應擷取資料。
Kafka支援的協定衆多,使用比較重要的有:
擷取消息的FetchRequest和FetchResponse
擷取offset的OffsetRequest和OffsetResponse
送出offset的OffsetCommitRequest和OffsetCommitResponse
擷取Metadata的Metadata Request 和 Metadata Response
生産消息的 ProducerRequest 和 ProducerResponse
1.1 分區消費模式伺服器端源碼過程
2 組消費者模式
2.1 流程
3 總結
3.1 分區消費模式特點
- 指定消費topic、partition和offset通過向服務 器發送RPC請求進行消費
- 需要自己送出offset
- 需要自己處理各種錯誤,如:leader切換錯誤
- 需自行處理消費者負載均衡政策
3.2 組消費模式特點
最終也是通過向伺服器發送RPC請求完成的(和分區消費模式一樣)
組消費模式由Kafka伺服器端處理各種錯誤,然後将消息放入隊列再封裝為疊代器(隊列為FetchedDataChunk對象),用戶端隻需在疊代器上疊代取出消息
由Kafka伺服器端周期性的通過scheduler送出目前消費的offset,無需用戶端負責
Kafka伺服器端處理消費者負載均衡
監控工具Kafka Offset Monitor和Kafka Manager均是基于組消費模式
是以,盡可能使用組消費模式,除非需要
自己管理offset,比如想實作消息投遞的其他語義
自己處理各種錯誤,根據自己業務的需求