kafka如何保證消息不丟失


kafka的結構如下:

 

 

 

一、生產者

   1、生產者(Producer)使用send方法 發送消息是異步的,所以可以通過get方法或回調函數拿到調用的結果。如果失敗了,可以重試。

   重試次數可以稍微大些,比如5次。間隔可以稍微長些。

 

二、消費者:

   基礎概念:當消息被追加到分區(partition)時,會為其分配一個偏移量(offset)。這個偏移量可以記錄consumer消費到這個patition的哪個位置。

       所以:kafka是通過偏移量(offset)來保證消息在某個分區的順序的。

  1、解決消費端丟失數據:關閉自動提交offset,等消費者處理完成后再手動提交offset。

  2、kafka的partition有多副本機制,其中一個為leader,別的稱之為follower。消息到了之后先存在leader,follower副本再去leader拉取同步,這樣生產者和消費者都只和leader交互,follower副本是leader副本的備份,保證數據存儲的安全性。

   除此之外如果leader所在的broker掛了,那么會在follower之間選一個leader。  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM