一.?Kafka保證消息不丟失
Kafka如何保證消息不丟失
?使用Kafka在消息的收發過程中都會出現消息丟失,Kafka分別給出了解決方案
- 生產者發送消息到Brocker丟失
- 消息在Brocker中存儲丟失
- 消費者從Brocker接收消息丟失
?1.1 生產者發送消息到Brocker丟失
- 設置異步發送
- 消息重試
?1.2 消息在Brocker中存儲丟失
- 發送確認機制acks
?1.3 消費者從Brocker接收消息丟失
- Kafka中的分區機制指的是將每個主題劃分成多個分區(Partition)
- topic分區中只能由消費者組中的唯一一個消費者處理,不同的分區分配給不同的消費者(同一個消費者組)
代碼:
總結
二.?Kafka保證消費順序性
面試官:Kafka如何保證消費的順序性
候選人:Kafka默認存儲和消費消息,是不能保證順序性的,因為一個topic數據可能存儲在不同的分區中,每個分區都有一個按照順序的存儲的偏移量,如果消費者關聯了多個分區不能保證順序性
? ? ? ? 如果有這樣的需求的話,我們是可以解決的,把消息都存儲同一個分區下就行了,有兩種方式都可以進行設置,第一個是發送消息時指定分區號,第二個是發送消息時按照相同的業務設置相同的key,因為默認情況下分區也是通過key的hashcode值來選擇分區的,hash值如果一樣的話,分區肯定也是一樣的
?三.?Kafka高可用機制
3.1 集群模式
3.2 分區備份機制
總結
四.?Kafka數據清理機制
4.1?Kafka文件存儲機制
4.2 數據清理機制
? ? ? ? 1.根據消息的保留時間,當消息在kafka中保存的時間超過了指定的時間,就會觸發清理過程
? ? ? ? 2.根據topic存儲的數據大小,當topic所占的日志文件大小大于一定的闕值,則開始刪除最久的消息。需手動開啟
總結
五. Kafka高性能設計
Kafka中實現高性能的設計有了解過嗎?
零拷貝
總結
?