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仍可擴展并確保訊息的持久性,
歡迎關注 Java架構師社區公眾號.
本文轉載自Java架構師必看 ,更多內容點擊查看!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222229.html
標籤:其他
