Java程序員面試必備——kafka的專業(yè)術(shù)語(yǔ)

主題 + 客戶端

  1. 發(fā)布訂閱的對(duì)象是主題(Topic)

  2. 向主題發(fā)布消息的客戶端應(yīng)用程序稱為生產(chǎn)者(Producer)制市,生產(chǎn)者可以持續(xù)不斷地向多個(gè)主題發(fā)送消息

  3. 訂閱這些主題消息的客戶端應(yīng)用程序稱為消費(fèi)者(Consumer)穴店,消費(fèi)者能夠同時(shí)訂閱多個(gè)主題的消息

4.生產(chǎn)者和消費(fèi)者統(tǒng)稱為客戶端

服務(wù)端

  1. Kafka的服務(wù)端由被稱為Broker的服務(wù)進(jìn)程構(gòu)成柬讨,一個(gè)Kafka集群由多個(gè)Broker組成

  2. Broker負(fù)責(zé)接收和處理客戶端發(fā)送過(guò)來(lái)的請(qǐng)求疾党,以及對(duì)消息進(jìn)行持久化

  3. 多個(gè)Broker進(jìn)程能夠運(yùn)行在同一臺(tái)機(jī)器上,但更常見(jiàn)的做法是將不同的Broker分散運(yùn)行在不同的機(jī)器上

  • 這樣如果集群中某一臺(tái)機(jī)器宕機(jī)了,即使在它上面運(yùn)行的所有Broker進(jìn)程都掛掉了
  • 其他機(jī)器上的Broker也依然能夠?qū)ν馓峁┓?wù)浑度,這是Kafka提供高可用的手段之一

備份

  1. 實(shí)現(xiàn)高可用的另一個(gè)手段是備份機(jī)制(Replication)

  2. 備份:把相同的數(shù)據(jù)拷貝到多臺(tái)機(jī)器上,這些相同的數(shù)據(jù)拷貝在Kafka中被稱為副本(Replica)

  3. 副本的數(shù)量是可以配置的鸦概,Kafka定義了兩類副本:領(lǐng)導(dǎo)者副本(Leader Replica)和追隨者副本(Follower Replica)

  • 領(lǐng)導(dǎo)者副本:對(duì)外提供服務(wù)箩张,對(duì)外指的是與客戶端程序進(jìn)行交互
  • 生產(chǎn)者總是向領(lǐng)導(dǎo)者副本寫消息
  • 消費(fèi)者總是從領(lǐng)導(dǎo)者副本讀消息
  • 追隨者副本:被動(dòng)地追隨領(lǐng)導(dǎo)者副本,不能與外界交互
  • 向領(lǐng)導(dǎo)者副本發(fā)送請(qǐng)求窗市,請(qǐng)求領(lǐng)導(dǎo)者副本把最新生產(chǎn)的消息發(fā)給它先慷,進(jìn)而與領(lǐng)導(dǎo)者副本保持同步
  • MySQL的從庫(kù)是可以處理讀請(qǐng)求的
  • Master-Slave => Leader-Follower
  1. 副本機(jī)制可以保證數(shù)據(jù)的持久化或者消息不丟失,但沒(méi)有解決伸縮性(Scalability)的問(wèn)題
  • 如果領(lǐng)導(dǎo)者副本積累了太多的數(shù)據(jù)以至于單臺(tái)Broker機(jī)器無(wú)法容納咨察,該如何處理论熙?
  • 可以把數(shù)據(jù)分割成多份,然后保存在不同的Broker上摄狱,這種機(jī)制就是分區(qū)(Partitioning)
  • MongoDB脓诡、Elasticsearch – Sharding
  • HBase – Region

