Kafka面試問題2

1 Kafka主要特點(diǎn)?

1 同時(shí)為發(fā)布和訂閱提供高吞吐量。據(jù)了解,Kafka每秒可以生產(chǎn)約25萬消息(50 MB)棺榔,每秒處理55萬消息(110 MB)。
2 可進(jìn)行持久化操作隘道。將消息持久化到磁盤症歇,因此可用于批量消費(fèi),例如ETL谭梗,以及實(shí)時(shí)應(yīng)用程序忘晤。通過將數(shù)據(jù)持久化到硬盤以及replication防止數(shù)據(jù)丟失。
3 分布式系統(tǒng)激捏,易于向外擴(kuò)展设塔。所有的producer、broker和consumer都會(huì)有多個(gè)远舅,均為分布式的闰蛔。無需停機(jī)即可擴(kuò)展機(jī)器痕钢。
4 消息被處理的狀態(tài)是在consumer端維護(hù),而不是由server端維護(hù)序六。當(dāng)失敗時(shí)能自動(dòng)平衡任连。
5 支持online和offline的場(chǎng)景。

2 Kafka的架構(gòu):

Kafka的架構(gòu)

Kayka的整體架構(gòu)非常簡(jiǎn)單例诀,是顯式分布式架構(gòu)随抠,producer、broker(kafka)和consumer都可以有多個(gè)繁涂。Producer拱她,consumer實(shí)現(xiàn)Kafka注冊(cè)的接口,數(shù)據(jù)從producer發(fā)送到broker扔罪,broker承擔(dān)一個(gè)中間緩存和分發(fā)的作用秉沼。broker分發(fā)注冊(cè)到系統(tǒng)中的consumer。broker的作用類似于緩存矿酵,即活躍的數(shù)據(jù)和離線處理系統(tǒng)之間的緩存氧猬。客戶端和服務(wù)器端的通信坏瘩,是基于簡(jiǎn)單,高性能漠魏,且與編程語(yǔ)言無關(guān)的TCP協(xié)議倔矾。

3 kafka的高吞吐率

高吞吐是kafka需要實(shí)現(xiàn)的核心目標(biāo)之一,為此kafka做了以下一些設(shè)計(jì):
1 數(shù)據(jù)磁盤持久化:消息不在內(nèi)存中cache柱锹,直接寫入到磁盤哪自,充分利用
磁盤的順序讀寫性能
2 zero-copy:減少IO操作步驟
3 數(shù)據(jù)批量發(fā)送
4 數(shù)據(jù)壓縮
5 Topic劃分為多個(gè)partition,提高并行能力

4 kafka的負(fù)載均衡

  • 1 producer根據(jù)用戶指定的算法禁熏,將消息發(fā)送到指定的partition
  • 2 存在多個(gè)partiiton壤巷,每個(gè)partition有自己的replica,每個(gè)replica分布在不同的Broker節(jié)點(diǎn)上
  • 3 多個(gè)partition需要選取出lead partition瞧毙,lead partition負(fù)責(zé)讀寫胧华,并由-
    zookeeper負(fù)責(zé)fail over
  • 4 通過zookeeper管理broker與consumer的動(dòng)態(tài)加入與離開

5 拉取系統(tǒng)

由于kafka broker會(huì)持久化數(shù)據(jù),broker沒有內(nèi)存壓力宙彪,因此矩动,consumer非常適合采取pull的方式消費(fèi)數(shù)據(jù),具有以下幾點(diǎn)好處:

  • 1 簡(jiǎn)化kafka設(shè)計(jì)
  • 2 consumer根據(jù)消費(fèi)能力自主控制消息拉取速度
  • 3 consumer根據(jù)自身情況自主選擇消費(fèi)模式释漆,例如批量悲没,重復(fù)消費(fèi),從尾端開始消費(fèi)等

6 可擴(kuò)展性

當(dāng)需要增加broker結(jié)點(diǎn)時(shí)男图,新增的broker會(huì)向zookeeper注冊(cè)示姿,而producer及consumer會(huì)根據(jù)注冊(cè)在zookeeper上的watcher監(jiān)聽感知這些變化甜橱,并及時(shí)作出調(diào)整。

7 Kayka的應(yīng)用場(chǎng)景

1栈戳、消息隊(duì)列
2岂傲、行為跟蹤:跟蹤用戶瀏覽頁(yè)面、搜索及其他行為荧琼,以發(fā)布-訂閱的模式實(shí)時(shí)記錄到對(duì)應(yīng)的topic里
3譬胎、元信息監(jiān)控:運(yùn)維性質(zhì)的數(shù)據(jù)監(jiān)控
4、日志收集
5命锄、流處理
6堰乔、事件源
7、持久性日志(commit log)

8 Kayka的設(shè)計(jì)要點(diǎn):

1脐恩、直接使用linux 文件系統(tǒng)的cache镐侯,來高效緩存數(shù)據(jù)。
Kafka數(shù)據(jù)不是實(shí)時(shí)寫入硬盤驶冒,采用內(nèi)存映射文件(分頁(yè)存儲(chǔ))來利用內(nèi)存提高I/O效率苟翻,利用操作系統(tǒng)的頁(yè)來實(shí)現(xiàn)物理內(nèi)存映射,映射完后物理內(nèi)存上的操作會(huì)被同步到硬盤上骗污,(順序?qū)懘疟P效率比隨機(jī)寫內(nèi)存要高)崇猫。
如果Kafka寫入到mmap之后就立即flush然后再返回Producer叫同步(sync);寫入mmap之后立即返回Producer不調(diào)用flush叫異步(async)需忿。

2诅炉、采用linux Zero-Copy提高發(fā)送性能。傳統(tǒng)的數(shù)據(jù)發(fā)送需要發(fā)送4次上下文切換屋厘,采用sendfile系統(tǒng)調(diào)用之后涕烧,數(shù)據(jù)直接在內(nèi)核態(tài)交換,系統(tǒng)上下文切換減少為2次汗洒。根據(jù)測(cè)試結(jié)果议纯,可以提高60%的數(shù)據(jù)發(fā)送性能。Zero-Copy詳細(xì)的技術(shù)細(xì)節(jié)可以參考:https://www.ibm.com/developerworks/linux/library/j-zerocopy/

3溢谤、數(shù)據(jù)在磁盤上存取代價(jià)為O(1)瞻凤。kafka以topic來進(jìn)行消息管理,每個(gè)topic包含多個(gè)partition溯香,每個(gè)partition對(duì)應(yīng)一個(gè)邏輯log鲫构,有多個(gè)segment組成。每個(gè)segment中存儲(chǔ)多條消息(見下圖)玫坛,消息id由其邏輯位置決定结笨,即從消息id可直接定位到消息的存儲(chǔ)位置,避免id到位置的額外映射。每個(gè)partition在內(nèi)存中對(duì)應(yīng)一個(gè)index炕吸,記錄每個(gè)segment中的第一條消息偏移伐憾。發(fā)布者發(fā)到某個(gè)topic的消息會(huì)被均勻的分布到多個(gè)part上(隨機(jī)或根據(jù)用戶指定的回調(diào)函數(shù)進(jìn)行分布),broker收到發(fā)布消息往對(duì)應(yīng)partition的最后一個(gè)segment上添加該消息赫模,當(dāng)某個(gè)segment上的消息條數(shù)達(dá)到配置值或消息發(fā)布時(shí)間超過閾值時(shí)树肃,segment上的消息會(huì)被flush到磁盤,只有flush到磁盤上的消息訂閱者才能訂閱到瀑罗,segment達(dá)到一定的大小后將不會(huì)再往該segment寫數(shù)據(jù)胸嘴,broker會(huì)創(chuàng)建新的segment。

4斩祭、顯式分布式劣像,即所有的producer、broker和consumer都會(huì)有多個(gè)摧玫,均為分布式的耳奕。Producer和broker之間沒有負(fù)載均衡機(jī)制。broker和consumer之間利用zookeeper進(jìn)行負(fù)載均衡诬像。所有broker和consumer都會(huì)在zookeeper中進(jìn)行注冊(cè)屋群,且zookeeper會(huì)保存他們的一些元數(shù)據(jù)信息。如果某個(gè)broker和consumer發(fā)生了變化坏挠,所有其他的broker和consumer都會(huì)得到通知芍躏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市降狠,隨后出現(xiàn)的幾起案子纸肉,更是在濱河造成了極大的恐慌,老刑警劉巖喊熟,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異姐刁,居然都是意外死亡芥牌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門聂使,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壁拉,“玉大人,你說我怎么就攤上這事柏靶∑恚” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵屎蜓,是天一觀的道長(zhǎng)痘昌。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么辆苔? 我笑而不...
    開封第一講書人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任算灸,我火速辦了婚禮,結(jié)果婚禮上驻啤,老公的妹妹穿的比我還像新娘菲驴。我一直安慰自己,他們只是感情好骑冗,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開白布赊瞬。 她就那樣靜靜地躺著,像睡著了一般贼涩。 火紅的嫁衣襯著肌膚如雪巧涧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評(píng)論 1 312
  • 那天磁携,我揣著相機(jī)與錄音褒侧,去河邊找鬼。 笑死谊迄,一個(gè)胖子當(dāng)著我的面吹牛闷供,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播统诺,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼歪脏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了粮呢?” 一聲冷哼從身側(cè)響起婿失,我...
    開封第一講書人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎啄寡,沒想到半個(gè)月后豪硅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺物,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年懒浮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片识藤。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡砚著,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痴昧,到底是詐尸還是另有隱情稽穆,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布赶撰,位于F島的核電站舌镶,受9級(jí)特大地震影響柱彻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乎折,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一绒疗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骂澄,春花似錦吓蘑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至健提,卻和暖如春琳猫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背私痹。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工脐嫂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紊遵。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓账千,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親暗膜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匀奏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

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