AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

九張圖帶你理解 Kafka 中高水位 HW

來源: 責(zé)編: 時間:2024-07-03 10:09:50 108觀看
導(dǎo)讀大家好,我是君哥。Kafka 高水位(簡稱 HW)是 Kafka 中非常重要的一個概念,今天來聊一聊 HW。1 HW 簡介HW 是 Kafka 中 Offset 的一個值,HW 作為一個邊界,Offset 小于 HW 的消息被稱為已提交消息,這部分消息可以被消費者進行拉

大家好,我是君哥。BUk28資訊網(wǎng)——每日最新資訊28at.com

Kafka 高水位(簡稱 HW)是 Kafka 中非常重要的一個概念,今天來聊一聊 HW。BUk28資訊網(wǎng)——每日最新資訊28at.com

1 HW 簡介

HW 是 Kafka 中 Offset 的一個值,HW 作為一個邊界,Offset 小于 HW 的消息被稱為已提交消息,這部分消息可以被消費者進行拉取消費,大于等于 HW 的消息被稱為未提交消息,不能被消費者拉取。如下圖:BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

Offset 小于 108 的消息可以被消費者消費,Offset 大于等于 108 的消息不能被消費者消費 。BUk28資訊網(wǎng)——每日最新資訊28at.com

2 LEO 簡介

Kafka 中跟 Offset 相關(guān)的還有一個重要概念叫 LEO(Log End Offset)。LEO 表示 Offset 中的最后一個位置,也就是新消息寫入的第一個位置,這個位置還沒有消息。比如下圖中的 114 這個位置,新消息寫入時會從這個位置開始存儲。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

3 HW 更新機制

對于 Kafka 的一個分區(qū)來說,分區(qū)的所有副本都有 HW 和 LEO 這 2 個重要屬性,不光是 Leader 副本。但是 Leader 副本的 HW 值被作為整個分區(qū)的 HW。BUk28資訊網(wǎng)——每日最新資訊28at.com

因此,分區(qū)每個副本所在的 Broker 都保存了自己的 HW 和 LEO 值,而 Leader 副本所在的 Broker 節(jié)點還保存了 Follower 副本的 HW 和 LEO。BUk28資訊網(wǎng)——每日最新資訊28at.com

注意:這里說的 Follower 必須跟 Leader 保持同步,一般用 2 個條件來判斷:BUk28資訊網(wǎng)——每日最新資訊28at.com

  • Follower 在 ISR 集合中;
  • Follower 中 LEO 值落后于 Leader LEO 值的時間,不超過參數(shù)(replica.lag.time.max.ms)的值,默認(rèn) 10s。

如下圖,partition-test 這個分區(qū)有 3 個副本,Leader 和 Follower1、Follower2,F(xiàn)ollower1 和 Follower2 所在的 Broker1 上保存了自己的 HW 和 LEO,而 Leader 所在的 Broker0 不僅保存了自己的 HW 和 LEO,還保存了 Follower1 跟 Follower2 的 HW 和 LEO。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

3.1 Follower 更新

Broker1 和 Broker2 作為分區(qū)的 Follower 副本,會從 Leader 拉取消息,寫入本地磁盤,然后更新 LEO。更新成功 LEO 后,比較自己的 LEO 值跟 Leader 副本發(fā)送的 HW 值,取較小的作為自己的 HW。如下圖:BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

3.2 Leader 更新

從 3.1 中的圖可以看到,Leader 收到 Follower 拉取消息請求后,會根據(jù) Follower 副本發(fā)送的拉取請求中的 Offset 更新本地保存的 Follower 的 LEO。同時 leader 會更新自己的 HW = min LEO of{Leader、Follower1、Follower2}。BUk28資訊網(wǎng)——每日最新資訊28at.com

需要注意的是,Leader 是不能更新 Follower 的 HW 的。BUk28資訊網(wǎng)——每日最新資訊28at.com

下面看一下 Leader 副本收到生產(chǎn)者發(fā)送的消息時是怎樣更新自己的 LEO 和 HW 的。如下圖:BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

4 一個示例

下面以 Leader 只有一個 Follower 的場景來說明 LEO 和 HW 的更新過程。BUk28資訊網(wǎng)——每日最新資訊28at.com

初始狀態(tài),Leader 所在的 Broker 節(jié)點保存的 Leader 的 LEO 和 HW 都是 0,保存的 Follower 的 LEO = 0。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

生產(chǎn)者發(fā)送一條消息后,Leader 節(jié)點更新 LEO = 1,此時 Leader 的 HW 是 0。Follower 還沒有發(fā)起拉取請求,所以 Follower 的 LEO 任然是 0,Leader 的 HW 是 0。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

Follower 第一次拉取消息,發(fā)送給 Leader 的 Offset = 0,Leader 節(jié)點收到請求后,因為 Offset = 0,所以本地保存的 Follower LEO 不變。Leader 節(jié)點返回消息給 Follower,F(xiàn)ollower 節(jié)點寫入消息后更新自己的 LEO = 1。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

Follower 第二次拉取消息,發(fā)送給 Leader 的 Offset = 1,Leader 節(jié)點收到請求后,更新本地保存的 Follower LEO = 1,更新自己的 HW = 1 并返回給 Follower,F(xiàn)ollower 收到 Leader 發(fā)送的 HW 后更新自己的 HW = 1。BUk28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片BUk28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

高水位 HW 這個概念在 Kafka 中標(biāo)記消息是否可以被消費者消費,這個概念跟 LEO 有著重要的關(guān)系。本文介紹了 LEO 和 HW 的更新機制,希望對你理解 HW 有所幫助。BUk28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-98413-0.html九張圖帶你理解 Kafka 中高水位 HW

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: K8s 也有設(shè)計模式?你知道嗎?

下一篇: Switch語句中使用String類型的實現(xiàn)原理

標(biāo)簽:
  • 熱門焦點
Top