上回書(shū)我們講了,生產(chǎn)者發(fā)送消息流程解析傳送門(mén)
那么這篇我們來(lái)看下,生產(chǎn)者發(fā)送消息時(shí)幾個(gè)重要的參數(shù)詳解 ,什么是生產(chǎn)者確認(rèn)機(jī)制? 什么是ISR? 什么是 OSR?
參數(shù):
bootstrap.servers
: Kafka 集群地址 host1:port1,host2:port2,host3:port3
不需要寫(xiě)Kafka集群中全部的broker地址,但是也不要寫(xiě)一個(gè),2-3個(gè)即可,防止節(jié)點(diǎn)宕機(jī)時(shí)集群不可用key.serializer:
key 的序列化器 ,指定key怎么轉(zhuǎn)換成字節(jié)數(shù)組
value.serializer:
value的序列化器 ,指定value怎么轉(zhuǎn)換成字節(jié)數(shù)組
compression type
: 默認(rèn)值:none,對(duì)批次消息進(jìn)行壓縮的方式,gzip,snappy、lz4等
retries :
設(shè)置重試次數(shù),消息重試存在亂序的可能max.in.flight.requests.per.connection
= 1 可以解決亂序問(wèn)題,對(duì)于當(dāng)前連接,有一個(gè)等待確認(rèn)的消息,不會(huì)再發(fā)送后面消息,即確認(rèn)一個(gè)發(fā)送一個(gè),保證消息的有序性
什么是生產(chǎn)者確認(rèn)機(jī)制?
我們?cè)谏a(chǎn)者發(fā)送消息時(shí)可以指定acks參數(shù)值,來(lái)決定收到消息發(fā)送后什么樣的確認(rèn)即可繼續(xù)發(fā)送后面的消息
acks : 生產(chǎn)者發(fā)送消息確認(rèn)機(jī)制acks = 0
: 生產(chǎn)者不等broker確認(rèn),不斷發(fā)送消息,發(fā)送消息快,允許丟消息,只要將消息放到了socket的緩沖區(qū)
,就認(rèn)為消息已發(fā)送成功acks = 1:
默認(rèn)值
,允許少量消息丟失,broker上leader分區(qū)寫(xiě)入
消息即返回生產(chǎn)者消息確認(rèn),不等待follower副本分區(qū)的確認(rèn),這種情況下,存在消息丟失的風(fēng)險(xiǎn)acks = all
: 確保消息不丟失,最強(qiáng)可用性,保證所有(ISR)同步副本分區(qū)都同步成功
消息才返回生產(chǎn)者確認(rèn)消息
什么是ISR? 什么是 OSR?
ISR (In-Sync Replicas): 同步副本
在一定時(shí)間內(nèi)和leader保持?jǐn)?shù)據(jù)同步的副本列表,這句話(huà)可以看到副本保持在ISR集合中需要兩個(gè)條件,一定時(shí)間內(nèi) 和 與leader副本保持?jǐn)?shù)據(jù)同步
1、rerplica.lag.time.max.ms=10000
參數(shù)設(shè)置follower副本向ISR發(fā)送心跳的最大延遲時(shí)間,默認(rèn)10s
也就是說(shuō)10s內(nèi)follower還沒(méi)有向leader去同步數(shù)據(jù),就會(huì)認(rèn)為這個(gè)副本不行了,將它踢出ISR
2、rerplica.lag.max.messages=4000
參數(shù)設(shè)置消息的最大延遲條數(shù),就是如果follower比leader消息數(shù)少4000條以上,就認(rèn)為這個(gè)副本不行了,將它踢出ISR
在Kafka高版本中,取消了條件2的限制
OSR (Out-of-Sync Replicas): 非同步副本
從上面ISR中剔除的副本將會(huì)被放到OSR中,當(dāng)OSR中副本滿(mǎn)足ISR的條件,會(huì)重新加入到ISR中文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-618099.html
值得注意的是,上面生產(chǎn)者確認(rèn)機(jī)制中說(shuō)到的副本同步,指的是ISR中的副本,并不包括OSR中的副本文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-618099.html
到了這里,關(guān)于Kafka 入門(mén)到起飛 - 生產(chǎn)者參數(shù)詳解 ,什么是生產(chǎn)者確認(rèn)機(jī)制? 什么是ISR? 什么是 OSR?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!