Kafka主題參數說明

producer端

 batch.size 是producer批量發送的基本單位,同一個分區的多條消息會封裝進一個batch。默認是16KB,當batch滿纔會發送batch中所有消息。

linger.ms是sender線程在檢查batch是否ready時候判斷有沒有過期,默認是0ms,超過該值就會直接發送batch,以保證延時不會太高。

compression.type,有GZIP,SNAPPY,LZ4以及none。發送的消息是否被壓縮。如果壓縮可以有效降低網絡IO,但是也會增加producer和broker的CPU開銷。

ack,用於控制消息的持久性,存在-1(等待包括Leader的所有ISR副本成功寫入才響應producer),0(producer完全不等待leader處理結果直接返回),1(leader副本寫入就返回響應給producer)三個參數。

retries,該參數默認0,大於0表示請求失敗時自動重試,重試間隔由retry.backoff.ms指定,默認100ms。重試可能帶來兩個問題:
    

- 消息重發,比如網絡抖動使得broker端實際已經成功寫入,只是因爲網絡沒有及時響應給producer,這種由精確一次處理;
- 消息亂序,通過max.in.flight.requets.per.connection設置1,確保一個broker連接上某時刻只能發生一個請求,若socket存在未完成請求,producer不會新發請求。

buffer.memory,用於緩存消息的緩衝區打一下,默認32MB。producer主線程負責封裝,序列化,分區,發送消息到緩衝區;sender線程負責從緩衝區讀取消息封裝進一個batch

max.request,size,用於控制producer發送請求的大小,即能夠發送的最大消息大小。

request.timeout.ms,等待broker反應時間默認是30s。如果超過該時間視作請求超時。

consumer端

fetch.min.bytes,控制leader每次返回給consumer的最小數據字節數。同理還有fetch.max.bytes。

session.timeout.ms,condinator檢測consumer崩潰的時間,默認10s。

max.poll.interval.ms,consumer處理邏輯所需的最大時間。

enable.auto.commit,consumer是否自動提交位移,對於有較強精確處理語義要求的設置爲false,由用戶自己手動進行位移提交。

heartbeat.interval.ms,coodinator對於consumer心跳請求的響應時間,一般越快越好。一般小於session.timeout.ms,否則會以爲consumer已經dead。

connections.max.idle.ms,控制關閉空閒socket連接的時間,默認9分鐘。

broker參數

num.replica.fetchers,該值控制了broker端follow副本從leader副本拉取消息的最大線程數,對於ack=-1的producer而言,主要的延時基本上就是follow與leader的同步,故在ack=-1時該值越大越好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章