超全Kafka知識(shí)點(diǎn)總結(jié)(建議收藏!)

      網(wǎng)友投稿 1025 2022-05-28

      前段時(shí)間寫了Kafka快速入門系列1-8,但苦于知識(shí)點(diǎn)非常繁瑣,對(duì)于很多初級(jí)選手來(lái)說(shuō)并不友好,因此博主又根據(jù)所學(xué),整理了一份關(guān)于

      Kafka知識(shí)點(diǎn)總結(jié)

      ,希望對(duì)大家的學(xué)習(xí)有所幫助(?ω?)

      碼字不易,先贊后看!

      文章目錄

      1. 什么是Kafka

      2. Kafka的使用場(chǎng)景

      3. Kafka優(yōu)缺點(diǎn)

      4. Kafka架構(gòu)(流程)

      5. Kafka架構(gòu)(API)

      6.Topic內(nèi)部有哪些組成?

      7.分區(qū)和消費(fèi)組內(nèi)的消費(fèi)者之間的關(guān)系有哪些情況?

      8. 分區(qū)數(shù)、消費(fèi)者與讀取效率之間的關(guān)系

      9. 副本數(shù)與broker之間的關(guān)系

      10. 什么是主/從副本

      11. 主/從復(fù)本的作用是什么

      12. Isr是什么

      13. 生產(chǎn)者生產(chǎn)數(shù)據(jù)到kafka集群,數(shù)據(jù)到分區(qū)的方式

      14. Consumer消費(fèi)數(shù)據(jù)的流程

      15. Kafka中的數(shù)據(jù)刪除機(jī)制是什么?

      16. Kafka如何保證數(shù)據(jù)不丟失

      17. Kafka高性能的原因有哪里

      18. Kafka高效查詢數(shù)據(jù)的有哪些原因

      19. 如何從Kafka得到準(zhǔn)確的信息(不是重讀數(shù)據(jù))?

      20. Kafka的設(shè)計(jì)是什么樣的呢?

      21. 數(shù)據(jù)傳輸?shù)氖挛锒x有哪三種?

      22. Kafka判斷一個(gè)節(jié)點(diǎn)是否還活著有哪些條件?

      23. Kafka 與傳統(tǒng)消息系統(tǒng)之間有哪些區(qū)別?

      24. Kafka創(chuàng)建Topic時(shí)將分區(qū)放置到不同的Broker的策略是什么?

      25. Kafka新建的分區(qū)會(huì)在哪個(gè)目錄下創(chuàng)建

      26. partition的數(shù)據(jù)如何保存到硬盤

      27. kafka的ack機(jī)制

      28. Kafka的消費(fèi)者如何消費(fèi)數(shù)據(jù)

      29. 如何使kafka集群內(nèi)的數(shù)據(jù)是有序的?

      30. Zookeeper匯總保留了哪些數(shù)據(jù)?

      31. kafka consumer 什么情況會(huì)觸發(fā)再平衡reblance?

      32、描述下kafka consumer 再平衡步驟?

      33. 手動(dòng)提交offset有什么好處??

      34. 為什么kafka中的數(shù)據(jù)需要定期刪除或合并?

      1. 什么是Kafka

      kafka是一個(gè)分布式,分區(qū)的,多副本的,多訂閱者的消息發(fā)布訂閱系統(tǒng)。

      2. Kafka的使用場(chǎng)景

      應(yīng)用耦合、異步處理、限流削峰、消息驅(qū)動(dòng)的系統(tǒng)。

      3. Kafka優(yōu)缺點(diǎn)

      優(yōu)點(diǎn):

      可靠性強(qiáng)(分布式-分區(qū)-副本)、擴(kuò)展性強(qiáng)(可伸縮)、性能高(數(shù)據(jù)讀寫)、耐用性強(qiáng)(數(shù)據(jù)持久化)、時(shí)效性強(qiáng)。

      缺點(diǎn):

      由于是批量發(fā)送,數(shù)據(jù)并非真正的實(shí)時(shí)。

      僅支持統(tǒng)一分區(qū)內(nèi)消息有序,無(wú)法實(shí)現(xiàn)全局消息有序;

      有可能消息重復(fù)消費(fèi);

      依賴zookeeper進(jìn)行元數(shù)據(jù)管理。

      4. Kafka架構(gòu)(流程)

      生產(chǎn)者、kafka集群、消費(fèi)者、zookeeper

      5. Kafka架構(gòu)(API)

      生產(chǎn)者、消費(fèi)者、StreamAPI、ConnectAPI

      6.Topic內(nèi)部有哪些組成?

      每個(gè)Topic包含一個(gè)或者多個(gè)Partition,一個(gè)partition當(dāng)中存在多個(gè)segment文件段,每個(gè)segment分為兩部分,.log文件和.index文件。

      7.分區(qū)和消費(fèi)組內(nèi)的消費(fèi)者之間的關(guān)系有哪些情況?

      Partition = 消費(fèi)任務(wù)的并發(fā)度=剛剛好,每個(gè)任務(wù)讀取一個(gè)partition數(shù)據(jù)

      Partition > 消費(fèi)任務(wù)的并發(fā)度=有部分消費(fèi)任務(wù)讀取多個(gè)分區(qū)的數(shù)據(jù)

      Partition < 消費(fèi)任務(wù)的并發(fā)度=有部分消費(fèi)任務(wù)空閑(可以創(chuàng)建多于分區(qū)的消費(fèi)者數(shù)量)

      8. 分區(qū)數(shù)、消費(fèi)者與讀取效率之間的關(guān)系

      分區(qū)數(shù)越多,同一時(shí)間可以有越多的消費(fèi)者來(lái)進(jìn)行消費(fèi),消費(fèi)數(shù)據(jù)的速度就會(huì)越快,提高消費(fèi)的性能

      9. 副本數(shù)與broker之間的關(guān)系

      數(shù)據(jù)副本(包含本身)數(shù)一般情況下小于等于broker的個(gè)數(shù)

      10. 什么是主/從副本

      被復(fù)制的分區(qū)叫做主副本(Leader),復(fù)制出來(lái)的叫做從副本(Follower)

      11. 主/從復(fù)本的作用是什么

      主副本負(fù)責(zé)數(shù)據(jù)的讀寫。

      從副本只做數(shù)據(jù)備份,不做數(shù)據(jù)讀寫。

      12. Isr是什么

      ISR是一組與leaders完全同步的消息副本(包括leaders本身)。

      13. 生產(chǎn)者生產(chǎn)數(shù)據(jù)到kafka集群,數(shù)據(jù)到分區(qū)的方式

      a)沒有指定分區(qū)編號(hào),沒有指定key時(shí)采用輪詢方式存儲(chǔ)數(shù)據(jù)

      超全的Kafka知識(shí)點(diǎn)總結(jié)(建議收藏!)

      b)沒有指定分區(qū)編號(hào),指定key時(shí),數(shù)據(jù)分發(fā)策略為對(duì)key求取hash值,這個(gè)值與分區(qū)數(shù)量取余,余數(shù)就是分區(qū)編號(hào)。

      c)指定分區(qū)編號(hào),所有數(shù)據(jù)輸入到指定的分區(qū)內(nèi)

      d)自定義分區(qū)

      14. Consumer消費(fèi)數(shù)據(jù)的流程

      1、首先Consumer連接指定的Topic partition所在leader broker,使用折半/二分查找,先確定數(shù)據(jù)所在的segment。

      2、確定在哪個(gè)segment后,使用確定的segment內(nèi)的index文件找到數(shù)據(jù)具體的位置采用pull方式從kafkalogs中獲取消息。

      15. Kafka中的數(shù)據(jù)刪除機(jī)制是什么?

      1、時(shí)間:默認(rèn)存儲(chǔ)168小時(shí)(一周)

      2、數(shù)據(jù)的大小:默認(rèn) -1 (不刪除),可以自行設(shè)置。

      16. Kafka如何保證數(shù)據(jù)不丟失

      從大體上來(lái)看的話,Kafka中主要的角色有數(shù)據(jù)生產(chǎn)者(Producer),Kafka集群中負(fù)責(zé)存儲(chǔ)數(shù)據(jù)的Broker,數(shù)據(jù)消費(fèi)者(Consumer),因此這個(gè)問題需要從三個(gè)角度來(lái)進(jìn)行回答!

      1、生產(chǎn)者如何保證數(shù)據(jù)不丟失?? 通過ack 機(jī)制確保數(shù)據(jù)不丟失。

      2、kafka集群如何保證數(shù)據(jù)不丟失?? 通過數(shù)據(jù)副本保證數(shù)據(jù)不丟失。

      3、消費(fèi)者如何保證數(shù)據(jù)不丟失?? 通過維護(hù)數(shù)據(jù)的offset 保證數(shù)據(jù)不丟失。

      17. Kafka高性能的原因有哪里

      順序讀寫、分區(qū)、批量發(fā)送、數(shù)據(jù)壓縮

      18. Kafka高效查詢數(shù)據(jù)的有哪些原因

      1、Kafka把topic中一個(gè)parition大文件分成多個(gè)小文件段,通過多個(gè)小文件段,就容易定期清除或刪除已經(jīng)消費(fèi)完文件,減少磁盤占用。

      2、通過索引信息可以快速定位message和確定response的最大大小。

      3、通過index元數(shù)據(jù)全部映射到memory,可以避免segment file的IO磁盤操作。

      4、通過索引文件稀疏存儲(chǔ),可以大幅降低index文件元數(shù)據(jù)占用空間大小。

      19. 如何從Kafka得到準(zhǔn)確的信息(不是重讀數(shù)據(jù))?

      在數(shù)據(jù)生產(chǎn)過程中避免重復(fù)。

      在數(shù)據(jù)消耗期間避免重復(fù)。

      20. Kafka的設(shè)計(jì)是什么樣的呢?

      Kafka將消息以topic為單位進(jìn)行歸納。將向Kafka topic發(fā)布消息的程序成為producers。將預(yù)訂topics并消費(fèi)消息的程序成為consumer。 Kafka以集群的方式運(yùn)行,可以由一個(gè)或多個(gè)服務(wù)組成,每個(gè)服務(wù)叫做一個(gè)broker。producers通過網(wǎng)絡(luò)將消息發(fā)送到Kafka集群,集群向消費(fèi)者提供消息。

      21. 數(shù)據(jù)傳輸?shù)氖挛锒x有哪三種?

      1、最多一次:消息不會(huì)被重復(fù)發(fā)送,最多被傳輸一次,但也有可能一次不傳輸,可能會(huì)造成數(shù)據(jù)丟失。

      2、最少一次: 消息不會(huì)被漏發(fā)送,最少被傳輸一次,但也有可能被重復(fù)傳輸。可能會(huì)造成數(shù)據(jù)的重復(fù)消費(fèi)。

      3、精確的一次(Exactly once):不會(huì)漏傳輸也不會(huì)重復(fù)傳輸,每個(gè)消息都傳輸被一次而且僅僅被傳輸一次,這是大家所期望的。

      22. Kafka判斷一個(gè)節(jié)點(diǎn)是否還活著有哪些條件?

      1、節(jié)點(diǎn)必須可以維護(hù)和ZooKeeper的連接,Zookeeper通過心跳機(jī)制檢查每個(gè)節(jié)點(diǎn)的連接

      2、如果節(jié)點(diǎn)是個(gè)follower,他必須能及時(shí)的同步leader的寫操作,延時(shí)不能太久

      23. Kafka 與傳統(tǒng)消息系統(tǒng)之間有哪些區(qū)別?

      1、Kafka 持久化日志:這些日志可以被重復(fù)讀取和無(wú)限期保留

      2、Kafka 是一個(gè)分布式系統(tǒng):它以集群的方式運(yùn)行,可以靈活伸縮,在內(nèi)部通過復(fù)制數(shù)據(jù)提升容錯(cuò)能力和高可用性

      3、Kafka 支持實(shí)時(shí)的流式處理

      24. Kafka創(chuàng)建Topic時(shí)將分區(qū)放置到不同的Broker的策略是什么?

      前提:副本因子不能大于 Broker 的個(gè)數(shù);

      第一個(gè)分區(qū)(編號(hào)為0)的第一個(gè)副本放置位置是隨機(jī)從 brokerList 選擇的;

      其他分區(qū)的第一個(gè)副本放置位置相對(duì)于第0個(gè)分區(qū)依次往后移。

      例如:有5個(gè) Broker,5個(gè)分區(qū),假設(shè)第一個(gè)分區(qū)放在第四個(gè) Broker 上,那么第二個(gè)分區(qū)將會(huì)放在第五個(gè) Broker 上;第三個(gè)分區(qū)將會(huì)放在第一個(gè) Broker 上;第四個(gè)分區(qū)將會(huì)放在第二個(gè) Broker 上,第五個(gè)分區(qū)將會(huì)放在第三個(gè) Broker 上;

      25. Kafka新建的分區(qū)會(huì)在哪個(gè)目錄下創(chuàng)建

      若 log.dirs 參數(shù)只配置了一個(gè)目錄,那么分配到各個(gè) Broker 上的分區(qū)將在這個(gè)目錄下創(chuàng)建文件夾用于存放數(shù)據(jù)。

      若 log.dirs 參數(shù)配置了多個(gè)目錄,那么 Kafka 會(huì)在含有分區(qū)目錄總數(shù)最少的文件夾中創(chuàng)建新的分區(qū)目錄,分區(qū)目錄名為 Topic名+分區(qū)ID。注意(不是磁盤使用量最少的目錄)

      26. partition的數(shù)據(jù)如何保存到硬盤

      topic中的多個(gè)partition以文件夾的形式保存到broker,每個(gè)分區(qū)序號(hào)從0遞增, 且消息有序 Partition文件下有多個(gè)segment(xxx.index,xxx.log) segment 文件里的 大小和配置文件大小一致可以根據(jù)要求修改 默認(rèn)為1g 如果大小大于1g時(shí),會(huì)滾動(dòng)一個(gè)新的segment并且以上一個(gè)segment最后一條消息的偏移量命名。

      27. kafka的ack機(jī)制

      request.required.acks有三個(gè)值 0 1 -1

      0:生產(chǎn)者不會(huì)等待broker的ack,這個(gè)延遲最低但是存儲(chǔ)的保證最弱當(dāng)server掛掉的時(shí)候就會(huì)丟數(shù)據(jù)

      1:服務(wù)端會(huì)等待ack值 leader副本確認(rèn)接收到消息后發(fā)送ack但是如果leader掛掉后它不確保是否復(fù)制完成新leader也會(huì)導(dǎo)致數(shù)據(jù)丟失

      -1:同樣在1的基礎(chǔ)上 服務(wù)端會(huì)等所有的follower的副本受到數(shù)據(jù)后才會(huì)受到leader發(fā)出的ack,這樣數(shù)據(jù)不會(huì)丟失

      28. Kafka的消費(fèi)者如何消費(fèi)數(shù)據(jù)

      消費(fèi)者每次消費(fèi)數(shù)據(jù)的時(shí)候,消費(fèi)者都會(huì)記錄消費(fèi)的物理偏移量(offset)的位置 等到下次消費(fèi)時(shí),他會(huì)接著上次位置繼續(xù)消費(fèi)。同時(shí)也可以按照指定的offset進(jìn)行重新消費(fèi)。

      29. 如何使kafka集群內(nèi)的數(shù)據(jù)是有序的?

      只創(chuàng)建一個(gè)分區(qū)。(但是實(shí)際這樣會(huì)存在性能問題,具體業(yè)務(wù)具體分析后確認(rèn)。)

      30. Zookeeper匯總保留了哪些數(shù)據(jù)?

      1、消費(fèi)者提交的偏移量。

      2、leader檢測(cè)、分布式同步、配置管理、識(shí)別新節(jié)點(diǎn)何時(shí)離開或連接、集群、節(jié)點(diǎn)實(shí)時(shí)狀態(tài)

      3、分區(qū)和消費(fèi)者的所有者關(guān)

      4、broker id

      31. kafka consumer 什么情況會(huì)觸發(fā)再平衡reblance?

      1、一旦消費(fèi)者加入或退出消費(fèi)組,導(dǎo)致消費(fèi)組成員列表發(fā)生變化,消費(fèi)組中的所有消費(fèi)者都要執(zhí)行再平衡。

      2、訂閱主題分區(qū)發(fā)生變化,所有消費(fèi)者也都要再平衡。

      32、描述下kafka consumer 再平衡步驟?

      1、關(guān)閉數(shù)據(jù)拉取線程,清空隊(duì)列和消息流,提交偏移量;

      2、釋放分區(qū)所有權(quán),刪除zk中分區(qū)和消費(fèi)者的所有者關(guān)系;

      3、將所有分區(qū)重新分配給每個(gè)消費(fèi)者,每個(gè)消費(fèi)者都會(huì)分到不同分區(qū);

      4、將分區(qū)對(duì)應(yīng)的消費(fèi)者所有關(guān)系寫入ZK,記錄分區(qū)的所有權(quán)信息;

      5、重啟消費(fèi)者拉取線程管理器,管理每個(gè)分區(qū)的拉取線程。

      33. 手動(dòng)提交offset有什么好處??

      使更新offset更及時(shí),避免因offset更新不及時(shí)導(dǎo)致重復(fù)消費(fèi)數(shù)據(jù)的問題。

      34. 為什么kafka中的數(shù)據(jù)需要定期刪除或合并?

      Kafka只用于做數(shù)據(jù)的臨時(shí)存儲(chǔ)、臨時(shí)緩沖,不是永久存儲(chǔ)(永久性存儲(chǔ)使用HDFS)。

      本次的分享內(nèi)容到這里就結(jié)束了,關(guān)于上面的內(nèi)容部分用

      紅色

      注明的在這里解釋一下。黑色的是最最基礎(chǔ),必須要求掌握的,

      紅色

      標(biāo)記的部分是知識(shí)拓展,大家在理解層面上知曉即可…如果本篇對(duì)你有幫助,不要忘了加關(guān)注喲|??ω?` )

      Kafka ZooKeeper

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:程序員之路:Linux入門常識(shí)
      下一篇:C語(yǔ)言_函數(shù)封裝、變量的作用域
      相關(guān)文章
      婷婷亚洲综合五月天小说在线| 亚洲国产精品综合久久2007| 亚洲va久久久久| 亚洲不卡在线观看| 亚洲成人网在线播放| 亚洲午夜精品一区二区| 亚洲欧洲日韩不卡| 亚洲日本在线观看| 亚洲天堂男人天堂| 亚洲精品电影天堂网| 亚洲女人18毛片水真多| 亚洲专区中文字幕| 亚洲日本VA午夜在线影院| 亚洲精品无码日韩国产不卡av| 亚洲欧美成人av在线观看| 亚洲AV无码一区二区三区电影| 国产成人亚洲综合无| 亚洲一区日韩高清中文字幕亚洲| 国产a v无码专区亚洲av| 久久久亚洲精品蜜桃臀| 亚洲人精品午夜射精日韩| 亚洲国产成人高清在线观看| 久久亚洲精品国产精品黑人| 久久久婷婷五月亚洲97号色| 亚洲大尺码专区影院| 国产成人精品亚洲日本在线| 亚洲欧洲无码AV不卡在线| 妇女自拍偷自拍亚洲精品| 2022中文字字幕久亚洲| 国产AV无码专区亚洲AV漫画| 亚洲av无码潮喷在线观看| 亚洲综合激情另类小说区| 国产精品亚洲片在线va| 亚洲6080yy久久无码产自国产 | 亚洲白色白色永久观看| 亚洲人成人77777网站不卡| 亚洲精品国产高清在线观看| 亚洲高清无码专区视频| 亚洲成A人片在线观看WWW| 18gay台湾男同亚洲男同| 亚洲成_人网站图片|