亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

史上最全的kafka知識(shí)解析 kafka作用是什么( 三 )


LEO是Log End Offset的縮寫 , 它標(biāo)識(shí)當(dāng)前日志文件中下一條待寫入消息的Offset , 圖中Offset為9的位置即為當(dāng)前日志文件的LEO , LEO的大小相當(dāng)于當(dāng)前日志分區(qū)中最后一條消息的Offset值加1 。分區(qū)ISR集合中的每個(gè)副本都會(huì)維護(hù)自身的LEO , 而ISR集合中最小的LEO即為分區(qū)的HW , 對消費(fèi)者而言只能消費(fèi)HW之前的消息 。
ISR副本集合ISR全稱是“In-Sync Replicas” , 是分區(qū)中正在與Leader副本進(jìn)行同步的Replication列表 。正常情況下ISR必定包含Leader副本 。
ISR列表是持久化在Zookeeper中的 , 任何在ISR列表中的副本都有資格參與Leader選舉 。
ISR列表是動(dòng)態(tài)變化的 , 副本被包含在ISR列表中的條件是由參數(shù)replica.lag.time.max.ms控制的 , 參數(shù)含義是副本同步落后于Leader的最大時(shí)間間隔 , 默認(rèn)10s , 意思就是如果說某個(gè)Follower所在的Broker因?yàn)镴VM FullGC之類的問題 , 卡頓相對Leader延時(shí)超過10s , 就會(huì)被從 ISR 中排除 。Kafka之所以這樣設(shè)計(jì) , 主要是為了減少消息丟失 , 只有與Leader副本進(jìn)行實(shí)時(shí)同步的Follower副本才有資格參與Leader選舉 , 這里指相對實(shí)時(shí) 。
注:
分區(qū)中的所有副本統(tǒng)稱為AR(Assigned Replicas) 。ISR集合是AR集合中的一個(gè)子集 。與Leader副本同步滯后過多的副本(不包括Leader副本)組成OSR(Out-of-Sync Replicas)
復(fù)制機(jī)制如圖所示 , 假設(shè)某個(gè)分區(qū)的ISR集合中有3個(gè)副本 , 即一個(gè)Leader副本和2個(gè)Follower副本 , 此時(shí)分區(qū)的LEO和HW都為3 。消息3和消息4從生產(chǎn)者發(fā)出之后會(huì)被先存入Leader副本 。
在消息寫入Leader副本之后 , Follower副本會(huì)發(fā)送拉取請求來拉取消息3和消息4以進(jìn)行消息同步 。
在同步過程中 , 不同的Follower副本的同步效率也不盡相同 。在某一時(shí)刻Follower1完全跟上了Leader副本而Follower2只同步了消息3 , 如此Leader副本的LEO為5 , Follower1的LEO為5 , Follower2的LEO為4 , 那么當(dāng)前分區(qū)的HW取最小值4 , 此時(shí)消費(fèi)者可以消費(fèi)到offset為0至3之間的消息 。
當(dāng)所有的副本都成功寫入了消息3和消息4 , 整個(gè)分區(qū)的HW和LEO都變?yōu)? , 因此消費(fèi)者可以消費(fèi)到offset為4的消息了 。
關(guān)于讀寫分離Kafka并不支持讀寫分區(qū) , 生產(chǎn)消費(fèi)端所有的讀寫請求都是由Replication Leader副本處理的 , Replication Follower副本的主要工作就是從Leader副本處異步拉取消息 , 進(jìn)行消息數(shù)據(jù)的同步 , 并不對外提供讀寫服務(wù) 。
Kafka之所以這樣設(shè)計(jì) , 主要是為了保證讀寫一致性 , 因?yàn)楦北就绞且粋€(gè)異步的過程 , 如果當(dāng)Follower副本還沒完全和Leader同步時(shí) , 從Follower副本讀取數(shù)據(jù)可能會(huì)讀不到最新的消息 。
Kafka的消息發(fā)送機(jī)制Producer采用push模式將消息發(fā)布到Broker , 每條消息都被append到patition中 , 屬于順序?qū)懘疟P(順序?qū)懘疟P效率比隨機(jī)寫內(nèi)存要高 , 保障kafka吞吐率) 。
Producer寫入消息序列圖如下所示:
流程說明:
Producer先從Zookeeper的”/brokers/…/state”節(jié)點(diǎn)找到該P(yáng)artition的Leader 。Producer將消息發(fā)送給該Leader 。Leader將消息寫入本地log 。followers從Leader pull消息 , 寫入本地log后Leader發(fā)送ACK 。Leader收到所有ISR中的replica的ACK后 , 增加HW并向Producer發(fā)送ACK 。Broker保存消息每個(gè)patition物理上對應(yīng)一個(gè)文件夾(該文件夾存儲(chǔ)該patition的所有消息和索引文件)


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: