kafka學習七 資料一致性問題

2021-10-23 16:55:04 字數 634 閱讀 4722

這樣乙個場景

leader寫了10條資料

follower1同步了8條

follower2同步了9條

假如leader掛了,follower1或follower2任意乙個當選為leader,則會出現資料不一致的情況。

為了解決這個問題,kafka維護了leo和hw兩個資料

如果沒有hw這個概念,假如消費者消費到leader的offset=18的資料掛了,然後新選出的leader沒有18的資料,消費者消費不到就會有問題。

有了hw後,消費者最多看到hw,如果leader掛掉,任意乙個follower選取成leader都沒問題,能夠繼續消費資料。

follower故障後長時間不從leader同步資料會被踢出isr,待follower恢復後會從本地磁碟讀取上次的hw,並將高於hw的資料擷取掉,從hw開始向leader同步。等follower的leo>=partition的hw後就可以重新加入isr

leader發生故障後會從isr中新選出乙個leader,為保證多個副本資料一致性,其餘的follower會先將各自的log檔案從高於hw的位置擷取掉,然後從新leader同步資料

16 Kafka高階 資料一致性問題

1 follower故障 follower發生故障後會被臨時踢出isr,待該follower恢復後,follower會讀取本地磁碟記錄的上次的hw,並將log檔案高於hw的部分擷取掉,從hw開始向leader進行同步。等該follower的leo大於等於該partition的hw,即follower...

CAS解決資料一致性問題

什麼是cas?compare and set cas 是一種常見的降低讀寫鎖衝突,保證資料一致性的方法。資料一致性是我們開發時必須注意的問題,特別涉及到錢這塊。這裡舉乙個使用者購物的例子 現有乙個使用者資訊表user account,表中字段為id,uid,amount。表中現有使用者甲,餘額100...

sqoop 匯出時資料一致性問題

sqoop 底層執行的其實是map 任務,預設4個map 如果4個map中有兩個map失敗了,但是另外兩個是成功的。這個時候匯入進mysql中的資料是不正確的,重新再導一次全部任務都成功,這兩次的資料會不一致。為了保證匯出的時候資料是一致的sqoop有兩個引數配合使用 sqoop 匯出時並不會自動建...