国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?

這篇具有很好參考價(jià)值的文章主要介紹了Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

上文我們已經(jīng)學(xué)到,

  • 一個(gè)Topic(主題)會(huì)有多個(gè)Partition(分區(qū))
  • 為了保證高可用,每個(gè)分區(qū)有多個(gè)Replication(副本)
  • 副本分為L(zhǎng)eader 和 Follower 兩個(gè)角色,Leader副本對(duì)外提供讀寫服務(wù),F(xiàn)ollower 從Leader同步數(shù)據(jù)
  • 當(dāng)Leader副本掛掉,從ISR中選舉一個(gè)Follower副本成為新的Leader對(duì)外繼續(xù)提供服務(wù)
  • 那么就要保證分區(qū)各副本間數(shù)據(jù)一致性

圖1:
Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?,kafka,kafka,HW,LEO,高水位

見上圖,先來(lái)熟悉一下

  • 已提交,Leader副本已經(jīng)被ISR中所有Follower 都同步的消息
  • 未提交,Leader已經(jīng)寫入,還沒有被Follower同步的消息
  • 對(duì)Consumer(消費(fèi)者)而言,已提交的消息都可以拿到
  • Leader 和 Follower副本上都有HW 和 LEO
  • Leader副本除了自己的LEO,還存Follower的LEO(Remote LEO)

HW (High WaterMarker) 高水位

圖2:
Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?,kafka,kafka,HW,LEO,高水位
高水位可以理解為一個(gè)橫切面,存儲(chǔ)的也是Offset(位移)值,
拉齊分區(qū)ISR所有副本已經(jīng)寫入的消息,保證HW前的消息你有我有全都有啊,水桶原理

這里要注意,所有副本指的是ISR列表中的同步副本,OSR中同步慢的副本不管
為啥只管ISR列表,不管OSR列表中的副本呢?
這也就是為啥要搞HW 和 LEO 的原因,搞HW就是為了當(dāng)Leader宕機(jī)了,會(huì)從ISR列表中選舉一個(gè)Follower成為新的Leader繼續(xù)對(duì)外提供服務(wù),來(lái)實(shí)現(xiàn)高可用,而HW能保證任意一個(gè)Follower都包含對(duì)消費(fèi)者可見的所有數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的可靠性
而OSR是同步過慢的副本,選舉也不選它,所以記錄HW值也沒必要管OSR列表

LEO (Log End Offset) 日志末端位移

就是下一個(gè)消息要寫入的Offset(位移),
如上圖1,當(dāng)前副本最后一條消息的位移是13,下一個(gè)消息寫入14位置,該副本的LEO值就是14

Follower 副本何時(shí)更新LEO呢?

以圖2 中為例:
Leader 的LEO = 14
Follower1 的 LEO = 12
Follower2 的 LEO = 8

Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?,kafka,kafka,HW,LEO,高水位

  • 對(duì)于Leader副本來(lái)說(shuō),每次寫入消息,都會(huì)更新LEO的值
  • Follower 副本不停地向Leader副本發(fā)送Fetch請(qǐng)求,一旦獲取數(shù)據(jù)后就寫入log(日志)文件中進(jìn)行備份,同時(shí)更新LEO值
  • 其實(shí)Follower跟Leader一樣,寫入數(shù)據(jù)后就更新自己的LEO值

那么Leader 端的Follower的LEO 什么時(shí)候更新呢?

  • 當(dāng)Leader接收到Follower發(fā)起的Fetch請(qǐng)求
  • 先從Log文件中讀取數(shù)據(jù)
  • 先更新Leader中存儲(chǔ)的Follower的LEO
  • 再將數(shù)據(jù)返回給Follower
  • 這里會(huì)不會(huì)存在Leader更新了Follower的LEO,但是Follower實(shí)際并沒有收到返回的消息,而造成Follower 所在broker 和 Leader所在broker存的LEO值不一致呢?

Follower 何時(shí)更新HW呢?

以圖2 中為例:
Leader 、Follower1 、 Follower2 的 HW = 7

Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?,kafka,kafka,HW,LEO,高水位

  • Follower寫入數(shù)據(jù)后,會(huì)更新自己的LEO值,然后就嘗試更新自己的HW值
  • Follower的HW值是怎么算的呢?
    • 是根據(jù)自己當(dāng)前LEO值與Leader返回的HW值比較,去較小值作為HW更新
    • 這很好理解,Leader中記錄的HW是所有副本HW最小的值,也就是同步最慢的那個(gè)副本的LEO,每個(gè)副本都需要知道這個(gè)事,自己不是最小那就記別人的值

