這里是weihubeats,覺得文章不錯可以關(guān)注公眾號小奏技術(shù),文章首發(fā)。拒絕營銷號,拒絕標(biāo)題黨
背景
最近在使用kafka
的時候遇到了一些性能問題。
所以就打算研究下kafka
相關(guān)的性能優(yōu)化方案。
client
主要分兩個
- producer
- consumer
producer
producer
主要是有兩個核心參數(shù)
- batch.size
- linger.ms
batch.size
先說說這個參數(shù)吧batch.size
是producer
的參數(shù)。
當(dāng)多條消息發(fā)送到相同分區(qū)時,producer
就會將消息打包到一起,然后一次性批量發(fā)送到kafka
。減少網(wǎng)絡(luò)請求
默認(rèn)到小是16384
即16kb
默認(rèn)值其實是偏小的,所以我們最好設(shè)置為更大。
batch.size 設(shè)置的越大,吞吐就越大,但是延遲也會越大
linger.ms
我們設(shè)想一下,如果要發(fā)送的消息一直達(dá)不到我們的batch.size
怎么辦呢?
難道消息一直不發(fā)送嗎?
這里就推出第二個參數(shù)linger.ms
。表示batch的超時時間。
如果linger.ms
時間內(nèi)batch.size
還沒達(dá)到的話,消息也會直接發(fā)送。
該值越大,吞吐越大、但延遲也會越大
consumer
consumer
這邊的核心參數(shù)就是fetch.min.bytes
,默認(rèn)值是1kb
Kafka Broker
端積只要積攢了1kb
的數(shù)據(jù),就可以返回給 Consumer
然后就是一個fetch.max.wait.ms
和producer
的linger.ms
類似。指定broker
最大等待時間,默認(rèn)500ms
kafka最佳實踐
實際早在國外Hortonworks
就總結(jié)了一些kafka
的最佳實踐,雖然文章時間久遠(yuǎn),但是依舊很有參考價值
- 【譯】Kafka最佳實踐 / Kafka Best Practices:https://www.cnblogs.com/huxi2b/p/6720292.html
- 原文:https://www.infoq.com/articles/apache-kafka-best-practices-to-optimize-your-deployment/
- ppt:https://www.slideshare.net/HadoopSummit/apache-kafka-best-practices
總結(jié)
其實可以看到producer
的batch.size
和linger.ms
就是借鑒了tcp/ip
的網(wǎng)絡(luò)發(fā)送算法。
tcp/ip
的Nagle
算法大致的規(guī)則如下
- 如果包長度達(dá)到MSS,則允許發(fā)送
- 如果包含F(xiàn)IN,則允許發(fā)送
- 如果設(shè)置了TCP_NODELAY,則允許發(fā)送
- 未設(shè)置TCP_CORK選項時,若所有發(fā)出去的小數(shù)據(jù)包(包長度小于MSS)均被確認(rèn),則允許發(fā)送
- 上述條件都未滿足,但發(fā)生了超時(一般為200ms),則立即發(fā)送。
if there is new data to send then
if the window size ≥ MSS and available data is ≥ MSS then
send complete MSS segment now
else
if there is unconfirmed data still in the pipe then
enqueue data in the buffer until an acknowledge is received
else
send data immediately
end if
end if
end if
總得來說主要是四個參數(shù)
producer
:
- batch.size
- linger.ms
consumer
:文章來源:http://www.zghlxwxcb.cn/news/detail-772521.html
- fetch.min.bytes
- fetch.max.wait.ms
實際還有很多參數(shù)也需要配置,在kafka
最佳實踐里面都有一些說明,這里就不過多介紹了文章來源地址http://www.zghlxwxcb.cn/news/detail-772521.html
到了這里,關(guān)于聊聊kafka client性能調(diào)優(yōu)及kafka最佳實踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!