生產者傳送訊息的過程
分割槽原則
資料可靠性保證
acsk
0: producer不等待broker的ack,這樣可以提供最低的延遲,broker一接收到還沒有寫入到磁碟就返回ack,當broker出現故障的時候可能會丟失資料
1:producer等待broker返回ack,partition的leader寫入磁碟成功返回ack,如果follower同步成功之前leader出現故障 也會丟失資料
-1:producer等待broker返回ack ,partition的leader和follower都寫入磁碟成功才返回ack,如果在follower同步完成後,broker傳送ack之前,leader發生故障,會導致資料重**送 ,資料會出現重複。
故障處理:
1.log檔案中的hw和leo
leo所有副本中的最大的乙個offfset
hw 所有副本中最小的leo,也是消費者能夠接收到的最大offset
2.follower故障
follower 發生故障,會被臨時提出isr,等待恢復之後,follower會讀取本地磁碟記錄的上次hw,並將log檔案高於hw的資料擷取掉,從hw開始向leade進行同步資料,等待follower的leo大於等於改partition的hw,即follower追上了leader,就可以加入到isr
leader故障
leader發生故障之後,會從isr中選擇新的leader,之後為了保證多個副本之間資料的一致性,其餘的follower會先將各自的log檔案中高於hw的部分資料截掉,然後從新的leader同步資料
Kafka學習筆記(二) 生產者詳解
2 傳送原理刨析 3 其他生產者引數 訊息要到網路上進行傳輸,必須進行序列化,而序列號器的作用就是入磁。kafka提供了預設的字串序列化器 org.apache.kafka.common.serialization.stringserializer 還有整型 integerserializer 和位...
kafka學習總結006 生產者事務
前面提到了,kafka0.11.0版本引入的冪等性只能保證分割槽級別的at exactly once語義 如圖,producer向三個分割槽分別生產10條資料,前兩個生產成功,寫第三個分割槽時,producer掛掉 producer重啟後,重新向三個分割槽寫入資料 此時producer的pid變化,...
kafka 生產者(二)
想要提高生產者的吞吐量可以通過調整一下4個引數來實現 batch.size 批次大小,預設16k linger.ms 等待時間,修改為5 100ms recordaccumulator 緩衝區大小,修改為64m 實現 public class customproducerparameters 關閉資...