分區(qū)

  1. Kafka中的分區(qū)機(jī)制是將每個(gè)主題劃分成多個(gè)分區(qū)(Partition),每個(gè)分區(qū)是一組有序的消息日志

  2. 生產(chǎn)者生產(chǎn)的每條消息只會(huì)被發(fā)送到一個(gè)分區(qū)中媒役,Kafka的分區(qū)編號(hào)是從0開始的

  3. 副本是在分區(qū)這個(gè)層級(jí)定義的祝谚,每個(gè)分區(qū)下可以配置N個(gè)副本,只能有1個(gè)領(lǐng)導(dǎo)者副本和N-1個(gè)追隨者副本

  4. 生產(chǎn)者向分區(qū)(分區(qū)的領(lǐng)導(dǎo)者副本)寫入消息酣衷,每條消息在分區(qū)中的位置由位移(Offset)來(lái)表征交惯,而分區(qū)位移總是從0開始

  5. 三層消息架構(gòu)

  • 第一層是主題層,每個(gè)主題可以配置M個(gè)分區(qū)鸥诽,而每個(gè)分區(qū)又可以配置N個(gè)副本
  • 第二層是分區(qū)
  • 每個(gè)分區(qū)的N個(gè)副本中只能有1個(gè)領(lǐng)導(dǎo)者副本商玫,對(duì)外提供服務(wù)
  • 其他N-1個(gè)副本是追隨者副本,只能提供數(shù)據(jù)冗余
  • 第三層是消息層牡借,分區(qū)中包含若干條消息拳昌,每條消息的位移從0開始,依次遞增
  • 最后钠龙,客戶端程序只能與分區(qū)的領(lǐng)導(dǎo)者副本進(jìn)行交互

持久化

  1. Kafka使用消息日志(Log)來(lái)保存數(shù)據(jù)炬藤,一個(gè)日志是磁盤上一個(gè)只能追加寫(Append-Only)消息的物理文件
  • 只能追加寫入,避免了緩慢的隨機(jī)IO操作碴里,改為性能較好的順序IO操作沈矿,這是實(shí)現(xiàn)Kafka高吞吐量的一個(gè)重要手段
  1. Kafka需要定期刪除消息以回收磁盤空間,可以通過(guò)日志片段(Log Segment)機(jī)制來(lái)實(shí)現(xiàn)
  • 在Kafka底層咬腋,一個(gè)日志又被細(xì)分成多個(gè)日志段羹膳,消息被追加到當(dāng)前最新的日志段
  • 當(dāng)寫滿一個(gè)日志段后,Kafka會(huì)自動(dòng)切分出一個(gè)新的日志段根竿,并將老的日志段封存起來(lái)
  • Kafka在后臺(tái)有定時(shí)任務(wù)定期地檢查這些老的日志段是否能夠被刪除陵像,從而實(shí)現(xiàn)回收磁盤空間的目的

消費(fèi)者

  1. 點(diǎn)對(duì)點(diǎn)模型(Peer to Peer就珠,P2P):同一條消息只能被下游的一個(gè)消費(fèi)者消費(fèi),其他消費(fèi)者不能染指

  2. Kafka通過(guò)消費(fèi)者組(Consumer Group)來(lái)實(shí)現(xiàn)P2P模型

  • 消費(fèi)者組:多個(gè)消費(fèi)者實(shí)例共同組成一個(gè)組來(lái)消費(fèi)一組主題
  • 這組主題中的每個(gè)分區(qū)都只會(huì)被組內(nèi)的一個(gè)消費(fèi)者實(shí)例消費(fèi)醒颖,其他消費(fèi)者實(shí)例不能消費(fèi)它
  • 消費(fèi)者對(duì)分區(qū)有所有權(quán)
  1. 引入消費(fèi)者組的目的:提高消費(fèi)者端的吞吐量(TPS)

  2. 消費(fèi)者實(shí)例(Consumer Instance):即可以是運(yùn)行消費(fèi)者應(yīng)用的進(jìn)妻怎,也可以是一個(gè)線程

  3. 重平衡(Rebalance)

  • 若組內(nèi)的某個(gè)實(shí)例掛了,Kafka能夠自動(dòng)檢測(cè)到泞歉,然后把這個(gè)掛掉的實(shí)例之前負(fù)責(zé)的分區(qū)轉(zhuǎn)移給組內(nèi)其他存活的消費(fèi)者
  • 重平衡引發(fā)的消費(fèi)者問(wèn)題很多逼侦,目前很多重平衡的Bug社區(qū)都無(wú)力解決
  1. 消費(fèi)者位移(Consumer Offset):記錄消費(fèi)者當(dāng)前消費(fèi)到了分區(qū)的哪個(gè)位置,隨時(shí)變化
  • 分區(qū)位移:表征的是消息在分區(qū)內(nèi)的位置腰耙,一旦消息被成功寫入到一個(gè)分區(qū)上榛丢,消息的分區(qū)位移就固定

