面試題:Kafka基礎27道,應該都會吧?

消息隊列也叫 MQ(Message Queue)。Kafka作爲消息隊列中的優秀平臺,被很多公司使用,是一種高吞吐量的分佈式發佈訂閱消息系統,本篇給大家總結了27道Kafka知識點或者說面試題,持續更新中。。。

1.什麼是kafka?

Apache Kafka是由Apache開發的一種發佈訂閱消息系統。

2.kafka的3個關鍵功能?

  • 發佈和訂閱記錄流,類似於消息隊列或企業消息傳遞系統。
  • 以容錯的持久方式存儲記錄流。
  • 處理記錄流。

3.kafka通常用於兩大類應用?

  • 建立實時流數據管道,以可靠地在系統或應用程序之間獲取數據
  • 構建實時流應用程序,以轉換或響應數據流

4.kafka特性?

  1. 消息持久化
  2. 高吞吐量
  3. 擴展性
  4. 多客戶端支持
  5. Kafka Streams
  6. 安全機制
  7. 數據備份
  8. 輕量級
  9. 消息壓縮

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入門與實踐》
  • 極客時間:Kafka核心技術與實戰
  • http://kafka.apache.org/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章