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