小結(jié)

  1. 消息(Record):消息是Kafka處理的主要對(duì)象

  2. 主題(Topic):主題是承載消息的邏輯容器,實(shí)際使用中多用來(lái)區(qū)分具體的業(yè)務(wù)

  3. 分區(qū)(Partition):一個(gè)有序不變的消息序列沟优,每個(gè)主題下有多個(gè)分區(qū)

  4. 消息位移(Offset):也叫分區(qū)位移涕滋,表示一條消息在分區(qū)中的位置,是一個(gè)單調(diào)遞增且不變的值

  5. 副本(Replica)

  • Kafka中同一條消息能夠被拷貝到多個(gè)地方以提供數(shù)據(jù)冗余
  • 副本分為領(lǐng)導(dǎo)者副本和追隨者副本挠阁,副本在分區(qū)的層級(jí)下宾肺,每個(gè)分區(qū)可配置多個(gè)副本實(shí)現(xiàn)高可用
  1. 生產(chǎn)者(Producer):向主題發(fā)布消息的應(yīng)用程序

  2. 消費(fèi)者(Consumer):從主題訂閱消息的應(yīng)用程序

  3. 消費(fèi)者位移(Consumer Offset):表征消費(fèi)者的消費(fèi)進(jìn)度,每個(gè)消費(fèi)者都有自己的消費(fèi)者位移

  4. 消費(fèi)者組(Consumer Group):多個(gè)消費(fèi)者實(shí)例共同組成一個(gè)組侵俗,同時(shí)消費(fèi)多個(gè)分區(qū)以實(shí)現(xiàn)高吞吐

  5. 重平衡(Rebalance)

  • 消費(fèi)者組內(nèi)某個(gè)消費(fèi)者實(shí)例掛掉后锨用,其他消費(fèi)者實(shí)例自動(dòng)重新分配訂閱分區(qū)的過(guò)程
  • 重平衡是Kafka消費(fèi)者端實(shí)現(xiàn)高可用的重要手段

寫在最后

  • 第一:看完點(diǎn)贊,感謝您的認(rèn)可隘谣;
  • ...
  • 第二:隨手轉(zhuǎn)發(fā)增拥,分享知識(shí),讓更多人學(xué)習(xí)到寻歧;
  • ...
  • 第三:記得點(diǎn)關(guān)注掌栅,每天更新的!B敕骸猾封!
  • ...
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市噪珊,隨后出現(xiàn)的幾起案子晌缘,更是在濱河造成了極大的恐慌,老刑警劉巖痢站,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磷箕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阵难,警方通過(guò)查閱死者的電腦和手機(jī)岳枷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嫩舟,你說(shuō)我怎么就攤上這事氢烘。” “怎么了家厌?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)椎工。 經(jīng)常有香客問(wèn)我饭于,道長(zhǎng),這世上最難降的妖魔是什么维蒙? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任掰吕,我火速辦了婚禮,結(jié)果婚禮上颅痊,老公的妹妹穿的比我還像新娘殖熟。我一直安慰自己,他們只是感情好斑响,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布菱属。 她就那樣靜靜地躺著,像睡著了一般舰罚。 火紅的嫁衣襯著肌膚如雪纽门。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天营罢,我揣著相機(jī)與錄音赏陵,去河邊找鬼。 笑死饲漾,一個(gè)胖子當(dāng)著我的面吹牛蝙搔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播考传,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼吃型,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伙菊?” 一聲冷哼從身側(cè)響起败玉,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镜硕,沒(méi)想到半個(gè)月后运翼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兴枯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年血淌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悠夯,死狀恐怖癌淮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沦补,我是刑警寧澤乳蓄,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站夕膀,受9級(jí)特大地震影響虚倒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜产舞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一魂奥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧易猫,春花似錦耻煤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瞬场,卻和暖如春买鸽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贯被。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工眼五, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彤灶。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓看幼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親幌陕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诵姜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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