天天看點

Kafka分區、組消費模式源碼解析1 分區消費模式2 組消費者模式3 總結

1 分區消費模式

直接由用戶端(任一語言編寫)使用Kafka提供的協定向伺服器發送RPC請求擷取資料,伺服器接受到用戶端的RPC請求後,将資料構造成RPC響應,傳回給用戶端,用戶端解析相應的RPC響應擷取資料。

Kafka支援的協定衆多,使用比較重要的有:

擷取消息的FetchRequest和FetchResponse

擷取offset的OffsetRequest和OffsetResponse

送出offset的OffsetCommitRequest和OffsetCommitResponse

擷取Metadata的Metadata Request 和 Metadata Response

生産消息的 ProducerRequest 和 ProducerResponse

1.1 分區消費模式伺服器端源碼過程

Kafka分區、組消費模式源碼解析1 分區消費模式2 組消費者模式3 總結

2 組消費者模式

2.1 流程

Kafka分區、組消費模式源碼解析1 分區消費模式2 組消費者模式3 總結
Kafka分區、組消費模式源碼解析1 分區消費模式2 組消費者模式3 總結

3 總結

3.1 分區消費模式特點

  • 指定消費topic、partition和offset通過向服務 器發送RPC請求進行消費
  • 需要自己送出offset
  • 需要自己處理各種錯誤,如:leader切換錯誤
  • 需自行處理消費者負載均衡政策

3.2 組消費模式特點

最終也是通過向伺服器發送RPC請求完成的(和分區消費模式一樣)

組消費模式由Kafka伺服器端處理各種錯誤,然後将消息放入隊列再封裝為疊代器(隊列為FetchedDataChunk對象),用戶端隻需在疊代器上疊代取出消息

由Kafka伺服器端周期性的通過scheduler送出目前消費的offset,無需用戶端負責

Kafka伺服器端處理消費者負載均衡

監控工具Kafka Offset Monitor和Kafka Manager均是基于組消費模式

是以,盡可能使用組消費模式,除非需要

自己管理offset,比如想實作消息投遞的其他語義

自己處理各種錯誤,根據自己業務的需求