您好,登錄后才能下訂單哦!
怎樣解析Kafka副本與ISR設(shè)計,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在Kafka中一個分區(qū)日志其實就是一個備份日志,kafka利用多個相同備份日志來提高系統(tǒng)的可用性。這些備份日志其實就是所謂的副本。
Kafka的副本具有l(wèi)eader副本和follower副本之分,leader副本為客戶端提供讀寫請求,follower副本只是用于被動地從leader副本中同步數(shù)據(jù),對外不提供讀寫服務(wù)。
Kafka的所有節(jié)點所有副本假設(shè)都在正常運行,那么leader副本會一直不變,但是所謂世界上沒有絕對穩(wěn)定的系統(tǒng),一旦kafa的leader副本節(jié)點出現(xiàn)了問題,那么follower副本需要競爭上崗成為leader副本,但是并不是所有的follower副本都有資格競爭上崗,很明顯假設(shè)一個follower落后的數(shù)據(jù)遠遠少于leader副本,它是沒有資格的。因此Kafka內(nèi)部維護了一組具有資格的follower副本,他們統(tǒng)稱ISR。
ISR中的副本會被剔除,也會有新增。
下圖主要講述了Kafka日志中重要概念,下圖的相關(guān)概念事關(guān)生產(chǎn)、消息消費、ISR以及副本同步機制。
首條消息位移(offset):保存了該副本中所含的第一條消息的offset
日志高水印值(HW):leader副本的HW決定了消費者所能消費的消息范圍,低于等于HW的消息均可被消費者消費
結(jié)束位移(LEO):LEO總是指向下一條消息寫入的位置,處在leader的HW和LEO之間的消息表示還未完全備份。只有所有處于ISR中副本都更新了自己LEO以后,leader的HW才會右移表示寫入消息成功。
ISR其實就是Kafka內(nèi)部維護的具有競爭上崗的一組與leader同步follower的副本集合。
follower副本與leader副本不同步的原因:
同步數(shù)據(jù)請求速度追不上:follower副本在一段時間無法追上leader副本端的消息接收速度。比如follower副本的網(wǎng)絡(luò)I/O阻塞,這會導(dǎo)致follower副本同步leader副本的速度大大降低
進程卡?。篺ollower副本一段時間無法向leader發(fā)出請求,比如follower頻繁的進行GC
新創(chuàng)建的副本:用戶主動增加副本數(shù),新創(chuàng)建的副本在啟動后會追趕leader的進度,這段時間新增的follower副本通常與leader副本是不同步的
該參數(shù)用來檢測同步數(shù)據(jù)請求速度追不上的問題,如果ISR中的副本消息數(shù)落后于leader副本的消息數(shù)超過了該參數(shù)的設(shè)置,將會被踢出ISR。
這個參數(shù)在kafka0.9.0.9版本之后被移除,為什么被移除呢?
肯定是有他的弊端的??紤]以下這個情況,kafka在的生產(chǎn)者的生產(chǎn)速率不是平穩(wěn)的,會有高峰會有低峰,在高峰的時候,由于消息大量聚集產(chǎn)生,導(dǎo)致ISR中的消息與Leader的消息差超過了該數(shù)值,因此ISR中的副本將會被踢出。
但隨著生產(chǎn)消息速率的穩(wěn)定和下降,并且此時follower副本也在全力追趕leader副本,當follower副本重新追上leader副本時,又會重新加入ISR。
該參數(shù)用來檢測另兩種情況:如果在該時間內(nèi),follower副本無法向leader副本請求數(shù)據(jù),那么將會被踢出ISR。
由于在新的版本中移除了replica.lag.max.messages參數(shù)的設(shè)置,因此replica.lag.max.ms也用于同步數(shù)據(jù)請求速度追不上問題的檢測,但用在次問題的檢測上時,檢測機制是只要follower副本落后于leader的時間不持續(xù)性超過該參數(shù)即視為同步,如果持續(xù)性超過該參數(shù)即視為不同步。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。