Kafka資料可靠性與一致性解析

2021-09-12 02:58:20 字數 656 閱讀 8183

每個partition會在磁碟記錄乙個recoverypoint, 記錄已經flush到磁碟的最大offset。當broker fail 重啟時,會進行loadlogs。 首先會讀取該partition的recoverypoint,找到包含recoverypoint的segment及以後的segment, 這些segment就是可能沒有 完全flush到磁碟segments。然後呼叫segment的recover,重新讀取各個segment的msg,並重建索引優點

isr:所有不落後的replica集合, 不落後有兩層含義:距離上次fetchrequest的時間不大於某乙個值或落後的訊息數不大於某乙個值, leader失敗後會從isr中選取乙個follower做leader

關於replica複製詳解請移步:kafka副本同步機制理解

當producer向leader傳送資料時,可以通過acks引數設定資料可靠性的級別

一致性定義:若某條訊息對consumer可見,那麼即使leader宕機了,在新leader上資料依然可以被讀到

這樣就保證了如果leader broker失效,該訊息仍然可以從新選舉的leader中獲取。對於來自內部broker的讀取請求,沒有hw的限制。同時,follower也會維護乙份自己的hw,folloer.hw = min(leader.hw, follower.offset)

Kafka資料可靠性與一致性解析

每個partition會在磁碟記錄乙個recoverypoint,記錄已經flush到磁碟的最大offset。當broker fail 重啟時,會進行loadlogs。首先會讀取該partition的recoverypoint,找到包含recoverypoint的segment及以後的segment...

Kafka資料可靠性與一致性解析

每個partition會在磁碟記錄乙個recoverypoint,記錄已經flush到磁碟的最大offset。當broker fail 重啟時,會進行loadlogs。首先會讀取該partition的recoverypoint,找到包含recoverypoint的segment及以後的segment...

Kafka資料可靠性與一致性解析

每個partition會在磁碟記錄乙個recoverypoint,記錄已經flush到磁碟的最大offset。當broker fail 重啟時,會進行loadlogs。首先會讀取該partition的recoverypoint,找到包含recoverypoint的segment及以後的segment...