Kafka 是一個流行的分布式流處理平臺,用于構建實時數據流管道和應用程序。在 Kafka 中,acks
?機制和?ISR
(In-Sync Replicas)列表是兩個重要的概念,它們共同確保消息的持久性和可靠性。
acks 機制
acks
?機制是 Kafka 生產者(Producer)向 broker 發送消息時確認消息可靠性的機制。acks
?是一個配置參數,用于設置消息復制到 Kafka 中的副本數之后才返回確認信息給生產者。以下是 Kafka 中的幾種?acks
?設置及其含義:
- acks=0:不等待任何副本的確認,即直接發送消息并返回成功響應。這種方式是最快的,但也是最不可靠的,因為即使服務器處理了消息也可能因為崩潰而丟失。
- acks=1(默認設置):等待 leader 副本確認消息已寫入其本地日志后返回成功響應。這確保了消息至少被寫入了一個副本,但集群中其他副本可能無法同步。
- acks=all?或?acks=brokers+replication-factor:等待所有 in-sync 副本都確認消息已經寫入它們各自的本地日志后才返回成功響應。這是最可靠的選擇,因為只有在 ISR 里的所有副本都已同步了數據之后才會得到確認。
In-Sync Replicas (ISR) 列表
ISR
?是 Kafka 中一個重要的概念,它表示的是一組與 leader 副本保持同步的 follower 副本。這些副本是當前可以接受寫操作的副本,因為它們已經成功地從 leader 復制了數據并且可以獨立地處理讀請求。
以下是關于 ISR 的幾個關鍵點:
- 動態性:ISR 是動態的,它會根據副本的同步狀態變化而變化。如果某個 follower 在指定的時間內沒有成功復制數據或落后太多,它將被從 ISR 中移除。
- 領導者選舉:當 leader 副本出現故障時,Kafka 會從 ISR 中的 follower 中選擇新的 leader。這確保了即使發生故障,集群仍然可以維持較高的可靠性和可用性。
- 更新與維護:通過監控 ISR 中的副本的復制延遲和其他性能指標,可以了解集群的狀態并進行相應的調整(如重新平衡、調整配置等)。
?