1 請(qǐng)說明什么是Apache Kafka?
Kafka是分布式發(fā)布-訂閱消息系統(tǒng)。Kafka是一個(gè)分布式的,可劃分的,冗余備份的持久性的日志服務(wù)。它主要用于處理活躍的流式數(shù)據(jù)。
它可以同時(shí)用于在線消息數(shù)據(jù)處理,和離線的數(shù)據(jù)文件處理。
2、請(qǐng)說明什么是傳統(tǒng)的消息傳遞方法?
傳統(tǒng)的消息傳遞方法包括兩種:
排隊(duì):在隊(duì)列中,一組用戶可以從服務(wù)器中讀取消息,每條消息都發(fā)送給其中一個(gè)人。
發(fā)布-訂閱:在這個(gè)模型中,消息被廣播給所有的用戶。
3、請(qǐng)說明Kafka相對(duì)傳統(tǒng)技術(shù)有什么優(yōu)勢(shì)?
Apache Kafka與傳統(tǒng)的消息傳遞技術(shù)相比優(yōu)勢(shì)之處在于:
快速:單一的Kafka代理可以處理成千上萬的客戶端,每秒處理數(shù)兆字節(jié)的讀寫操作。
可伸縮:在一組機(jī)器上對(duì)數(shù)據(jù)進(jìn)行分區(qū)和簡化,以支持更大的數(shù)據(jù)
持久:消息是持久性的,并在集群中進(jìn)行復(fù)制,以防止數(shù)據(jù)丟失。
設(shè)計(jì):它提供了容錯(cuò)保證和持久性
4、解釋Kafka的Zookeeper是什么?我們可以在沒有Zookeeper的情況下使用Kafka嗎?
Zookeeper是一個(gè)開放源碼的、高性能的協(xié)調(diào)服務(wù),它用于Kafka的分布式應(yīng)用。
不,不可能越過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)等等。
7、解釋Kafka的用戶如何消費(fèi)信息?
在Kafka中傳遞消息是通過使用sendfile API完成的。它支持將字節(jié)從套接口轉(zhuǎn)移到磁盤,通過內(nèi)核空間保存副本,并在內(nèi)核用戶之間調(diào)用內(nèi)核。
8、解釋如何提高遠(yuǎn)程用戶的吞吐量?
如果用戶位于與broker不同的數(shù)據(jù)中心,則可能需要調(diào)優(yōu)套接口緩沖區(qū)大小,以對(duì)長網(wǎng)絡(luò)延遲進(jìn)行攤銷。
10、解釋一下,在數(shù)據(jù)制作過程中,你如何能從Kafka得到準(zhǔn)確的信息?
在數(shù)據(jù)中,為了精確地獲得Kafka的消息,你必須遵循兩件事: 在數(shù)據(jù)消耗期間避免重復(fù),在數(shù)據(jù)生產(chǎn)過程中避免重復(fù)。
這里有兩種方法,可以在數(shù)據(jù)生成時(shí)準(zhǔn)確地獲得一個(gè)語義:
每個(gè)分區(qū)使用一個(gè)單獨(dú)的寫入器,每當(dāng)你發(fā)現(xiàn)一個(gè)網(wǎng)絡(luò)錯(cuò)誤,檢查該分區(qū)中的最后一條消息,以查看您的最后一次寫入是否成功
在消息中包含一個(gè)主鍵(UUID或其他),并在用戶中進(jìn)行反復(fù)制
在數(shù)據(jù)消耗期間避免重復(fù):
offset偏移量
11、解釋如何減少ISR中的擾動(dòng)?broker什么時(shí)候離開ISR?
ISR是一組與leaders完全同步的消息副本,也就是說ISR中包含了所有提交的消息。ISR應(yīng)該總是包含所有的副本,直到出現(xiàn)真正的故障。如果一個(gè)副本從leader中脫離出來,將會(huì)從ISR中刪除。
12、如果副本在ISR中停留了很長時(shí)間表明什么?
如果一個(gè)副本在ISR中保留了很長一段時(shí)間,那么它就表明,跟蹤器無法像在leader收集數(shù)據(jù)那樣快速地獲取數(shù)據(jù)。
13、請(qǐng)說明如果首選的副本不在ISR中會(huì)發(fā)生什么?
如果首選的副本不在ISR中,控制器將無法將leadership轉(zhuǎn)移到首選的副本。
14、有可能在生產(chǎn)后發(fā)生消息偏移嗎?
在大多數(shù)隊(duì)列系統(tǒng)中,作為生產(chǎn)者的類無法做到這一點(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ì)象。