Kafka系列之(1)——Kafka概念和架構(gòu)

1、概念

Producer:

消息生產(chǎn)者欲芹,就是向kafka broker發(fā)消息的客戶端。

Consumer:

消費(fèi)消息。每個(gè)consumer屬于一個(gè)特定的consumer group(可為每個(gè)consumer指定group name徽缚,若不指定group name則屬于默認(rèn)的group)。同一topic的一條消息只能被同一個(gè)consumer group內(nèi)的一個(gè)consumer消費(fèi)革屠,但多個(gè)consumer group可同時(shí)消費(fèi)這一消息猎拨。Consumer Group中的每個(gè)Consumer讀取Topic的一個(gè)或多個(gè)Partitions,并且是唯一的Consumer屠阻;一個(gè)Consumer group的多個(gè)consumer的所有線程依次有序地消費(fèi)一個(gè)topic的所有partitions,如果Consumer group中所有consumer總線程大于partitions數(shù)量红省,則會(huì)出現(xiàn)空閑情況。這樣可以做到負(fù)載均衡国觉,也可以實(shí)現(xiàn)順序消費(fèi)(group中只有一個(gè)consumer)吧恃。

Broker:

一臺(tái)kafka服務(wù)器就是一個(gè)broker。一個(gè)集群由多個(gè)broker組成麻诀。一個(gè)broker可以容納多個(gè)topic痕寓。

topic:

可以理解為一個(gè)MQ消息隊(duì)列的名字。每條發(fā)布到Kafka集群的消息都有一個(gè)類別蝇闭,這個(gè)類別被稱為topic呻率。(物理上不同topic的消息分開存儲(chǔ),邏輯上一個(gè)topic的消息雖然保存于一個(gè)或多個(gè)broker上但用戶只需指定消息的topic即可生產(chǎn)或消費(fèi)數(shù)據(jù)而不必關(guān)心數(shù)據(jù)存于何處)呻引。

Partition:

parition是物理上的概念礼仗,每個(gè)topic包含一個(gè)或多個(gè)partition,創(chuàng)建topic時(shí)可指定parition數(shù)量。每個(gè)partition對(duì)應(yīng)于一個(gè)文件夾元践,該文件夾下存儲(chǔ)該partition的數(shù)據(jù)和索引文件韭脊。為了實(shí)現(xiàn)擴(kuò)展性,一個(gè)非常大的topic可以分布到多個(gè) broker(即服務(wù)器)上单旁,一個(gè)topic可以分為多個(gè)partition沪羔,每個(gè)partition是一個(gè)有序的隊(duì)列。partition中的每條消息 都會(huì)被分配一個(gè)有序的id(offset)象浑。kafka只保證按一個(gè)partition中的順序?qū)⑾l(fā)給consumer蔫饰,不保證一個(gè)topic的整體 (多個(gè)partition間)的順序。也就是說(shuō)愉豺,一個(gè)topic在集群中可以有多個(gè)partition死嗦,那么分區(qū)的策略是什么?(消息發(fā)送到哪個(gè)分區(qū)上粒氧,有兩種基本的策略越除,一是采用Key Hash算法,一是采用Round Robin算法)

Offset:

kafka的存儲(chǔ)文件都是按照offset.kafka來(lái)命名外盯,用offset做名字的好處是方便查找摘盆。例如你想找位于2049的位置,只要找到2048.kafka的文件即可饱苟。當(dāng)然the first offset就是00000000000.kafka

2孩擂、架構(gòu)


leader-followers結(jié)構(gòu)

每個(gè)分區(qū)都由一個(gè)服務(wù)器作為“l(fā)eader”,零或若干服務(wù)器作為“followers”,leader負(fù)責(zé)處理消息的讀和寫箱熬,followers則去復(fù)制leader.如果leader down了类垦,followers中的一臺(tái)則會(huì)自動(dòng)成為leader。集群中的每個(gè)服務(wù)都會(huì)同時(shí)扮演兩個(gè)角色:作為它所持有的一部分分區(qū)的leader城须,同時(shí)作為其他分區(qū)的followers蚤认,這樣集群就會(huì)據(jù)有較好的負(fù)載均衡。同時(shí)糕伐,副本也保證了kafka的容錯(cuò)能力砰琢。

Zookeeper負(fù)責(zé)選擇leader和保存kafka的元數(shù)據(jù)(服務(wù)器和topic名稱等信息)

3、Kafka消息處理

Producer根據(jù)指定的partition方法(round-robin良瞧、hash等)陪汽,將消息發(fā)布到指定topic的partition里面。

kafka集群接收到Producer發(fā)過(guò)來(lái)的消息后褥蚯,將其持久化到硬盤挚冤,并保留消息指定時(shí)長(zhǎng)(可配置),而不關(guān)注消息是否被消費(fèi)赞庶。

Consumer從kafka集群pull數(shù)據(jù)训挡,并控制獲取消息的offset澳骤。

Kafka需要維持的元數(shù)據(jù)只有一個(gè)–消費(fèi)消息在Partition中的offset值,Consumer每消費(fèi)一個(gè)消息舍哄,offset就會(huì)加1宴凉。其實(shí)消息的狀態(tài)完全是由Consumer控制的誊锭,Consumer可以跟蹤和重設(shè)這個(gè)offset值表悬,這樣的話Consumer就可以讀取任意位置的消息。

4丧靡、Zookeeper中存儲(chǔ)的Kafka節(jié)點(diǎn)結(jié)構(gòu)


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蟆沫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子温治,更是在濱河造成了極大的恐慌饭庞,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熬荆,死亡現(xiàn)場(chǎng)離奇詭異舟山,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)卤恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門累盗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人突琳,你說(shuō)我怎么就攤上這事若债。” “怎么了拆融?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蠢琳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我镜豹,道長(zhǎng)傲须,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任趟脂,我火速辦了婚禮躏碳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘散怖。我一直安慰自己菇绵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布镇眷。 她就那樣靜靜地躺著咬最,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欠动。 梳的紋絲不亂的頭發(fā)上永乌,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天惑申,我揣著相機(jī)與錄音,去河邊找鬼翅雏。 笑死圈驼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的望几。 我是一名探鬼主播绩脆,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼橄抹!你這毒婦竟也來(lái)了靴迫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤楼誓,失蹤者是張志新(化名)和其女友劉穎玉锌,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疟羹,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡主守,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了榄融。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片参淫。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剃袍,靈堂內(nèi)的尸體忽然破棺而出黄刚,到底是詐尸還是另有隱情,我是刑警寧澤民效,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布憔维,位于F島的核電站,受9級(jí)特大地震影響畏邢,放射性物質(zhì)發(fā)生泄漏业扒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一舒萎、第九天 我趴在偏房一處隱蔽的房頂上張望程储。 院中可真熱鬧,春花似錦臂寝、人聲如沸章鲤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)败徊。三九已至,卻和暖如春掏缎,著一層夾襖步出監(jiān)牢的瞬間皱蹦,已是汗流浹背煤杀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沪哺,地道東北人沈自。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像辜妓,于是被迫代替她去往敵國(guó)和親枯途。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,707評(píng)論 13 425
  • Kafka簡(jiǎn)介 Kafka是一種分布式的嫌拣,基于發(fā)布/訂閱的消息系統(tǒng)柔袁。主要設(shè)計(jì)目標(biāo)如下: 以時(shí)間復(fù)雜度為O(1)的方...
    Alukar閱讀 3,074評(píng)論 0 43
  • 本文轉(zhuǎn)載自:http://www.cnblogs.com/likehua/p/3999538.html呆躲,作者做了一...
    shunyang閱讀 3,948評(píng)論 0 22
  • 目標(biāo) 高吞吐量來(lái)支持高容量的事件流處理 支持從離線系統(tǒng)加載數(shù)據(jù) 低延遲的消息系統(tǒng) 持久化 依賴文件系統(tǒng)异逐,持久化到本...
    jiangmo閱讀 1,262評(píng)論 0 4
  • 江南煙雨過(guò) 小橋流水時(shí) 二月春風(fēng)吹牛角 牧童歸去落夕陽(yáng) 林中飛鳥盡 花香落滿愁 何處鐘聲何處去 明年此時(shí)更無(wú)聲
    愛(ài)陳子閱讀 301評(píng)論 0 1