1. 思考問題
- kafka有哪些優(yōu)點(diǎn)?
- kafka存儲(chǔ)結(jié)構(gòu)如何設(shè)計(jì)的?
- kafka的高效性是怎么保證的?
- kafka的leader選舉策略是怎么樣的?
- kafka的消息生產(chǎn)消費(fèi)模式?有什么優(yōu)缺點(diǎn)?
- kafka的副本數(shù)配置對(duì)效率有哪些影響,如何優(yōu)化?
- kafka的有哪些實(shí)踐優(yōu)化策略?
- 基于隨機(jī)的partition策略,kafka的comsumer如何做到順序性消費(fèi)?
- kafka的failover機(jī)制是怎么樣的?
- 消息消費(fèi)有哪幾種模式?kafka consumer的消費(fèi)方式是怎樣的?
- consumer是如何做rebalance的?有什么優(yōu)劣?
- high level api 和low level api相比有什么區(qū)別?優(yōu)勢(shì)是什么?
2. 回答
- kafka的消息都是順序追加到partition中的,順序?qū)懘疟P比隨機(jī)寫內(nèi)存的效率還高;kafka的broker是無狀態(tài)的,不需要標(biāo)記哪些消息被哪些consumer過,不需要保證一條消息只能被同一個(gè)consuner gruop中的一個(gè)consumer消費(fèi),因此也不需要鎖機(jī)制;kafka在每個(gè)操作過程中盡量使用批處理;consumer在讀取數(shù)據(jù)的過程中,Kafka使用sendfile API來直接通過操作系統(tǒng)直接傳輸,而不用把數(shù)據(jù)拷貝到用戶空間
kafka參考資料