kafka階段學習小結(面試)
https://blog.csdn.net/qq_28900249/article/details/90346599
主要是借鑑這篇文章的一些問題,做一個小總結,每回看到這些題都要好好思考一下。
1.請說明什麼是Apache Kafka?
2.爲什麼要使用kafka,爲什麼要使用消息隊列
3.kafka中的ISR,AR又代表什麼?ISR的伸縮又指什麼?
4.kafka中的broker是幹什麼的?
5.kafka中的zookeeper起到什麼作用,可以不用zookeeper嗎?
6.kafka follower如何與leader同步
7.什麼情況下一個broker會從isr中踢出去
8.kafka爲什麼那麼快
9.kafka producer如何優化打入數據
10.kafka producer發送消息,ack 爲0,1,-1的時候代表啥,設置-1的時候,什麼情況下,leader會認爲一條消息commit
11.kafka中consumer group是什麼概念?
12.kafka中的消息是否會丟失和重複消費?
13.爲什麼kafka不支持讀寫分離?
14.kafka中是怎麼體現消息順序性的?
其他一些問題
https://blog.verysu.com/article/417
- 請說明什麼是Apache kafka?
- 說說kafka的使用場景?
- 使用kafka有什麼優點和缺點?
- 使用kafka性能很好,體現在哪裏?
- 請說明什麼是傳統的消息傳遞方式?
- 請說明kafka相對傳統技術有什麼優勢?
- 解釋kafka的zookeeper是什麼?我們可以在沒有Zookeeper的情況下使用kafka嗎?
- 解釋kafka用戶如何消費消息?
- 解析如何提高遠程用戶的吞吐量?
- 解釋一下,在數據製作過程中,你如何能從kafka得到準確的消息?
- 解釋如何減少isr中的擾動?broker什麼時候離開isr?
- kafka爲什麼需要複製?
- 如果副本在isr中停留了很長時間表明什麼?
- 請說明如果首選的副本不在isr中會發生什麼?
- 有可能在生產後發生消息偏移嗎?
- kafka的設計是什麼樣的呢?
- 數據傳輸的事務定義有哪三種?
- kafka判斷一個節點是否還活着有連個條件?
- producer是否直接將數據發送到broker的leader(主節點)?
- kafka consumer是否可以消費指定分區消息?
- kafka消息採用pull模式還是push模式
1. kafka裏面用的什麼方式消費數據,拉的方式還是推的方式?
拉的方式:有消費者控制消費速率
2. 爲什麼用kafka?kafka是如何存數據的?
kafka將數據按照不同的分類存儲在不同的topic中(人爲分類),Topic中有分區(partition)以及副本(replication)的概念。在每個分區中(即一個目錄中),會存儲爲一個個segment文件(即.log文件)和index文件
3. kafka元數據存在哪裏?
Zookeeper:有如下一些節點/controller,/cluster,/consumer,/broker
4. 如何保證數據不會出現丟失或者重複消費的情況?做過哪些預防措施,怎麼解決以上問題的?
數據丟失問題:同步發送數據:ACK=-1(all)
重複消費問題:自己維護offset避免重複消費的問題(低級api)
5.如何提高kafka的消費速度
增加分區和消費者
增加拉取數據的大小
增大批處理的大小
6.爲什麼kafka可以實現高吞吐?單節點kafka的吞吐量比其他消息隊列大,爲什麼?
- 零拷貝(zero-copy):減少或消除數據拷貝
- 順寫日誌:順序寫磁盤的效率比隨機寫高
- 分段日誌:日誌存儲是分段的segment,其中對每一個分段還會有一個索引,利用二分查找,速率高
- 批處理:讀寫時客戶端會維護一個Batch
- 壓縮:數據可壓縮,傳輸效率高
7 .kafka原理,isr中什麼情況下brokerid會消失?
副本down掉,網絡阻塞
log(數據落後):低版本有replica.lag.time.max.ms和replica.lag.max.messages屬性決定,高版本只有replica.lag.max.messages這個參數
8.kafka消費用的高級API,低級API
高級:KafkaConsumer
poll(獲取數據的方法)
低級:核心類SimpleConsumer
send(發送獲得元數據的請求)
fetch(發送抓取數據的請求)