kafka學習筆記(二) 生產者介紹

2021-10-10 19:30:53 字數 1113 閱讀 8690

生產者傳送訊息的過程

分割槽原則

資料可靠性保證

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 關閉資...