Kafka重要參數


轉載 https://www.cnblogs.com/luckyhui28/p/12001798.html#lingerms

acks

這個參數用老指定分區中必須由多少個副本收到消息,之后生產者才會認為這條消息寫入是成功的。acks參數有三種類型的值(都是字符串類型)。

  • acks=1 默認值為1.生產者發送消息之后,只要分區的leader副本成功的寫入消息,生產端就會收到來自服務端的成功響應,說明發送成功。如果消息無法寫入leader副本,比如在leader副本崩潰、重新選舉新的leader副本的過程中,生產者就會收到一個錯誤的響應,為了避免消息丟失,生產者就會選擇重發消息;如果消息寫入leader副本並成功響應給生產者,並且在其他follower副本拉取之前leader副本崩潰,此時消息還會丟失,因為新選舉的leader副本中並沒有這條對應的消息。acks設置為1,是消息可靠性和吞吐量之間的這種方案。
  • acks=0 生產者發送消息之后,不需要等待任何服務端的響應。如果在消息從發送到寫入kafka的過程中出現異常,導致kafka並沒有收到消息,此時生產者是不知道的,消息也就丟失了。akcs設置為0時,kafka可以達到最大的吞吐量。
  • acks=-1或acks=all 生產者在消息發送之后,需要等待isr中所有的副本都成功寫入消息此案能夠收到服務端的成功響應。acks設置為-1,可以達到相對最強的可靠性。但這不一定是最可靠的,因為isr中可能就只有leader副本,這樣就退化成了acks=1 的情況。

注意,acks參數是一個字符串類型,而不是一個整數類型。配置錯誤會報異常。

max.request.size

生產者客戶端能發送消息的最大值,默認值為1048576B,1MB。不建議盲目修改,這個參數涉及其他的一些參數的聯動,比如broker端的message.max.bytes參數,如果broker的message.max.bytes參數設置為10,而max.request.size設置為20,當發送一條大小為15B的消息時,生產者參數就會報錯。

retries和retry.backoff.ms

生產者重試次數,默認值為0。消息在從生產者從發出到成功寫入broker之前可能發生一些臨時性異常,比如網絡抖動、leader副本選舉等,這些異常往往是可以自行恢復的,生產者可以配置retries的值,通過生產端的內部重試來恢復而不是一味的將異常拋給生產者;如果重試達到設定次數,生產者才會放棄重試並拋出異常。但是!並不是所有的異常都可以通過重試來解決,比如消息過大,超過max.request.size參數配置的數值。

重試還和參數retry.backoff.ms有關,默認值為100,用來設定兩次重試之間的時間間隔,避免無效的頻繁重試。在配置retries和retry.backoff.ms之前,最好先估算一下可能的異常恢復時間,這樣可以設定總的重試時間要大於異常恢復時間,避免生產者過早的放棄重試。

connections.max.idele.ms

這個參數用來制動多久之后關閉限制的連接,默認值540000(ms),9分鍾、。

linger.ms

這個參數用來指定生產者發送ProducerBatch之前等待更多的消息(ProducerRecord)假如ProducerBatch的時間,默認值為0。ProducerBatch在被填滿或者時間超過linger.ms值時發送出去。增大這個參數的值回增加消息的延遲(消費端接收延遲),但能夠提升一定的吞吐量。

receive.buffer.bytes

這個參數用來設置socket接收消息緩沖區的大小,默認值為32768(B),即32KB。如果設置為-1,則使用操作系統的默認值。如果Producer和Kafka處於不同的機房,則可以適當的調大這個參數值。

send.buffer.bytes

這個參數用來設置socket發送消息緩沖區的大小,默認值為131072(B),即128KB。與receive.buffer.bytes參數一樣,如果設置為-1,則使用操作系統的默認值。

request.timeout.ms

這個參數用來配置Producer等待請求響應的最長時間,默認值為3000(ms)。請求超時之后可以選擇進行重試。這個參數需要比broker端參數replica.lag.time.max.ms值要大,這樣可以減少因客戶端重試引起的消息重復的概率。

enable.idempotence

冪等性開啟,默認為false。

bootstrap.servers

broker集群地址,可以設置一到多個,建議至少設置為2個,若在應用程序啟動的時候,一個broker節點宕機,還可以對另一個已提供節點進行連接。

 

我們的系統生產者配置參數如下

  1 acks = all

  2 buffer.memory  32MB

  3 batch.size 1MB

  4 max.in.flight.requests.per.connection  =1

  5 max.request.size = 10MB

  6 retries = Integer最大值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM