kafka核心問題

一 芯砸、 kafka是什么聪姿?
kafka是一個(gè)基于發(fā)布-訂閱模式的MQ碴萧,可以用來解耦、削封末购、異步等功能破喻。

二、kafka的架構(gòu)是怎樣的盟榴?
broker:kafka服務(wù)器
message是k-v結(jié)構(gòu)曹质,根據(jù)topic分為不同的類型
consumer訂閱并接收topic,producer發(fā)布topic
通過zookeeper管理broker與consumer的動(dòng)態(tài)加入與離開擎场。

一個(gè)topic分成多個(gè)partition (提高并發(fā)性)羽德,每個(gè)partition是一個(gè)有序隊(duì)列,根據(jù)負(fù)載均衡將消息發(fā)布到不同的partition中迅办。
partition都有自己的replication宅静,這些relication在不同的機(jī)器上。這些relication需要選取leader負(fù)責(zé)讀寫站欺,并由zooKeeper負(fù)責(zé)fail over姨夹。
每個(gè)partition對(duì)應(yīng)一個(gè)邏輯log,有多個(gè)segment組成矾策,每個(gè)segment中存儲(chǔ)多條message


寫入消息

讀取消息

Consumer1有兩個(gè)offset分別對(duì)應(yīng)Partition0磷账、Partition1;Consumer2有一個(gè)offset對(duì)應(yīng)Partition2贾虽。這個(gè)offset是由客戶端SDK負(fù)責(zé)保存的逃糟,Kafka的Broker完全無視這個(gè)東西的存在;一般情況下SDK會(huì)把它保存到zookeeper里面蓬豁。(所以需要給Consumer提供zookeeper的地址)绰咽。

三、kafka為什么這么快地粪?

  1. 磁盤順序IO
  2. 消費(fèi)者讀取消息Zero-Copy:只需要兩次拷貝
  3. 批量處理:合并小的請(qǐng)求剃诅,減少IO次數(shù)
  4. 順序?qū)懭胂⑹褂脙?nèi)存映射文件(Memory Mapped Files),不是直接寫到硬盤里驶忌。 Kafka提供了一個(gè)參數(shù)——producer.type來控制是不是主動(dòng)flush矛辕,如果Kafka寫入到mmap之后就立即flush然后再返回Producer叫 同步 (sync);寫入mmap之后立即返回Producer不調(diào)用flush叫 異步 (async)

總結(jié):Kafka速度的秘訣在于付魔,它把所有的消息都變成一個(gè)的文件聊品。通過mmap提高I/O速度,寫入數(shù)據(jù)的時(shí)候它是末尾添加所以速度最優(yōu)几苍;讀取數(shù)據(jù)的時(shí)候配合sendfile直接暴力輸出

上面提到的一些技術(shù)在Java中都有相應(yīng)的API
Java NIO翻屈,它給我提供了一個(gè)MappedByteBuffer類可以用來實(shí)現(xiàn)內(nèi)存映射
Java的NIO提供了FileChannel,它的transferTo妻坝、transferFrom方法就是Zero Copy伸眶。

四惊窖、kafka怎樣保證高可用?
ISR(In-Sync Replicas):增加副本
ISR是對(duì)partition而言的厘贼,其中一個(gè)replica為leader界酒,其他都為followers.
leader處理partition的所有讀寫請(qǐng)求,其他的都是備份嘴秸。與此同時(shí)毁欣,follower會(huì)被動(dòng)定期地去復(fù)制leader上的數(shù)據(jù)。如果一個(gè)flower比一個(gè)leader落后太多岳掐,或者超過一定時(shí)間未發(fā)起數(shù)據(jù)復(fù)制請(qǐng)求凭疮,則leader將其重ISR中移除。
ISR的管理要依賴zk串述,如果Leader失效执解,選舉也要zk完成。

五纲酗、producer向broker發(fā)送消息衰腌,怎樣保證可靠性?
通過確認(rèn)參數(shù)request.required.acks設(shè)置可靠性的等級(jí)
1:只要接到Leader的確認(rèn)耕姊,就算是發(fā)送成功了桶唐。如果Leader
0:只要發(fā)出去就不管了栅葡,這樣的吞吐量最大茉兰,但可靠性最差。
-1:需要等待所有的followers接到消息后欣簇,才算發(fā)送成功规脸,可靠性最高,吞吐量最小熊咽。
默認(rèn)是1

六莫鸭、 當(dāng)consumer上線或者下線的時(shí)候,會(huì)發(fā)生什么横殴?
需要重新確定partition和consumer的關(guān)系被因,這就是rebalance,會(huì)帶來超時(shí)衫仑、抖動(dòng)等問題梨与。

七、怎樣保證消息的有序性文狱?

感謝:
kafka消息系統(tǒng)基礎(chǔ)知識(shí)索引
kafka系列

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粥鞋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瞄崇,更是在濱河造成了極大的恐慌呻粹,老刑警劉巖壕曼,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異等浊,居然都是意外死亡腮郊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門凿掂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伴榔,“玉大人,你說我怎么就攤上這事庄萎∽偕伲” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵糠涛,是天一觀的道長(zhǎng)援奢。 經(jīng)常有香客問我,道長(zhǎng)忍捡,這世上最難降的妖魔是什么集漾? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮砸脊,結(jié)果婚禮上具篇,老公的妹妹穿的比我還像新娘。我一直安慰自己凌埂,他們只是感情好驱显,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瞳抓,像睡著了一般埃疫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孩哑,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天栓霜,我揣著相機(jī)與錄音,去河邊找鬼横蜒。 笑死胳蛮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丛晌。 我是一名探鬼主播仅炊,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼茵乱!你這毒婦竟也來了茂洒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎督勺,沒想到半個(gè)月后渠羞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡智哀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年次询,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷叫。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡屯吊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摹菠,到底是詐尸還是另有隱情盒卸,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布次氨,位于F島的核電站蔽介,受9級(jí)特大地震影響吟榴,放射性物質(zhì)發(fā)生泄漏臀规。R本人自食惡果不足惜顽素,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一猾愿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鬼廓,春花似錦趁怔、人聲如沸郑兴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挑童,卻和暖如春累铅,著一層夾襖步出監(jiān)牢的瞬間跃须,已是汗流浹背站叼。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菇民,地道東北人尽楔。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像第练,于是被迫代替她去往敵國(guó)和親阔馋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

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