干貨 | Kafka 內(nèi)核知識(shí)梳理,附思維導(dǎo)圖

前面我們已經(jīng)分享過(guò)幾篇Kafka的文章檩咱,最近簡(jiǎn)單梳理了下Kafka內(nèi)核相關(guān)的知識(shí)揭措,涵蓋了Kafka架構(gòu)總結(jié),副本機(jī)制刻蚯,控制器绊含,高水位機(jī)制,日志或消息存儲(chǔ)炊汹,消息發(fā)送與消費(fèi)機(jī)制等方面知識(shí)躬充。文末含對(duì)應(yīng)的Kafka內(nèi)核思維導(dǎo)圖,供參考讨便。

1充甚、 架構(gòu)總結(jié)

1)Kafka實(shí)際上也是一個(gè)主從架構(gòu),有一個(gè)Controller角色即控制器霸褒,協(xié)調(diào)管理整個(gè)集群伴找;

2)有幾個(gè)Kafka術(shù)語(yǔ)肯定是不陌生的:broker,topic废菱,partition疆瑰,segment,生產(chǎn)者producer昙啄,消費(fèi)者consumer穆役;

2、消息發(fā)送機(jī)制

1)序列化器:序列化消息對(duì)象轉(zhuǎn)成字節(jié)數(shù)組梳凛,然后通過(guò)網(wǎng)絡(luò)傳輸耿币。

2)分區(qū)器:計(jì)算消息發(fā)往的具體分區(qū);如果顯示指定了partition韧拒,便不會(huì)走分區(qū)器淹接。

3)消息緩沖池:客戶端的消息緩沖池十性,默認(rèn)大小32M,見(jiàn)參數(shù)buffer.memory塑悼。

4)批量發(fā)送:緩沖池中消息會(huì)按batch分批次發(fā)送劲适,默認(rèn)批次大小16KB,見(jiàn)參數(shù)batch.size厢蒜。

3霞势、副本機(jī)制

1)分區(qū)副本默認(rèn)1,見(jiàn)參數(shù)default.replication.factor斑鸦。

2)副本作用(并不提供讀寫(xiě)分離)

  • 實(shí)現(xiàn)冗余愕贡,提高消息可靠性;
  • 實(shí)現(xiàn)高可用巷屿,參與leader選舉固以,在leader不可用時(shí)提高可用性。

3)leader副本選舉

  • 由控制器負(fù)責(zé)嘱巾;
  • 選舉機(jī)制或策略:首先要弄明白AR,ISR的概念憨琳,基本策略是從AR中找第一個(gè)存活的副本,且該副本在ISR中旬昭。

4)Unclean leader選舉

參數(shù)unclean.leader.election.enable篙螟,用于控制是否允許非同步副本參與leader 選舉,默認(rèn)false稳懒。如果開(kāi)啟,則當(dāng)ISR為空時(shí)就會(huì)從這些副本中選舉新的leader慢味,這個(gè)過(guò)程就稱為Unclean leader選舉场梆。

4、控制器概述

1)作用:協(xié)調(diào)與管理整個(gè)集群纯路,5個(gè)主要職責(zé):

  • 主題增刪改
  • 分區(qū)重分配
  • leader選舉
  • 元數(shù)據(jù)管理
  • broker成員管理或油,宕機(jī)或加入

2)控制器選舉:基于zookeeper實(shí)現(xiàn),利用了zookeeper的znode模型與監(jiān)聽(tīng)機(jī)制驰唬。

3)控制器故障轉(zhuǎn)移

  • 存在單點(diǎn)故障顶岸,但是每個(gè)broker節(jié)點(diǎn)都可以成為controller;
  • 故障轉(zhuǎn)移即failover也是基于zookeeper實(shí)現(xiàn)的叫编,znode模型與監(jiān)聽(tīng)機(jī)制辖佣,/controller節(jié)點(diǎn)。

5搓逾、HW機(jī)制

1)概念

HW即高水位卷谈,是Kafka副本對(duì)象的重要屬性,分區(qū)的高水位由leader副本的高水位表示霞篡,含義是被follower副本同步之后的位置世蔗。

2)作用

  • 定義消息可見(jiàn)性端逼,只有分區(qū)高水位以下的消息才能被消費(fèi);
  • 幫助kafka完成副本同步污淋,kafka是基于高水位實(shí)現(xiàn)的異步的副本同步機(jī)制顶滩。

3)LEO的概念

含義是日志末端位移(Log End Offset),下一條消息寫(xiě)入的位移寸爆。

6礁鲁、消息消費(fèi)機(jī)制

1)拉取機(jī)制

Kafka生產(chǎn)端是推的機(jī)制即Push,消費(fèi)端是拉的機(jī)制即Pull而昨。

2)Pull的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn)是消費(fèi)端可以自己控制消息的讀取速度和數(shù)量救氯;
  • 缺點(diǎn)是不知道服務(wù)端有沒(méi)有數(shù)據(jù),所以要一直pull或隔一定時(shí)間pull歌憨,可能要pull多次并等待着憨。

3)消息投遞語(yǔ)義:

Kafka默認(rèn)保證at-least-once delivery,容許用戶實(shí)現(xiàn)at-most-once語(yǔ)義务嫡,exactly-once的實(shí)現(xiàn)取決于目的存儲(chǔ)系統(tǒng)甲抖。

4)分區(qū)分配策略

  • RangeAssignor:按照分區(qū)范圍分配,當(dāng)前默認(rèn)策略心铃;
  • RoundRobinAssignor:輪詢的方式分配准谚;
  • StickyAssignor:Kafka 0.11版本引入,根據(jù)更多指標(biāo)比如負(fù)載去扣,盡可能均勻柱衔。

7、日志存儲(chǔ)機(jī)制

1)原理

  • 分段存儲(chǔ)愉棱,這里的段segment指的是日志段文件唆铐,Kafka中的日志含義即是消息或數(shù)據(jù),日志回滾受log.segment.bytes控制奔滑,默認(rèn)1G艾岂;
  • 索引文件,一個(gè)稀疏格式的索引朋其,受參數(shù)log.index.interval.bytes控制王浴,默認(rèn)4KB。即不是每條數(shù)據(jù)都會(huì)寫(xiě)索引梅猿,默認(rèn)每寫(xiě)4KB數(shù)據(jù)才會(huì)寫(xiě)一條索引氓辣。
$ ll
-rw-r--r-- 1 kafka kafka    1002496 Apr 25 17:08 00000000000051402174.index
-rw-r--r-- 1 kafka kafka 1073741338 Apr 25 17:08 00000000000051402174.log
-rw-r--r-- 1 kafka kafka   10485760 Apr 26 15:03 00000000000051638285.index
-rw-r--r-- 1 kafka kafka  219984088 Apr 26 15:04 00000000000051638285.log

2)日志留存策略Kafka 會(huì)定期檢查是否要?jiǎng)h除舊消息,見(jiàn)參數(shù) log.retention.check.interval.ms袱蚓,默認(rèn)5分鐘筛婉。當(dāng)前有三種日志留存策略:

  • 基于空間:log.retention.bytes,默認(rèn)未開(kāi)啟;
  • 基于時(shí)間:log.retention.hours(mintues/ms)爽撒,默認(rèn)7天入蛆;
  • 基于起始位移:Kafka 0.11.0.0版本引入,解決流處理場(chǎng)景中已處理的中間消息刪除問(wèn)題硕勿。

目前基于時(shí)間的日志留存策略最常使用哨毁。


為了更好的精進(jìn)學(xué)習(xí)Kafka,筆者參考本文制作了的一張思維導(dǎo)圖源武,分享:

關(guān)注本公眾號(hào)扼褪,后臺(tái)回復(fù) kafka2020 即可下載Kafka內(nèi)核高清PDF文檔。

往期推薦

1粱栖、如何快速全面掌握Kafka话浇?5000字吐血整理
2、HBase原理 | HBase Compaction介紹與參數(shù)調(diào)優(yōu)
3闹究、MapReduce Shuffle 和 Spark Shuffle 結(jié)業(yè)篇
4幔崖、實(shí)時(shí)數(shù)倉(cāng) | 你想要的數(shù)倉(cāng)分層設(shè)計(jì)與技術(shù)選型

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渣淤,隨后出現(xiàn)的幾起案子赏寇,更是在濱河造成了極大的恐慌,老刑警劉巖价认,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗅定,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡用踩,警方通過(guò)查閱死者的電腦和手機(jī)渠退,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脐彩,“玉大人碎乃,你說(shuō)我怎么就攤上這事《∈海” “怎么了荠锭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵旱眯,是天一觀的道長(zhǎng)晨川。 經(jīng)常有香客問(wèn)我,道長(zhǎng)删豺,這世上最難降的妖魔是什么共虑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮呀页,結(jié)果婚禮上妈拌,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好尘分,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布猜惋。 她就那樣靜靜地躺著,像睡著了一般培愁。 火紅的嫁衣襯著肌膚如雪著摔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天定续,我揣著相機(jī)與錄音谍咆,去河邊找鬼。 笑死私股,一個(gè)胖子當(dāng)著我的面吹牛摹察,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倡鲸,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼供嚎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了旦签?” 一聲冷哼從身側(cè)響起查坪,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宁炫,沒(méi)想到半個(gè)月后偿曙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羔巢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年望忆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竿秆。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡启摄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幽钢,到底是詐尸還是另有隱情歉备,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布匪燕,位于F島的核電站蕾羊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏帽驯。R本人自食惡果不足惜龟再,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尼变。 院中可真熱鬧利凑,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至割按,卻和暖如春走哺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哲虾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工丙躏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束凑。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓晒旅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汪诉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子废恋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344