《Kafka成神之路》之三圖搞懂分區(qū)、組消費模式
1 分區(qū)消費模式
直接由客戶端(任一語言編寫)使用Kafka提供的協(xié)議向服務(wù)器發(fā)送RPC請求獲取數(shù)據(jù),服務(wù)器接受到客戶端的RPC請求后,將數(shù)據(jù)構(gòu)造成RPC響應(yīng),返回給客戶端,客戶端解析相應(yīng)的RPC響應(yīng)獲取數(shù)據(jù)。
Kafka支持的協(xié)議眾多,使用比較重要的有:
- 獲取消息的FetchRequest和FetchResponse
- 獲取offset的OffsetRequest和OffsetResponse
- 提交offset的OffsetCommitRequest和OffsetCommitResponse
- 獲取Metadata的Metadata Request 和 Metadata Response
- 生產(chǎn)消息的 ProducerRequest 和 ProducerResponse
1.1 分區(qū)消費模式服務(wù)器端源碼過程
2 組消費者模式
2.1 流程
3 總結(jié)
3.1 分區(qū)消費模式特點
- 指定消費topic、partition和offset通過向服務(wù) 器發(fā)送RPC請求進行消費
- 需要自己提交offset
- 需要自己處理各種錯誤,如:leader切換錯誤
- 需自行處理消費者負(fù)載均衡策略
3.2 組消費模式特點
- 最終也是通過向服務(wù)器發(fā)送RPC請求完成的(和分區(qū)消費模式一樣)
- 組消費模式由Kafka服務(wù)器端處理各種錯誤,然后將消息放入隊列再封裝為迭代器(隊列為FetchedDataChunk對象),客戶端只需在迭代器上迭代取出消息
- 由Kafka服務(wù)器端周期性的通過scheduler提交當(dāng)前消費的offset,無需客戶端負(fù)責(zé)
- Kafka服務(wù)器端處理消費者負(fù)載均衡
- 監(jiān)控工具Kafka Offset Monitor和Kafka Manager均是基于組消費模式
所以,盡可能使用組消費模式,除非需要
- 自己管理offset,比如想實現(xiàn)消息投遞的其他語義
- 自己處理各種錯誤,根據(jù)自己業(yè)務(wù)的需求
本文轉(zhuǎn)載自微信公眾號「 JavaEdge」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 JavaEdge公眾號。