Leader 何時(shí)更新HW呢?

  • Leader中存儲(chǔ)的HW就是整個(gè)分區(qū)的HW,直接影響消息對(duì)消費(fèi)者的可見性
  • Leader更新HW有4中情況
    • Leader接收生產(chǎn)者發(fā)送過來(lái)的消息,寫入文件后,檢查是否需要更新HW
    • Follower副本選舉成為新的Leader是,Kafka會(huì)嘗試去更新分區(qū)HW
    • Broker崩潰,導(dǎo)致副本被踢出ISR,Kafka會(huì)檢查分區(qū)HW是否有被更新的必要
    • Leader處理Follower的Fetch請(qǐng)求是,先從Log讀取數(shù)據(jù),然后嘗試跟新HW值
  • 正常情況下就是2種: leader處理producer請(qǐng)求,leader處理follower的fetch請(qǐng)求
Leader 的HW值是怎么算的呢?
  • 先選出所有滿足條件的副本,ISR同步副本
  • 比較它們的LEO(包括leader的LEO)
  • 選擇最小的LEO值作為HW

感覺有點(diǎn)迷糊? 我們?cè)賮?lái)一篇舉個(gè)栗子,掰BoBo說(shuō)陷一下子,跟住奧~


** 都說(shuō)kafka最厲害的地方是他的設(shè)計(jì)思想,果然有很多精妙之處啊**文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692514.html

到了這里,關(guān)于Kafka 入門到起飛 - 什么是 HW 和 LEO?何時(shí)更新HW和LEO呢?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Kafka 入門到起飛 - Kafka怎么做到保障消息不會(huì)重復(fù)消費(fèi)的? 消費(fèi)者組是什么?

    Kafka 入門到起飛 - Kafka怎么做到保障消息不會(huì)重復(fù)消費(fèi)的? 消費(fèi)者組是什么?

    消費(fèi)者 : 1、訂閱Topic(主題) 2、從訂閱的Topic消費(fèi)(pull)消息, 3、將消費(fèi)消息的offset(偏移量)保存在Kafka內(nèi)置的一Topic名字是_consumer_offsets的主題中,在Kafka的logs文件下能看到這??文件,存放的是消息的偏移量數(shù)據(jù) 消費(fèi)者組 : 1、訂閱同一個(gè)Topic的消費(fèi)者可以加入到一個(gè)

    2024年02月15日
    瀏覽(21)
  • Kafka 入門到起飛 - 生產(chǎn)者參數(shù)詳解 ,什么是生產(chǎn)者確認(rèn)機(jī)制? 什么是ISR? 什么是 OSR?

    上回書我們講了,生產(chǎn)者發(fā)送消息流程解析傳送門 那么這篇我們來(lái)看下,生產(chǎn)者發(fā)送消息時(shí)幾個(gè)重要的參數(shù)詳解 ,什么是生產(chǎn)者確認(rèn)機(jī)制? 什么是ISR? 什么是 OSR? bootstrap.servers : Kafka 集群地址 host1:port1,host2:port2,host3:port3 不需要寫Kafka集群中全部的broker地址,但是也不要寫

    2024年02月15日
    瀏覽(27)
  • Kafka 入門到起飛系列

    2024年02月15日
    瀏覽(42)
  • Kafka 入門到起飛 - Kafka是怎么保證可靠性的呢

    什么是消息的可靠性呢,就是Kafka作為消息中間件,可以保證生產(chǎn)者發(fā)送過來(lái)的消息,即使在Kafka集群有節(jié)點(diǎn)出現(xiàn)宕機(jī)的情況下,也不會(huì)丟失 Kafka 是通過 消息確認(rèn)機(jī)制 和 副本復(fù)制機(jī)制 來(lái)保證消息可靠性的 創(chuàng)建topic時(shí),可以指定 副本因子 repilication-factor = 3 ,默認(rèn)是3 表示分區(qū)

    2024年02月12日
    瀏覽(37)
  • Kafka 入門到起飛 - 核心概念(術(shù)語(yǔ)解釋)

    Kafka 入門到起飛 - 核心概念(術(shù)語(yǔ)解釋)

    在kafka之旅,我們會(huì)大量討論Kafka中的術(shù)語(yǔ),那么就讓我們先來(lái)了解一下這些核心概念 消息(Message): kafka的數(shù)據(jù)單元稱為消息,相當(dāng)于DB里的 一行數(shù)據(jù) 或 一條記錄 消息由 字節(jié)數(shù)組 組成 批次: 生產(chǎn)者組一批數(shù)據(jù)再向kafka推送,批次大小可以通過參數(shù)配置 把消息分成批次傳輸

    2024年02月17日
    瀏覽(21)
  • Kafka 入門到起飛系列 - 生產(chǎn)者發(fā)送消息流程解析

    Kafka 入門到起飛系列 - 生產(chǎn)者發(fā)送消息流程解析

    生產(chǎn)者通過 producerRecord 對(duì)象封裝消息主題、消息的value(內(nèi)容)、timestamp(時(shí)間戳)等 生產(chǎn)者通過 send() 方法發(fā)送消息,send()方法會(huì)經(jīng)過如下幾步 1. 首先將消息交給 攔截器(Interceptor) 處理, 攔截器對(duì)生產(chǎn)者而言,對(duì)所有消息都是生效的,攔截器也支持鏈?zhǔn)骄幊蹋ㄘ?zé)任器鏈)的

    2024年02月16日
    瀏覽(24)
  • Kafka 入門到起飛系列 - 消費(fèi)者組管理、位移管理

    Kafka 入門到起飛系列 - 消費(fèi)者組管理、位移管理

    消費(fèi)者組 - Consumer Group 上文我們已經(jīng)講過消費(fèi)者組了,我們知道消費(fèi)組的存在可以保證一個(gè)主題下一個(gè)分區(qū)的消息只會(huì)被組內(nèi)一個(gè)消費(fèi)者消費(fèi),從而避免了消息的重復(fù)消費(fèi) 消費(fèi)者組是Kafka 提供的可擴(kuò)展且具有容錯(cuò)性的消費(fèi)者機(jī)制 消費(fèi)組有一個(gè)或多個(gè)消費(fèi)者,消費(fèi)者可以是一

    2024年02月15日
    瀏覽(27)
  • Kafka篇——Kafka集群Controller、Rebalance和HW的詳細(xì)介紹,保姆級(jí)教程!

    Kafka篇——Kafka集群Controller、Rebalance和HW的詳細(xì)介紹,保姆級(jí)教程!

    一、概念 在Kafka中,Controller是Kafka集群中的一個(gè)角色, 負(fù)責(zé)管理集群的元數(shù)據(jù)、分區(qū)分配、副本管理等功能。 Controller的主要職責(zé)包括: 1. 元數(shù)據(jù)管理:Controller負(fù)責(zé)維護(hù)Kafka集群的元數(shù)據(jù),包括broker的存活狀態(tài)、分區(qū)的分配情況、副本的分配情況等。它通過與Zookeeper進(jìn)行交互

    2024年01月19日
    瀏覽(25)
  • Kafka核心原理第一彈——更新中

    Kafka核心原理第一彈——更新中

    首先了解兩個(gè)專業(yè)術(shù)語(yǔ),研究kafka這個(gè)東西,你必須得搞清楚這兩個(gè)概念,吞吐量,延遲。 寫數(shù)據(jù)請(qǐng)求發(fā)送給kafka一直到他處理成功,你認(rèn)為寫請(qǐng)求成功,假設(shè)是1毫秒,這個(gè)就說(shuō)明性能很高,這個(gè)就是延遲。 kafka,每毫秒可以處理1條數(shù)據(jù),每秒可以處理1000條數(shù)據(jù),這個(gè)單位

    2024年02月11日
    瀏覽(30)
  • Kafka核心原理第二彈——更新中

    Kafka核心原理第二彈——更新中

    1. Kafka Producer怎么把消息發(fā)送給Broker集群的? 需要指定把消息發(fā)送到哪個(gè)topic去 首先需要選擇一個(gè)topic的分區(qū),默認(rèn)是輪詢來(lái)負(fù)載均衡,但是如果指定了一個(gè)分區(qū)key,那么根據(jù)這個(gè)key的hash值來(lái)分發(fā)到指定的分區(qū),這樣可以讓相同的key分發(fā)到同一個(gè)分區(qū)里去,還可以自定義par

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包