Kafka java api參數(shù)說明

java api kafka配置信息分析

producer 配置可選參數(shù)

acks

配置表示 producer 發(fā)送消息到 broker 上以后的確認值。有三個可選項

1. acks=0表示 producer 不需要等待 broker 的消息確認,發(fā)出消息那么就認為消息已成功寫入Kafka,時效率高,但同時風險最大,server 宕機時,數(shù)據(jù)將會丟失

2. acks=1 表示 producer 只需要獲得 kafka 集群中的 leader 節(jié)點確認即可,這個選擇時延較小同時確保了 leader 節(jié)點確認接收成功

3. acks=all leader 節(jié)點在返回確認或錯誤響應(yīng)之前,會等待所有同步副本都收到消息。如果和min.insync.replicas參數(shù)結(jié)合起來,就可以決定在返回確認前至少有多個副本能夠收到消息。比如min.insync.replicas=1就需要至少一個follwer確認收到消息。相對安全,但是效率較低。但是由于 ISR 可能會縮小到僅包含一個 Replica,所以設(shè)置參數(shù)為all并不能一定避免數(shù)據(jù)丟失

batch.size

生產(chǎn)者發(fā)送多個消息到 broker 上的同一個分區(qū)時,為了減少網(wǎng)絡(luò)請求帶來的 性能開銷,通過批量的方式來提交消息,可以通過這個參數(shù)來控制批量提交的 字節(jié)數(shù)大小,默認大小是 16384byte,也就是 16kb,意味著當一批消息大小達 到指定的 batch.size 的時候會統(tǒng)一發(fā)送

linger.ms

Producer 默認會把兩次發(fā)送時間間隔內(nèi)收集到的所有 Requests 進行一次聚合 然后再發(fā)送,以此提高吞吐量,而 linger.ms 就是為每次發(fā)送到 broker 的請求 增加一些 delay,以此來聚合更多的 Message 請求。 這個有點想 TCP 里面的 Nagle 算法,在 TCP 協(xié)議的傳輸中,為了減少大量小數(shù)據(jù)包的發(fā)送,采用了 Nagle 算法,也就是基于小包的等-停協(xié)議。

默認情況即使緩沖區(qū)有剩余的空間,也會立即發(fā)送請求,設(shè)置一段時間用來等待從而將緩沖區(qū)填的更多,單位為毫秒,producer發(fā)送數(shù)據(jù)會延遲1ms,可以減少發(fā)送到kafka服務(wù)器的請求數(shù)據(jù)

batch.size 和 linger.ms 這兩個參數(shù)是 kafka 性能優(yōu)化的關(guān)鍵參數(shù)當二者都配置的時候,只要滿足其中一個要 求,就會發(fā)送請求到 broker 上

max.request.size

設(shè)置請求的數(shù)據(jù)的最大字節(jié)數(shù),為了防止發(fā)生較大的數(shù)據(jù)包影響到吞吐量,默認值為 1MB

consumer配置可選參數(shù)

group.id

當producer發(fā)送一條消息,相同group.id的多個consumer只有其中一個consumer能消費到

(比如 topic=hehe的主題發(fā)送了一條消息,group.id=666的組,有三個消費者監(jiān)聽了這個主題,但這條消息只會被其中一個consumer消費到),group.id=999的一個consumer也能消費這條消息。

enable.auto.commit

消費者消費消息以后自動提交,只有當消息提交以后,該消息才不會被再次接 收到,還可以配合 auto.commit.interval.ms 控制自動提交的頻率。 當然,我們也可以通過 consumer.commitSync()的方式實現(xiàn)手動提交

auto.offset.reset

這個參數(shù)是針對新的 groupid 中的消費者而言的,當有新 groupid 的消費者來 消費指定的 topic 時,對于該參數(shù)的配置,會有不同的語義

auto.offset.reset=latest 情況下,新的消費者將會從其他消費者最后消費的 offset 處開始消費 Topic 下的消息

auto.offset.reset= earliest 情況下,新的消費者會從該 topic 最早的消息開始 消費

auto.offset.reset=none 情況下,新的消費者加入以后,由于之前不存在 offset,則會直接拋出異常。

max.poll.records

此設(shè)置限制每次調(diào)用 poll 返回的消息數(shù),這樣可以更容易的預測每次 poll 間隔 要處理的最大值。通過調(diào)整此值,可以減少 poll 間隔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容