天天看點

Kafka資料丢失和重複消費分析

當生産者向Kafka broker寫資料時,可以使用ack機制來解決資料傳輸過程中資料丢失的問題,啟用ack(比如ack=1)機制下,若生産者一直未收到上一個消息的回複,則會一直等待直到收到ack信号才會發送下一個消息,資料不會丢失。

Kafaka如果将資料使用file方式作為緩存,則檔案在磁盤上,資料不會丢失,若采用memory方式,則隻能通過添加partition副本方式來備份資料,因為若Kafka所在節點當機,則記憶體資料會丢失,若無備份,則資料會丢失。

當别的系統如Flume,Spark等從Kafka拉取資料的時候,每拉取一條資料,Kafka會自動更新一個offset偏移量,這個偏移量記錄了這個消費者組消費資料的位置,偏移量可以由Kafka自動送出,也可可以由消費者手動送出。若發生當機事故,可以根據offset偏移量來定位資料消費位置,進而不會重複消費或者丢失資料。