摘自:
僅做個人備份,瀏覽請看原文
目錄
kafka提供了哪些方面的保證
分割槽複製
消費一致性保證
kafka的複製機制和分割槽的多副本架構是kafka可靠性保證的核心。把訊息寫入多個副本可以使kafka在發生奔潰時仍能保證訊息的永續性。
kafka的topic被分成多個分割槽,分割槽是基本的資料塊。每個分割槽可以有多個副本,其中乙個是首領。所有事件都是發給首領副本,或者直接從首領副本讀取事件。其他副本只需要與首領副本保持同步,並及時複製最新的事件。
leader維護了乙個動態的in-sync replica set(isr),意為和leader保持同步的follower集合。當isr中的follower完成資料同步後,leader就會傳送ack。如果follower長時間未向leader同步資料,則該follower將被踢出isr,該時間閾值由replica.lag.time.max.ms引數設定。leader不可用時,將會從isr中選舉新的leader。滿足以下條件才能被認為是同步的:
影響kafka訊息儲存可靠性的配置
ack應答機制
對於某些不太重要的資料,對資料的可靠性要求不是很高,能夠容忍資料的少量丟失,所以沒有必要等isr中的follower全部接收成功。所以kafka提供了三種可靠性級別,使用者可以根據對可靠性和延遲的要求進行權衡。acks:
(1)follower故障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同步資料。
注意:這只能保證副本之間的資料一致性,並不能保證資料不丟失或者不重複。
Kafka訊息可靠性
如果mq沒有類似資料庫事務結構和保證,是不可能達到訊息投遞100 可靠的,極端情況下訊息投遞要麼丟失或重複。下面咋們從producer,broker,consumer的角度分析一下kafka中會出現哪些情況。目前生產者傳送訊息 request.required.acks 有三種方式。acks 0 p...
Kafka如何保證資料可靠性
kafka的資料可靠性保證 1.副本資料同步策略 兩種副本資料同步策略 kafka選擇第二種 方案優點 缺點半數以上完成同步,就傳送ack 延遲低選舉新的leader時,容忍n臺節點的故障,需要2n 1個副本 全部完成同步,才傳送ack 選舉新的leader時,容忍n臺節點的故障,需要n 1個副本 ...
kafka的資料可靠性保證
為保證 producer 傳送的資料,能可靠的傳送到指定的 topic,topic 的每個 partition 收到 producer 發 送的資料後,都需要向 producer 傳送 ack acknowledgement 確認收到 如果 producer 收到 ack,就會進行下一輪的傳送,否則...