一致性定義:若某條訊息對client可見,那麼即使leader掛了,在新leader上資料依然可以被讀到。
hw-highwatermark:client可以從leader讀到的最大msg offset,即對外可見的最大offset, hw=max(replica.offset)
對於leader新收到的msg,client不能立刻消費,leader會等待該訊息被所有isr中的replica同步後,更新hw,此時該訊息才能被client消費,這樣就保證了如果leader fail,該訊息仍然可以從新選舉的leader中獲取。
對於來自內部broker的讀取請求,沒有hw的限制。同時,follower也會維護乙份自己的hw,folloer.hw = min(leader.hw, follower.offset)
當producer向leader傳送資料時,可以通過acks引數設定資料可靠性的級別
0: 不論寫入是否成功,server不需要給producer傳送response,如果發生異常,server會終止連線,觸發producer更新meta資料;
1: leader寫入成功後即傳送response,此種情況如果leader fail,會丟失資料
-1: 等待所有isr接收到訊息後再給producer傳送response,這是最強保證。
kafka如何保證資料可靠性和資料一致性
在只考慮 kafka 本身使用方式的前提下如何最大程度地提高可靠性。1.就 kafka 而言,越多的副本數越能夠保證資料的可靠性,副本數可以在建立主題時配置,也可以在後期修改,不過副本數越多也會引起磁碟 網路頻寬的浪費,同時會引起效能的下降。一般而言,設定副本數為 3 即可滿足絕大多數場景對可靠性的...
kafka資料可靠性和一致性保證
kafka資料可靠性和一致性保證 當producer向leader傳送資料時,可以通過request.required.acks引數來設定資料可靠性的級別 1 producer需要等待isr中的所有follower都確認接收到資料後才算一次傳送完成,可靠性最高。但是這樣也不能保證資料不丟失,比如當i...
KafKa資料儲存與資料一致性保證
一類訊息稱為乙個topic topic邏輯結構 topic可分為多個parition parition內部保證資料的有序,按照訊息寫入順序給每個訊息賦予乙個遞增的offset 為保證資料的安全性,每個partition有多個replica 多parition的優點 併發讀寫,加快讀寫速度 多part...