Kafka如何保證資料可靠性

2021-09-29 23:37:42 字數 1329 閱讀 9466

kafka的資料可靠性保證

1. 副本資料同步策略

兩種副本資料同步策略(kafka選擇第二種)

方案優點

缺點半數以上完成同步,就傳送ack

延遲低選舉新的leader時,容忍n臺節點的故障,需要2n+1個副本

全部完成同步,才傳送ack

選舉新的leader時,容忍n臺節點的故障,需要n+1個副本

延遲高kafka選擇了第二種方案,原因如下:

2. isr

為了防止kafka在選擇第二種資料同步策略時,因為某乙個follower故障導致leader一直等下去,leader維護了乙個動態的in-sync replica set (isr)。

isr:同步副本,和leader保持同步的follower集合。當isr中的follower完成資料的同步之後,leader就會給生產者傳送ack。

特殊情況

3. ack應答機制

為保證producer傳送的資料,能可靠的傳送到指定的topic,topic的每個partition收到producer傳送的資料後,都需要向producer傳送ack(acknowledgement確認收到),如果producer收到ack,就會進行下一輪的傳送,否則重新傳送資料。

kafka為使用者提供了三種可靠性級別(acks引數):

4. 故障處理

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

(2)leader故障

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

注意:這只能保證副本之間的資料一致性,並不能保證資料不丟失或者不重複。(是否丟資料是acks保證)

kafka的資料可靠性保證

為保證 producer 傳送的資料,能可靠的傳送到指定的 topic,topic 的每個 partition 收到 producer 發 送的資料後,都需要向 producer 傳送 ack acknowledgement 確認收到 如果 producer 收到 ack,就會進行下一輪的傳送,否則...

kafka保證資料可靠性的方式

kafka的以下幾個基本特性保證了基本的可靠性 生產者可以進行有關配置,使得不一定等到資料認為是已提交的之後,才進行下一輪的投遞,這是在可用性和一致性的之間的平衡 分割槽副本複製方式和同步條件 複製係數及其意義 replication.factor 複製係數,指定了乙個分割槽的副本個數,預設是3,意...

Kafka如何保證訊息的可靠性傳輸

1.消費端弄丟了資料 唯一可能導致消費者弄丟資料的情況,就是說,你消費到了這個訊息,然後消費者那邊自動提交了 offset,讓 kafka 以為你已經消費好了這個訊息,但其實你才剛準備處理這個訊息,你還沒處理,你自己就掛了,此時這條訊息就丟咯。這不是跟 rabbitmq 差不多嗎,大家都知道 kaf...