點擊上方藍色“趣學程序”,選擇“設爲星標”
回覆“資源”獲取獨家整理的學習資料!
回覆“加羣”與更多小夥伴共同成長!
回覆“源碼”獲取專屬項目源碼!
作者丨Java小咖秀
來源丨JAVA小咖秀
https://juejin.im/post/5ee62ed9e51d45788b59c6c3
消息隊列也叫 MQ(Message Queue)。Kafka作爲消息隊列中的優秀平臺,被很多公司使用,是一種高吞吐量的分佈式發佈訂閱消息系統,本篇給大家總結了27道Kafka知識點或者說面試題,持續更新中。。。
❞
1.什麼是kafka?
Apache Kafka是由Apache開發的一種發佈訂閱消息系統。
2.kafka的3個關鍵功能?
發佈和訂閱記錄流,類似於消息隊列或企業消息傳遞系統。
以容錯的持久方式存儲記錄流。
處理記錄流。
3.kafka通常用於兩大類應用?
建立實時流數據管道,以可靠地在系統或應用程序之間獲取數據
構建實時流應用程序,以轉換或響應數據流
4.kafka特性?
消息持久化
高吞吐量
擴展性
多客戶端支持
Kafka Streams
安全機制
數據備份
輕量級
消息壓縮
5.kafka的5個核心Api?
Producer API
Consumer API
Streams API
Connector API
Admin API
6.什麼是Broker(代理)?
Kafka集羣中,一個kafka實例被稱爲一個代理(Broker)節點。
7.什麼是Producer(生產者)?
消息的生產者被稱爲Producer。
Producer將消息發送到集羣指定的主題中存儲,同時也自定義算法決定將消息記錄發送到哪個分區?
8.什麼是Consumer(消費者)?
消息的消費者,從kafka集羣中指定的主題讀取消息。
9.什麼是Topic(主題)?
主題,kafka通過不同的主題卻分不同的業務類型的消息記錄。
10.什麼是Partition(分區)?
每一個Topic可以有一個或者多個分區(Partition)。
11.分區和代理節點的關係?
一個分區只對應一個Broker,一個Broker可以管理多個分區。
12.什麼是副本(Replication)?
每個主題在創建時會要求制定它的副本數(默認1)。
13.什麼是記錄(Record)?
實際寫入到kafka集羣並且可以被消費者讀取的數據。
每條記錄包含一個鍵、值和時間戳。
14.kafka適合哪些場景?
日誌收集、消息系統、活動追蹤、運營指標、流式處理、時間源等。
15.kafka磁盤選用上?
SSD的性能比普通的磁盤好,這個大家都知道,實際中我們用普通磁盤即可。它使用的方式多是順序讀寫操作,一定程度上規避了機械磁盤最大的劣勢,即隨機讀寫操作慢,因此SSD的沒有太大優勢。
16.使用RAID的優勢?
提供冗餘的磁盤存儲空間
提供負載均衡
17.磁盤容量規劃需要考慮到幾個因素?
新增消息數
消息留存時間
平均消息大小
備份數
是否啓用壓縮
18.Broker使用單個?多個文件目錄路徑參數?
log.dirs 多個
log.dir 單個
19.一般來說選擇哪個參數配置路徑?好處?
log.dirs
好處:
提升讀寫性能,多塊物理磁盤同時讀寫高吞吐。
故障轉移。一塊磁盤掛了轉移到另一個上。
20.自動創建主題的相關參數是?
auto.create.topics.enable
21.解決kafka消息丟失問題?
不要使用 producer.send(msg),而要使用 producer.send(msg, callback)。
設置 acks = all。
設置 retries 爲一個較大的值。
設置 unclean.leader.election.enable = false。
設置 replication.factor >= 3。
設置 min.insync.replicas > 1。
確保 replication.factor > min.insync.replicas。
確保消息消費完成再提交。
22.如何自定分區策略?
顯式地配置生產者端的參數partitioner.class
參數爲你實現類的 全限定類名,一般來說實現partition方法即可。
23.kafka壓縮消息可能發生的地方?
Producer 、Broker。
24.kafka消息重複問題?
做好冪等。
數據庫方面可以(唯一鍵和主鍵)避免重複。
在業務上做控制。
25.你知道的kafka監控工具?
JMXTool 工具
Kafka Manager
Burrow
JMXTrans + InfluxDB + Grafana
Confluent Control Center
26.kafka系統支持兩種不同發送方式?
異步模式
同步模式
27.消費者和消費者組區別?
一個消費者組,可以有一個或者多個消費者程序。
消費者組名(GroupID)一般由具有唯一性字符串表示。
如果一個消費者組訂閱了主題,則該主題每個分區只能分配給某一個消費者組中的某一個消費者程序。
參考:
《Kafka並不難學》
《kafka入門與實踐》
往期推薦
Spring Cloud基礎面試題大集合Java 最坑爹的 10 大功能點!別再寫滿屏的 try catch 了,教你如何統一處理異常!【收藏】寫給程序員的 MySQL 高頻面試題!面試吹牛用:Mybatis 中用到的 9 種設計模式!
在看點這裏好文分享給更多人↓↓