1.什么是Kafka锡足?
Wikipedia將Kafka定義為“由 Scala編寫的Apache軟件基金會開發(fā)的開源消息代理項目 ,并且是一個分布式的發(fā)布-訂閱消息系統(tǒng)太抓。
特征 | 描述 |
---|---|
高吞吐量 | 使用適度的硬件支持?jǐn)?shù)百萬條消息 |
可擴展性 | 高度可擴展的分布式系統(tǒng)显押,無停機 |
復(fù)寫 | 消息在整個群集中復(fù)制柳洋,以為多個訂戶提供支持,并在發(fā)生故障時平衡使用方 |
持久性 | 提供對消息到磁盤的持久性的支持 |
流處理 | 與Apache Spark&Storm等實時流應(yīng)用程序一起使用 |
數(shù)據(jù)丟失 | 具有正確配置的Kafka可以確保零數(shù)據(jù)丟失 |
2.列出Kafka中的各個組件孙援。
Kafka的四個主要組成部分是:
- 主題–屬于同一類型的消息流
- 生產(chǎn)者–可以將消息發(fā)布到主題
- 代理–一組用于存儲發(fā)布消息的服務(wù)器
- 消費者–訂閱各種主題并從經(jīng)紀(jì)人處提取數(shù)據(jù)害淤。
3.解釋偏移量的作用。
分區(qū)中包含的消息被分配一個唯一的ID號赃磨,稱為偏移號筝家。偏移量的作用是唯一標(biāo)識分區(qū)中的每個消息。
4.什么是消費群體邻辉?
消費者群體是Kafka獨有的概念溪王。每個Kafka消費者群體都由一個或多個共同組成一組訂閱主題的消費者組成。
5. ZooKeeper的作用是什么值骇?
Kafka使用Zookeeper來存儲特定使用者組針對特定主題和分區(qū)使用的消息的偏移量莹菱。
6.是否可以在沒有ZooKeeper的情況下使用Kafka?
不可以吱瘩,不能繞過Zookeeper并直接連接到Kafka服務(wù)器道伟。如果由于某種原因ZooKeeper關(guān)閉,您將無法處理任何客戶端請求使碾。
7.領(lǐng)導(dǎo)者和跟隨者是什么意思蜜徽。
Kafka中的每個分區(qū)都有一個充當(dāng)領(lǐng)導(dǎo)者角色的服務(wù)器,沒有一個或多個充當(dāng)追隨者的服務(wù)器票摇。領(lǐng)導(dǎo)者執(zhí)行對分區(qū)的所有讀寫請求的任務(wù)拘鞋,而跟隨者的作用是被動復(fù)制領(lǐng)導(dǎo)者。如果領(lǐng)導(dǎo)者失敗矢门,一名跟隨者將擔(dān)任領(lǐng)導(dǎo)者的角色盆色。這樣可以確保服務(wù)器的負(fù)載平衡灰蛙。
8.副本服務(wù)器和ISR扮演什么角色?
副本實際上是一個節(jié)點列表隔躲,這些節(jié)點將復(fù)制特定分區(qū)的日志摩梧,而不管它們是否扮演領(lǐng)導(dǎo)者的角色。另一方面宣旱,ISR代表同步副本仅父。它實質(zhì)上是一組同步到領(lǐng)導(dǎo)者的消息副本。
9.為什么復(fù)制在Kafka中至關(guān)重要响鹃?
復(fù)制可確保發(fā)布的消息不會丟失驾霜,并且在發(fā)生任何機器錯誤,程序錯誤或頻繁的軟件升級時都可以使用买置。
10.如果副本長時間不在ISR中粪糙,則表示什么?
這意味著跟隨者無法獲取與領(lǐng)導(dǎo)者積累的數(shù)據(jù)一樣快的數(shù)據(jù)忿项。
11.啟動Kafka服務(wù)器的過程是什么蓉冈?
由于Kafka使用ZooKeeper,因此必須初始化ZooKeeper服務(wù)器轩触,然后啟動Kafka服務(wù)器寞酿。
- 要啟動ZooKeeper服務(wù)器:> bin / zookeeper-server-start.sh config / zookeeper.properties
- 接下來,啟動Kafka服務(wù)器:> bin / Kafka-server-start.sh config / server.properties
12.如何定義分區(qū)鍵脱柱?
在生產(chǎn)者中伐弹,分區(qū)鍵的作用是指示消息的目標(biāo)分區(qū)。默認(rèn)情況下榨为,基于散列的分區(qū)程序用于確定給定鍵的分區(qū)ID惨好。或者随闺,用戶也可以使用自定義分區(qū)日川。
13.在生產(chǎn)者中,什么時候發(fā)生QueueFullException矩乐?
當(dāng)生產(chǎn)者嘗試以代理無法處理的速度發(fā)送消息時龄句,通常會發(fā)生QueueFullException。由于生產(chǎn)者沒有阻止散罕,用戶將需要添加足夠的代理來協(xié)作處理增加的負(fù)載分歇。
14.解釋Kafka Producer API的角色。
Kafka的Producer API的作用是包裝兩個生產(chǎn)者– Kafka.producer.SyncProducer和Kafka.producer.async.AsyncProducer欧漱。目標(biāo)是通過單個API向客戶端公開所有生產(chǎn)者功能职抡。
15. Kafka和Flume之間的主要區(qū)別是什么?
即使兩者都用于實時處理硫椰,Kafka仍可擴展并確保消息的持久性繁调。
歡迎關(guān)注 Java架構(gòu)師社區(qū)公眾號.
本文轉(zhuǎn)載自Java架構(gòu)師必看 ,更多內(nèi)容點擊查看!