kafka消息不丟失制(ack機制)

一、生產者生產數據不丟失

1、生產者數據不丟失過程圖

說明:有多少個分區,就啓動多少個線程來進行同步數據

2、 發送數據方式

可以採用同步或者異步的方式-過程圖

 

可以採用同步或者異步的方式

同步:發送一批數據給kafka後,等待kafka返回結果

1、生產者等待10s,如果broker沒有給出ack相應,就認爲失敗。

2、生產者重試3次,如果還沒有相應,就報錯

異步:發送一批數據給kafka,只是提供一個回調函數。

1、先將數據保存在生產者端的buffer中。buffer大小是2萬條

2、滿足數據閾值或者數量閾值其中的一個條件就可以發送數據。

3、發送一批數據的大小是500條

說明:如果broker遲遲不給ack,而buffer又滿了,開發者可以設置是否直接清空buffer中的數據。

3、ack機制(確認機制)

生產者數據不抵事,需要服務端返回一個確認碼,即ack響應碼;ack的響應有三個狀態值

0:生產者只負責發送數據,不關心數據是否丟失,響應的狀態碼爲0(丟失的數據,需要再次發送      )

1:partition的leader收到數據,響應的狀態碼爲1

-1:所有的從節點都收到數據,響應的狀態碼爲-1

說明:如果broker端一直不給ack狀態,producer永遠不知道是否成功;producer可以設置一個超時時間10s,超 過時間認爲失敗。

 

二、kafka的broker中數據不丟失

broker中,保證數據不丟失主要是通過副本因子(冗餘),防止數據丟失

 

三、消費者消費數據不丟失

在消費者消費數據的時候,只要每個消費者記錄好offset值即可,就能保證數據不丟失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章