kafka--基礎知識點--6.1--LEO、HW、LW

在 Apache Kafka 中,LEO(Log End Offset)HW(High Watermark)、和 LW(Low Watermark) 是副本機制和日志管理中的核心概念,共同確保數據一致性、可見性和存儲效率。以下是它們的詳細解釋及關系:

1. LEO(Log End Offset,日志末端偏移量)

  • 定義
    表示當前日志文件中下一條待寫入消息的偏移量。每個副本(Leader 或 Follower)都有自己的 LEO,用于跟蹤自身的寫入進度。
  • 特點
    • 動態增長:新消息寫入時,LEO 會遞增。
    • 副本獨立:Leader 和 Follower 的 LEO 可能不同,Follower 的 LEO 表示已從 Leader 同步到的位置。
  • 示例
    若副本中最大消息的偏移量為 6,則 LEO 為 7(下一個寫入位置)。

2. HW(High Watermark,高水位)

  • 定義
    分區中已成功復制到所有 ISR(In-Sync Replicas)副本的最后一條消息的偏移量 +1。取 ISR 中所有副本 LEO 的最小值。
  • 作用
    • 消息可見性:消費者只能讀取 HW 之前的消息,HW 之后的消息對消費者不可見。
    • 數據一致性:確保消費者讀取的消息已持久化到所有 ISR 副本,避免數據丟失。
  • 更新機制
    • Leader 更新:Leader 根據所有 Follower 的 LEO 動態更新 HW,公式為 HW = min(Leader_LEO, Follower1_LEO, Follower2_LEO, ...)
    • Follower 更新:Follower 從 Leader 獲取最新 HW,并取自身 LEO 與 Leader HW 的較小值作為自己的 HW。
  • 示例
    若 ISR 的 LEO 分別為 10、9、8,則 HW = 8。消費者只能讀取偏移量 0-7 的消息。

3. LW(Low Watermark,低水位)

  • 定義
    AR(Assigned Replicas)集合中最小的 logStartOffset 值。logStartOffset 是日志文件的起始偏移量,可通過日志清理策略調整。
  • 作用
    • 日志清理:標記最早還能被 Kafka 保留的偏移量,LW 以下的數據會被自動清理,防止日志無限增長。
    • 存儲優化:通過配置日志保留策略(如按時間或大小),Kafka 自動刪除 LW 之前的舊數據。
  • 示例
    若 LW = 1000,則偏移量小于 1000 的消息會被清理,消費者無法讀取。

4. 關系與對比

概念層級作用更新頻率與消費者關系
LEO副本級跟蹤副本寫入進度,決定新消息寫入位置消費者不可見,僅用于內部同步
HW分區級定義消費者可見的消息范圍,確保數據一致性消費者只能讀取 HW 之前的消息
LW分區級標記日志清理邊界,優化存儲空間消費者無法讀取 LW 之前的數據

典型場景與配置

  1. 消息寫入與同步

    • 生產者發送消息到 Leader,Leader 更新 LEO。
    • Follower 同步消息后更新 LEO,并反饋給 Leader。
    • Leader 根據所有 Follower 的 LEO 更新 HW,確保消息對消費者可見。
  2. Leader 故障切換

    • 新 Leader 被選舉后,會截斷日志到 HW,確保不包含未提交的消息。
    • Follower 從新 Leader 的 HW 位置開始同步,恢復 ISR 狀態。
  3. 日志清理與存儲

    • 配置 log.retention.hourslog.retention.bytes 定義日志保留策略。
    • Kafka 自動清理 LW 之前的舊數據,釋放存儲空間。

參數調優建議

  • 可靠性優先
    • 設置 acks=allmin.insync.replicas=2,確保消息寫入所有 ISR 副本。
    • 縮短 replica.lag.time.max.ms(默認 30 秒),快速檢測落后副本。
  • 性能優先
    • 設置 acks=1,僅需 Leader 確認,提高吞吐量。
    • 增大 log.retention.byteslog.retention.hours,減少日志清理頻率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915861.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915861.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915861.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在線深凹槽深檢測方法都有哪些 —— 激光頻率梳 3D 輪廓檢測

引言在制造業中,深凹槽深度的精確檢測是保證零部件質量的關鍵環節。隨著智能制造的推進,在線檢測需求日益迫切,傳統檢測方法在效率和精度上的不足逐漸顯現。本文將梳理在線深凹槽深的傳統檢測方法,并重點探討激光頻率梳 3D 輪廓檢…

NumPy 數組拼接的高級技巧與實踐

在數據處理和機器學習領域,NumPy 是 Python 中最核心的科學計算庫之一。NumPy 數組(ndarray)的拼接操作是數據預處理中極為常見的需求。本文將深入探討如何將不同形狀的 NumPy 數組進行拼接,特別是如何將多個一維數組與二維數組進…

原創-基于 PHP 和 MySQL 的證書管理系統 第三版

第一版屬于開源版本,所以后臺功能沒有開發許多出來,今天分享證書查詢第三版; 通過幾天的緊急寫代碼及測試;第三版基本可以上線上,不過后面有一些BUG只能一邊修復。 演示地址:物星科云證書管理系統 第三版…

爬蟲虛擬環境

conda create --name myrepenv python3.12創建一個名為 myrepenv、Python 版本為 3.12 的全新 Conda 虛擬環境,適合需要隔離依賴或測試不同 Python 版本的項目。我的方式創建(需要指定盤符)conda create --prefixD:\Anaconda3\envs\myrepenv python3.12展示所下的co…

Netty集群方案詳解與實戰(Zookeeper + Redis + RabbitMQ)

一、背景 二、Netty 單體架構的優缺點 優點 缺點 三、Netty 集群架構的優缺點 優點 缺點 四、適用場景對比 五、Netty單體架構代碼實現 六、Netty集群架構方案實現 方案一、Nginx負載均衡實現集群(較為簡單) Nginx配置 前端連接方式 方案二、NacosGateway(結合…

Oracle遷移到高斯,查詢字段默認小寫,解決辦法

一、問題說明 Oracle中,查詢結果字段默認大寫。高斯中,查詢結果字段默認小寫。在Mybatis的xml中,如果查詢語句使用Map接收查詢結果,使用resultType"java.util.HashMap"或resultType"Map"等寫法,返…

Android Jetpack Compose + MVVM 開發流程深度分析

核心組件關系圖 [View] -- 觀察 --> [ViewModel] -- 操作 --> [Repository]| | Compose UI StateFlow/LiveData| | 用戶交互事件 Room/Retrofit| …

Tailwind CSS快速上手 Tailwind CSS的安裝、配置、使用

📚前言 在Web前端開發的歷史長河中,CSS的編寫方式經歷了多次演進,從早期的原生CSS 到 CSS預處理(Less/Sass/Stylus) 到 CSS-in-JS(Styled-Components/Emotion) 再到 Utility-First 原子化CSS。每一種演進方案其本質都是圍繞“開發效率”、“…

單例模式的智慧:從UVM看控制的藝術

有時候,生活中的很多東西其實只需要一個就夠了,就像一個公司只需要一個CEO,一個王朝只需要一個皇帝。在UVM驗證環境中,也有很多這樣的需求——有些對象,我們希望它在整個仿真過程中只存在一個實例。這就是我們今天要聊…

Hexo - 免費搭建個人博客01 - 安裝軟件工具

導言我的博客:https://q164129345.github.io/ Hexo 作為一個 Node.js 框架,它依賴于 Node.js 運行時環境來執行。 一、安裝Node.js官方網址:https://nodejs.org/zh-cn追求系統穩定性、可靠性以及希望減少維護頻率的用戶來說,LTS版…

【Kubernetes】集群啟動nginx,觀察端口映射,work節點使用kubectl配置

參考b站叩丁狼總結:完整版Kubernetes(K8S)全套入門微服務實戰項目,帶你一站式深入掌握K8S核心能力 在master節點執行 kubectl create deployment nginx --imagenginxkubectl expose deployment nginx --port80 --typeNodePort1. …

20250704-基于強化學習在云計算環境中的虛擬機資源調度研究

基于強化學習在云計算環境中的虛擬機資源調度研究 隨著云計算規模的持續擴大,數據中心虛擬機資源調度面臨動態負載、異構資源適配及多目標優化等挑戰。傳統啟發式算法在復雜場景下易陷入局部最優,而深度強化學習(DRL)憑借序貫決策…

day 33打卡

day 21 常見的降維算法 # 先運行之前預處理好的代碼 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore)# 設置中文字體 plt.rcParams[font.sans-serif] [SimHei] plt.rcParam…

sec(x)積分推導

在MATLAB中繪制 sec?(x)、cos(x) 和 ln?∣sec?(x)tan?(x)∣的函數圖像,需要特別注意 sec?(x) 在 cos?(x)0(即 xπ/2kπ)處的奇點。(deepseek生成代碼)% 定義x范圍(-2π到2π),…

gpt面試題

vue面試題 💡 一、響應式系統相關 ?1. Vue 3 的響應式系統是如何實現的?和 Vue 2 有何本質區別? 答案: Vue 3 使用 Proxy 實現響應式(位于 vue/reactivity 模塊),替代 Vue 2 的 Object.defineP…

【基于OpenCV的圖像處理】圖像預處理之圖像色彩空間轉換以及圖像灰度化處理

目錄 零、寫在前面的話 一、圖像色彩空間轉換 1.1 RGB顏色空間 1.1.1 RGB顏色空間概念 1.1.2 RGB顏色模型?編輯 1.1.3 關于顏色加法 1.1.4 顏色加權加法 1.2 HSV顏色空間 1.2.1 HSV顏色空間概念 1.2.2 HSV顏色模型 1.2.3 應用意義 1.3 顏色轉換 1.3.1 轉換方法 …

Java TCP 通信詳解:從基礎到實戰,徹底掌握面向連接的網絡編程

作為一名 Java 開發工程師,你一定在實際開發中遇到過需要建立穩定連接、可靠傳輸、有序通信等場景。這時,TCP(Transmission Control Protocol) 通信就成為你必須掌握的重要技能之一。TCP 是一種面向連接、可靠、基于字節流的傳輸協…

HTML5 網頁游戲設計開發——1、HTML基礎

前言 互聯網上的應用程序被稱為Web程序,Web引用用程序是用Web文檔(網頁)累表現用戶界面,而Web文檔都遵守HTML格式。HTML5是最新的HTML標準。之前的版本HTML4.01于1999年發布,小20年過去了,互聯網已經發聲了…

opencv圖片標注

功能使用python opencv, 將文字信息標注在圖片中同一張圖片中涉及多次標注文字大小為標注框的0.3倍使用多綫程運行import cv2 import threading import numpy as npdef draw_annotations(item, annotations):"""在圖片上繪制標注框和文本annotations: 標注列表…

矩陣SVD分解計算

對于有數學庫的時候,進行矩陣相關計算還是不復雜,但是沒有數學庫就很麻煩,利用算法實現了矩陣奇異值分解。 void decompose(const std::vector<std::vector<double>>& A, std::vector<std::vector<double>>& U, std::vector<dou…