為保證 producer 傳送的資料,能可靠的傳送到指定的 topic,topic 的每個 partition 收到 producer 傳送的資料後,都需要向 producer 傳送 ack(acknowledgement 確認收到),如果 producer 收到 ack,就會進行下一輪的傳送,否則重新傳送資料。
副本資料同步策略
方案優點
缺點半數以上完成同步,就發 送 ack
延遲低選舉新的 leader 時,容忍 n 臺節點的故障,需要 2n+1 個副 本
全部完成同步,才傳送ack
選舉新的leader時,容忍n臺節點的故障,需要n+1個副 本
延遲高
isr(in-sync replica set)
ack應答機制
對於某些不太重要的資料,對資料的可靠性要求不是很高,能夠容忍資料的少量丟失, 所以沒必要等 isr 中的 follower 全部接收成功。所以 kafka 為使用者提供了三種可靠性級別,使用者根據對可靠性和延遲的要求進行權衡, 選擇以下的配置。
ack引數配置
故障處理
follower發生故障
follower 發生故障後會被臨時踢出 isr,待該 follower 恢復後,follower 會讀取本地磁碟 記錄的上次的 hw,並將 log 檔案高於 hw 的部分擷取掉,從 hw 開始向 leader 進行同步。 等該 follower 的 leo 大於等於該 partition 的 hw,即 follower 追上 leader 之後,就可以重 新加入 isr 了。
leader發生故障
leader 發生故障之後,會從 isr 中選出乙個新的 leader,之後,為保證多個副本之間的資料一致性,其餘的 follower 會先將各自的 log 檔案高於 hw 的部分截掉,然後從新的 leader 同步資料。
注意:這只能保證副本之間的資料一致性,並不能保證資料不丟失或者不重複。
kafka生產者分割槽策略
kafka生產者 分割槽策略 分割槽的原因 1 方便在集群中擴充套件,每個partition可以通過調整以適應它所在的機器,而乙個topic又 可以有多個partition組成,因此整個集群就可以適應任意大小的資料了 2 可以提高併發,因為可以以partition為單位讀寫了。分割槽的原則 1 指明...
Kafka生產者與消費者分割槽策略
分割槽的目的在於可以提高併發,並在可在集群中擴充套件以適應不同大小的資料 producer傳送的資料會被封裝成producer recorder物件 在生成producer recorder物件時指明partition的情況下,直接進入對應的partition分割槽 沒有指明partition值,但...
kafka 生產者訊息分發策略
訊息是kafka中最基本的額資料單元,在kafka中,一條訊息由key value兩部分構成,在傳送一條訊息時,我們可以指定這個key,producer會根據key來判斷當前這條訊息應該 路由儲存到哪個partition。預設情況下,kafka採用的是對key進行hash取模計算出分割槽。如果key...