《Kafka成神之路》之三圖搞懂分區、組消費模式
作者:JavaEdge
直接由客戶端(任一語言編寫)使用Kafka提供的協議向服務器發送RPC請求獲取數據,服務器接受到客戶端的RPC請求后,將數據構造成RPC響應,返回給客戶端,客戶端解析相應的RPC響應獲取數據。
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,比如想實現消息投遞的其他語義
- 自己處理各種錯誤,根據自己業務的需求
本文轉載自微信公眾號「 JavaEdge」,可以通過以下二維碼關注。轉載本文請聯系 JavaEdge公眾號。
責任編輯:武曉燕
來源:
JavaEdge