KafkaConsumer 分析

image.png

1. Old Low Level Consumer API

1.1 優(yōu)缺點(diǎn)

1.1.1優(yōu)點(diǎn)

使用Low Level Consumer (Simple Consumer)的主要原因是瞳筏,用戶(hù)希望比Consumer Group更好的控制數(shù)據(jù)的消費(fèi)缭付。比如:
1.同一條消息讀多次
2.只讀取某個(gè)Topic的部分Partition
3.管理事務(wù)奢人,從而確保每條消息被處理一次差购,且僅被處理一次
4.可以做到at-least-once或者exactly-once

1.1.2缺點(diǎn)

1.與Consumer Group相比讨盒,Low Level Consumer要求用戶(hù)做大量的額外工作
必須在應(yīng)用程序中跟蹤offset,從而確定下一條應(yīng)該消費(fèi)哪條消息
2.應(yīng)用程序需要通過(guò)程序獲知每個(gè)Partition的Leader是誰(shuí),必須處理Leader的變化

1.1.3使用Low Level Consumer的一般流程如下

1.查找到一個(gè)“活著”的Broker吉捶,并且找出每個(gè)Partition的Leader
2.找出每個(gè)Partition的Follower
3.定義好請(qǐng)求霹陡,該請(qǐng)求應(yīng)該能描述應(yīng)用程序需要哪些數(shù)據(jù)
4.Fetch數(shù)據(jù)
5.識(shí)別Leader的變化,并對(duì)之作出必要的響應(yīng)

1.2 源碼解析

image.png

image.png

image.png

image.png

image.png

image.png

2. Old High Level Consumer API

2.1 優(yōu)缺點(diǎn)

2.1.1優(yōu)點(diǎn)

很多時(shí)候双藕,客戶(hù)程序只是希望從Kafka讀取數(shù)據(jù)淑趾,不太關(guān)心消息offset的處理。同時(shí)也希望提供一些語(yǔ)義蔓彩,例如同一條消息只被某一個(gè)Consumer消費(fèi)(單播)或被所有Consumer消費(fèi)(廣播)治笨。因此驳概,Kafka Hight Level Consumer提供了一個(gè)從Kafka消費(fèi)數(shù)據(jù)的高層抽象赤嚼,從而屏蔽掉其中的細(xì)節(jié)并提供豐富的語(yǔ)義。
exactly-once

2.1.2缺點(diǎn)

目前顺又,最新版(0.8.2.1)Kafka的Consumer Rebalance的控制策略是由每一個(gè)Consumer通過(guò)在Zookeeper上注冊(cè)Watch完成的更卒。每個(gè)Consumer被創(chuàng)建時(shí)會(huì)觸發(fā)Consumer Group的Rebalance,具體啟動(dòng)流程如下:

  • High Level Consumer啟動(dòng)時(shí)將其ID注冊(cè)到其Consumer Group下稚照,在Zookeeper上的路徑為/consumers/[consumer group]/ids/[consumer id]
  • /consumers/[consumer group]/ids上注冊(cè)Watch
  • /brokers/ids上注冊(cè)Watch
  • 如果Consumer通過(guò)Topic Filter創(chuàng)建消息流蹂空,則它會(huì)同時(shí)在/brokers/topics上也創(chuàng)建Watch
  • 強(qiáng)制自己在其Consumer Group內(nèi)啟動(dòng)Rebalance流程

在這種策略下,每一個(gè)Consumer或者Broker的增加或者減少都會(huì)觸發(fā)Consumer Rebalance果录。因?yàn)槊總€(gè)Consumer只負(fù)責(zé)調(diào)整自己所消費(fèi)的Partition上枕,為了保證整個(gè)Consumer Group的一致性,當(dāng)一個(gè)Consumer觸發(fā)了Rebalance時(shí)弱恒,該Consumer Group內(nèi)的其它所有其它Consumer也應(yīng)該同時(shí)觸發(fā)Rebalance辨萍。

該方式有如下缺陷:

2.2 源碼解析

image.png
image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png
image.png

image.png

3. New Consumer API

1.java語(yǔ)言編寫(xiě)
2.comsumer offset保存于KafkaCluster的__consumer_offsets topic中师崎,0.8.2版本的consumer offset保存于zk中,可以去zk上手動(dòng)修改offset
3.支持自己commit offset與自動(dòng)commit offset

4.kafka to sparkstreaming的兩種模式解析

image.png

相關(guān)文檔&博客
http://kafka.apache.org/090/documentation.html#simpleconsumerapi
http://www.jasongj.com/2015/08/09/KafkaColumn4/
https://cloud.tencent.com/developer/article/1004821

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末椅棺,一起剝皮案震驚了整個(gè)濱河市犁罩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌土陪,老刑警劉巖昼汗,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鬼雀,居然都是意外死亡顷窒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)源哩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鞋吉,“玉大人,你說(shuō)我怎么就攤上這事励烦∥阶牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵坛掠,是天一觀的道長(zhǎng)赊锚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)屉栓,這世上最難降的妖魔是什么舷蒲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮友多,結(jié)果婚禮上牲平,老公的妹妹穿的比我還像新娘。我一直安慰自己域滥,他們只是感情好纵柿,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著启绰,像睡著了一般昂儒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上委可,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天渊跋,我揣著相機(jī)與錄音,去河邊找鬼。 笑死刹枉,一個(gè)胖子當(dāng)著我的面吹牛叽唱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播微宝,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼棺亭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蟋软?” 一聲冷哼從身側(cè)響起镶摘,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岳守,沒(méi)想到半個(gè)月后凄敢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡湿痢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年涝缝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片譬重。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拒逮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出臀规,到底是詐尸還是另有隱情滩援,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布塔嬉,位于F島的核電站玩徊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谨究。R本人自食惡果不足惜恩袱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望记盒。 院中可真熱鬧憎蛤,春花似錦外傅、人聲如沸纪吮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碾盟。三九已至,卻和暖如春技竟,著一層夾襖步出監(jiān)牢的瞬間冰肴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熙尉,地道東北人联逻。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像检痰,于是被迫代替她去往敵國(guó)和親包归。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,727評(píng)論 13 425
  • 本文轉(zhuǎn)載自http://dataunion.org/?p=9307 背景介紹Kafka簡(jiǎn)介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,475評(píng)論 0 34
  • 背景介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的铅歼,基于發(fā)布/訂閱的消息系統(tǒng)公壤。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O...
    高廣超閱讀 12,843評(píng)論 8 167
  • Kafka系列一- Kafka背景及架構(gòu)介紹 Kafka簡(jiǎn)介 Kafka是一種分布式的,基于發(fā)布/訂閱的消息系統(tǒng)椎椰。...
    raincoffee閱讀 2,211評(píng)論 0 22
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理厦幅,服務(wù)發(fā)現(xiàn),斷路器慨飘,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139