溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

常見的Kafka面試題有哪些

發(fā)布時(shí)間:2021-12-13 17:02:10 來(lái)源:億速云 閱讀:186 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“常見的Kafka面試題有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“常見的Kafka面試題有哪些”這篇文章吧。

1、請(qǐng)說(shuō)明什么是Apache Kafka?

Apache Kafka是由Apache開發(fā)的一種發(fā)布訂閱消息系統(tǒng),它是一個(gè)分布式的、分區(qū)的和重復(fù)的日志服務(wù)。

2、請(qǐng)說(shuō)明什么是傳統(tǒng)的消息傳遞方法?

傳統(tǒng)的消息傳遞方法包括兩種:

  • 排隊(duì):在隊(duì)列中,一組用戶可以從服務(wù)器中讀取消息,每條消息都發(fā)送給其中一個(gè)人。

  • 發(fā)布-訂閱:在這個(gè)模型中,消息被廣播給所有的用戶。

3、請(qǐng)說(shuō)明Kafka相對(duì)傳統(tǒng)技術(shù)有什么優(yōu)勢(shì)?

Apache Kafka與傳統(tǒng)的消息傳遞技術(shù)相比優(yōu)勢(shì)之處在于:

快速:單一的Kafka代理可以處理成千上萬(wàn)的客戶端,每秒處理數(shù)兆字節(jié)的讀寫操作。

可伸縮:在一組機(jī)器上對(duì)數(shù)據(jù)進(jìn)行分區(qū)和簡(jiǎn)化,以支持更大的數(shù)據(jù)

持久:消息是持久性的,并在集群中進(jìn)行復(fù)制,以防止數(shù)據(jù)丟失。

設(shè)計(jì):它提供了容錯(cuò)保證和持久性

4、在Kafka中broker的意義是什么?

在Kafka集群中,broker術(shù)語(yǔ)用于引用服務(wù)器。

5、Kafka服務(wù)器能接收到的最大信息是多少?

Kafka服務(wù)器可以接收到的消息的最大大小由參數(shù)message.max.bytes決定,010版本默認(rèn)值是1000012,可以配置為broker級(jí)別或者topic級(jí)別。

6、解釋Kafka的Zookeeper是什么?我們可以在沒有Zookeeper的情況下使用Kafka嗎?

Zookeeper是一個(gè)開放源碼的、高性能的協(xié)調(diào)服務(wù),它用于Kafka的分布式應(yīng)用。

不,不可能越過(guò)Zookeeper,直接聯(lián)系Kafka broker。一旦Zookeeper停止工作,它就不能服務(wù)客戶端請(qǐng)求。

  • Zookeeper主要用于在集群中不同節(jié)點(diǎn)之間進(jìn)行通信

  • 在Kafka中,它被用于提交偏移量,因此如果節(jié)點(diǎn)在任何情況下都失敗了,它都可以從之前提交的偏移量中獲取

  • 除此之外,它還執(zhí)行其他活動(dòng),如: leader檢測(cè)、分布式同步、配置管理、識(shí)別新節(jié)點(diǎn)何時(shí)離開或連接、集群、節(jié)點(diǎn)實(shí)時(shí)狀態(tài)等等。

Kafka源碼系列之源碼分析zookeeper在kafka的作用

7、解釋Kafka的用戶如何消費(fèi)信息?

在Kafka中傳遞消息是通過(guò)使用sendfile API完成的。它支持將字節(jié)從套接口轉(zhuǎn)移到磁盤,通過(guò)內(nèi)核空間保存副本,并在內(nèi)核用戶之間調(diào)用內(nèi)核。

消費(fèi)者消費(fèi)有各種客戶端:

010: http://kafka.apache.org/0102/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html

082 分高階API和低階API:

https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example

https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example

8、解釋如何提高遠(yuǎn)程用戶的吞吐量?

如果用戶位于與broker不同的數(shù)據(jù)中心,則可能需要調(diào)優(yōu)套接口緩沖區(qū)大小,以對(duì)長(zhǎng)網(wǎng)絡(luò)延遲進(jìn)行攤銷。

9、解釋一下,在數(shù)據(jù)制作過(guò)程中,你如何能從Kafka得到準(zhǔn)確的信息?

在數(shù)據(jù)中,為了精確地獲得Kafka的消息,你必須遵循兩件事: 在數(shù)據(jù)消耗期間避免重復(fù),在數(shù)據(jù)生產(chǎn)過(guò)程中避免重復(fù)。

這里有兩種方法,可以在數(shù)據(jù)生成時(shí)準(zhǔn)確地獲得一個(gè)語(yǔ)義:

  • 每個(gè)分區(qū)使用一個(gè)單獨(dú)的寫入器,每當(dāng)你發(fā)現(xiàn)一個(gè)網(wǎng)絡(luò)錯(cuò)誤,檢查該分區(qū)中的最后一條消息,以查看您的最后一次寫入是否成功

  • 在消息中包含一個(gè)主鍵(UUID或其他),并在用戶中進(jìn)行反復(fù)制

10、解釋如何減少ISR中的擾動(dòng)?broker什么時(shí)候離開ISR?

ISR是一組與leaders完全同步的消息副本,也就是說(shuō)ISR中包含了所有提交的消息。ISR應(yīng)該總是包含所有的副本,直到出現(xiàn)真正的故障。如果一個(gè)副本從leader中脫離出來(lái),將會(huì)從ISR中刪除。

11、Kafka為什么需要復(fù)制?

Kafka的信息復(fù)制確保了任何已發(fā)布的消息不會(huì)丟失,并且可以在機(jī)器錯(cuò)誤、程序錯(cuò)誤或更常見些的軟件升級(jí)中使用。

12、如果副本在ISR中停留了很長(zhǎng)時(shí)間表明什么?

如果一個(gè)副本在ISR中保留了很長(zhǎng)一段時(shí)間,那么它就表明,跟蹤器無(wú)法像在leader收集數(shù)據(jù)那樣快速地獲取數(shù)據(jù)。

13、請(qǐng)說(shuō)明如果首選的副本不在ISR中會(huì)發(fā)生什么?

如果首選的副本不在ISR中,控制器將無(wú)法將leadership轉(zhuǎn)移到首選的副本。

14、有可能在生產(chǎn)后發(fā)生消息偏移嗎?

在大多數(shù)隊(duì)列系統(tǒng)中,作為生產(chǎn)者的類無(wú)法做到這一點(diǎn),它的作用是觸發(fā)并忘記消息。broker將完成剩下的工作,比如使用id進(jìn)行適當(dāng)?shù)脑獢?shù)據(jù)處理、偏移量等。

作為消息的用戶,你可以從Kafka broker中獲得補(bǔ)償。如果你注視SimpleConsumer類,你會(huì)注意到它會(huì)獲取包括偏移量作為列表的MultiFetchResponse對(duì)象。此外,當(dāng)你對(duì)Kafka消息進(jìn)行迭代時(shí),你會(huì)擁有包括偏移量和消息發(fā)送的MessageAndOffset對(duì)象。

15、kafka提高吞吐量的配置

最基礎(chǔ)的配置是

batch.size 默認(rèn)是單批次最大16384字節(jié),超過(guò)該值就立即發(fā)送。

linger.ms 默認(rèn)是0ms,超過(guò)該時(shí)間就立即發(fā)送。

上面兩個(gè)條件滿足其一,就立即發(fā)送消息否則等待。

以上是“常見的Kafka面試題有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI