《Kafka成神之路》- 三圖搞懂分區(qū)、組消費模式
? 點擊上方“JavaEdge”,關(guān)注公眾號

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ù)的需求
往期推薦

目前交流群已有?800+人,旨在促進技術(shù)交流,可關(guān)注公眾號添加筆者微信邀請進群
喜歡文章,點個“在看、點贊、分享”素質(zhì)三連支持一下~
