1.什麼是Kafka?
Wikipedia將Kafka定義爲“由 Scala編寫的Apache軟件基金會開發的開源消息代理項目 ,並且是一個分佈式的發佈-訂閱消息系統。
特徵 | 描述 |
---|---|
高吞吐量 | 使用適度的硬件支持數百萬條消息 |
可擴展性 | 高度可擴展的分佈式系統,無停機 |
複寫 | 消息在整個羣集中複製,以爲多個訂戶提供支持,並在發生故障時平衡使用方 |
持久性 | 提供對消息到磁盤的持久性的支持 |
流處理 | 與Apache Spark&Storm等實時流應用程序一起使用 |
數據丟失 | 具有正確配置的Kafka可以確保零數據丟失 |
2.列出Kafka中的各個組件。
Kafka的四個主要組成部分是:
- 主題–屬於同一類型的消息流
- 生產者–可以將消息發佈到主題
- 代理–一組用於存儲發佈消息的服務器
- 消費者–訂閱各種主題並從經紀人處提取數據。
3.解釋偏移量的作用。
分區中包含的消息被分配一個唯一的ID號,稱爲偏移號。偏移量的作用是唯一標識分區中的每個消息。
4.什麼是消費羣體?
消費者羣體是Kafka獨有的概念。每個Kafka消費者羣體都由一個或多個共同組成一組訂閱主題的消費者組成。
5. ZooKeeper的作用是什麼?
Kafka使用Zookeeper來存儲特定使用者組針對特定主題和分區使用的消息的偏移量。
6.是否可以在沒有ZooKeeper的情況下使用Kafka?
不可以,不能繞過Zookeeper並直接連接到Kafka服務器。如果由於某種原因ZooKeeper關閉,您將無法處理任何客戶端請求。
7.領導者和跟隨者是什麼意思。
Kafka中的每個分區都有一個充當領導者角色的服務器,沒有一個或多個充當追隨者的服務器。領導者執行對分區的所有讀寫請求的任務,而跟隨者的作用是被動複製領導者。如果領導者失敗,一名跟隨者將擔任領導者的角色。這樣可以確保服務器的負載平衡。
8.副本服務器和ISR扮演什麼角色?
副本實際上是一個節點列表,這些節點將複製特定分區的日誌,而不管它們是否扮演領導者的角色。另一方面,ISR代表同步副本。它實質上是一組同步到領導者的消息副本。
9.爲什麼複製在Kafka中至關重要?
複製可確保發佈的消息不會丟失,並且在發生任何機器錯誤,程序錯誤或頻繁的軟件升級時都可以使用。
10.如果副本長時間不在ISR中,則表示什麼?
這意味着跟隨者無法獲取與領導者積累的數據一樣快的數據。
11.啓動Kafka服務器的過程是什麼?
由於Kafka使用ZooKeeper,因此必須初始化ZooKeeper服務器,然後啓動Kafka服務器。
- 要啓動ZooKeeper服務器:> bin / zookeeper-server-start.sh config / zookeeper.properties
- 接下來,啓動Kafka服務器:> bin / Kafka-server-start.sh config / server.properties
12.如何定義分區鍵?
在生產者中,分區鍵的作用是指示消息的目標分區。默認情況下,基於散列的分區程序用於確定給定鍵的分區ID。或者,用戶也可以使用自定義分區。
13.在生產者中,什麼時候發生QueueFullException?
當生產者嘗試以代理無法處理的速度發送消息時,通常會發生QueueFullException。由於生產者沒有阻止,用戶將需要添加足夠的代理來協作處理增加的負載。
14.解釋Kafka Producer API的角色。
Kafka的Producer API的作用是包裝兩個生產者– Kafka.producer.SyncProducer和Kafka.producer.async.AsyncProducer。目標是通過單個API向客戶端公開所有生產者功能。
15. Kafka和Flume之間的主要區別是什麼?
即使兩者都用於實時處理,Kafka仍可擴展並確保消息的持久性。