Kafka消息保證不丟失和重複消費問題:
使用同步模式的時候,有3種狀態保證消息被安全生產,在配置爲1(只保證寫入leader成功)的話,若是恰好leader partition掛了,數據就會丟失。
還有一種狀況可能會丟失消息,就是使用異步模式的時候,當緩衝區滿了,若是配置爲0(尚未收到確認的狀況下,緩衝池一滿,就清空緩衝池裏的消息),數據就會被當即丟棄掉。安全
在數據生產時避免數據丟失的方法: 只要能避免上述兩種狀況,那麼就能夠保證消息不會被丟失。
在同步模式的時候,確認機制設置爲-1,也就是讓消息寫入leader和全部的副本。
在異步模式下,若是消息發出去了,但尚未收到確認的時候,緩衝池滿了,在配置文件中設置成不限制阻塞超時的時間,也就說讓生產端一直阻塞,這樣也能保證數據不會丟失。異步
數據重複消費的狀況,若是處理?
(1)去重:將消息的惟一標識保存到外部介質中,每次消費處理時判斷是否處理過;
(2)無論:大數據場景中,報表系統或者日誌信息丟失幾條都無所謂,不會影響最終的統計分析結果。大數據