Kafka Broker 核心原理全解析:存儲、高可用與數據同步

Kafka Broker 核心原理全解析:存儲、高可用與數據同步

思維導圖

在這里插入圖片描述

正文:Kafka Broker 核心原理深度剖析

Kafka 作為高性能的分布式消息隊列,其 Broker 節點的設計是支撐高吞吐、高可用的核心。本文將從存儲結構、消息清理、高可用選舉、數據同步四個維度,解析 Kafka Broker 的工作原理。

一、Kafka Broker 存儲原理:如何高效管理海量消息?

1. 分區與副本:橫向擴展與可靠性的基石
  • 分區(Partition)

    一個 Topic 被拆分為多個 Partition,分布在不同 Broker 上實現橫向擴展。單個 Partition 內的消息順序寫入,但全局無序。例如 tom-topic 可分為 Partition0、Partition1 等,每個分區對應獨立的物理目錄(如 tom-topic-0)。

  • 副本(Replica)

    為避免單節點故障導致數據丟失,每個 Partition 可設置多個副本(通過 replication-factor 配置)。副本分為:

    • Leader:對外提供讀寫服務;

    • Follower:僅從 Leader 異步拉取數據,保持同步。

      注意:副本數不能超過 Broker 節點數,否則會報錯。

2. 副本分布規則:均衡負載與容災

Kafka 通過 assignReplicasToBrokers 函數分配副本,核心規則包括:

  1. 分區 0 的第一個副本隨機分配到某個 Broker;

  2. 其他分區的第一個副本按 “蛇形走位” 分布(如 Broker2→Broker3→Broker1→Broker2…);畫圖表示 “蛇形走位” ;
    在這里插入圖片描述

  3. 同一分區的副本必不在同一 Broker,避免單點故障。

例如,4 個分區、2 個副本的 Topic 會將 8 個副本均衡分布到 3 臺 Broker 上(3:3:2),確保負載均衡。

3. Segment 機制:避免文件過大的拆分策略

為防止單個日志文件無限膨脹,Kafka 將每個 Partition 拆分為多個 Segment,每個 Segment 包含:

  • .log:存儲消息數據;

  • .index:Offset 與消息物理位置的映射(稀疏索引);

  • .timeindex:時間戳與 Offset 的映射。

Segment 切分觸發條件

  • 大小達到閾值(默認 1G,由 log.segment.bytes 控制);

  • 時間超過閾值(默認 1 周,由 log.roll.hours 控制);

  • 索引文件滿(默認 10M,由 log.index.size.max.bytes 控制)。

4. 稀疏索引:平衡查詢效率與存儲成本

Kafka 采用 稀疏索引(非每條消息都建索引),通過 log.index.interval.bytes(默認 4KB)控制索引密度:每寫入 4KB 數據,生成一條索引記錄。

  • 優勢:減少索引文件大小,降低維護成本;

  • 查詢流程:先通過二分法定位 Segment,再在索引中查找最近 Offset,最后在 .log 文件中遍歷匹配。

5. 總結

Kafka存儲結構:

在這里插入圖片描述

二、消息保留與清理機制:如何防止磁盤撐爆?

Kafka 通過兩種策略管理消息生命周期,可通過 log.cleanup.policy 配置(默認 delete)。

1. 刪除策略(Delete)

定時任務(默認每 5 分鐘,log.retention.check.interval.ms)觸發刪除,規則包括:

  • 時間閾值:默認保留 1 周(log.retention.hours),支持分鐘(log.retention.minutes)或毫秒級配置;

  • 大小閾值:通過 log.retention.bytes 限制總大小,超過后從最舊數據開始刪除。

2. 壓縮策略(Compact)

針對 Key 重復的消息(如 __consumer_offsets 主題),壓縮后僅保留最新版本。例如:

  • 原消息:k1:aa → k1:ii → k1:kk

  • 壓縮后:僅保留 k1:kk(最新 Offset)。

    壓縮可減少存儲空間,但會導致 Offset 不連續(不影響查詢)。

在這里插入圖片描述

三、高可用機制:如何保證服務不中斷?

1. Controller 選舉:集群的 “管理者”

Kafka 通過 Zookeeper 選舉唯一的 Controller 節點,負責管理全集群元數據:

  • 選舉方式:所有 Broker 競爭創建 Zookeeper 臨時節點 /controller,成功創建者成為 Controller;

  • 故障轉移:若 Controller 宕機,Zookeeper 臨時節點消失,其他 Broker 重新競爭。

2. Leader 選舉:分區級別的高可用

當 Leader 副本故障時,需從副本中選舉新 Leader,核心邏輯如下:

  • 候選集:僅 ISR(In-Sync Replicas) 中的副本有資格(與 Leader 保持同步的副本);

  • 選舉規則:ISR 列表中按優先級排序(如副本列表 [146,144,145] 中優先選擇 146);

  • 極端情況:若 ISR 為空,可開啟 unclean.leader.election.enable 允許 OSR(落后的副本)參選,但可能導致數據丟失。

四、數據同步與故障處理:如何保證數據一致性?

1. 核心概念:LEO 與 HW
  • LEO(Log End Offset):每個副本中下一條待寫入消息的 Offset(即當前最大 Offset + 1);

  • HW(High Watermark):ISR 中所有副本的最小 LEO,消費者只能消費 HW 之前的消息(確保數據已同步到多數副本)。
    在這里插入圖片描述

2. 同步流程:Follower 如何追平 Leader?
  1. Follower 向 Leader 發送拉取請求(fetch);

  2. Leader 響應數據,Follower 寫入消息并更新自身 LEO;

  3. Leader 收集所有 ISR 副本的 LEO,更新全局 HW。

3. 故障處理機制
  • Follower 故障

    故障時被踢出 ISR,恢復后先截斷 HW 之后的消息(避免臟數據),重新同步追上 Leader 后,重新加入 ISR。

  • Leader 故障

    從 ISR 中選舉新 Leader,其他 Follower 截斷 HW 之后的消息,向新 Leader 同步數據,保證副本一致性。

總結

Kafka Broker 通過分區與副本實現擴展與可靠性,通過Segment 與稀疏索引高效管理存儲,通過Controller 與 ISR 選舉保障高可用,通過LEO 與 HW 機制確保數據同步一致性。這些設計共同支撐了 Kafka 高吞吐、低延遲、高容錯的核心能力,使其成為分布式系統中消息傳遞的首選方案。

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

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

相關文章

RTTR反射機制示例

1. Person類型頭文件 #ifndef PERSON_H …

計數組合學7.21(有界部分大小的平面分拆)

7.21 有界部分大小的平面分拆 本節的主要目標是在 q1q 1q1 的情況下細化定理 7.20.1,通過限制平面分拆 π∈P(r,c)\pi \in P(r, c)π∈P(r,c) 的最大部分的大小。例如,考慮特殊情況 r1r 1r1,此時 π\piπ 只是一個不超過 ccc 個部分的普通分…

Product Hunt 每日熱榜 | 2025-08-26

1. Trace 標語:人類與人工智能的工作流程自動化 👾 介紹:一個工作流程自動化平臺,將任務分配給合適的處理者——無論是人類還是人工智能。通過連接像Slack、Jira和Notion這樣的工具,Trace能夠拆解現有工作流程&#…

llama.cpp reranking源碼分析

大模型時代,reranker一直是提高RAG有效性的重要工具。相對于初篩階段向量檢索,精排階段的reranker需要query和每個候選document做相關計算。初篩已經將候選documents限制在一個相對較小范圍,但依然要進行大量的相關性計算。 llama.cpp是廣泛…

ruoyi-vue(十二)——定時任務,緩存監控,服務監控以及系統接口

一 定時任務 1、 定時任務使用 1.1 概述 在實際項目開發中Web應用有一類不可缺少的,那就是定時任務。 定時任務的場景可以說非常廣泛,比如某些視頻網站,購買會員后,每天會給會員送成長值,每月會給會員送一些電影券&…

spring如何通過實現BeanPostProcessor接口計算并打印每一個bean的加載耗時

文章目錄實現說明:注意事項:要在Spring中通過BeanPostProcessor接口計算并打印每個Bean的加載耗時,我們可以利用該接口的兩個回調方法記錄Bean初始化前后的時間戳,然后計算時間差。 以下是實現方案: 首先創建一個實現B…

“品種+創新銷售”,恩威醫藥半年度業績翻倍增長

8月25日晚,恩威醫藥發布2025年半年度報告,報告期內,公司實現營業收入4.49億元,同比增長15.73%,歸屬于上市公司股東凈利潤達3834.42萬元,同比增幅113.80%,扣除非經常性損益凈利潤為3527.57萬元&a…

【機器學習】機器學習算法

機器學習1、K-近鄰算法KNN1.1、舉例:電影類型分析1.2、KNN算法流程1.3、Scikit-learn工具1.4、K-近鄰算法API1.5、距離度量1.5.1、歐式距離Euclidean Distance🔥1.5.2、曼哈頓距離Manhattan Distance🔥1.5.3、切比雪夫距離Chebyshev Distance…

python-批量安裝庫

要將當前環境中已安裝的Python庫列表導出為一個可重用的格式(通常為requirements.txt),以便在另一個環境中再現這些庫的安裝,可以使用pip工具提供的功能。以下是具體步驟:### 使用pip freeze1. **打開命令提示符或終端…

創龍3576ububuntu系統設置靜態IP方法

創龍3576ububuntu系統設置靜態IP方法,執行命令進入"/etc/systemd/network/"目錄,請根據實際網絡環境,下面演示修改 eth0.network 網口靜態ip為192.168.1337.200執行:vim /etc/systemd/network/eth0.network 增加一句&am…

MySQL - 視圖,事務和索引

目錄一、視圖1. 問題2. 視圖是什么3. 定義視圖4. 查看視圖5. 使用視圖6. 刪除視圖7. 視圖的作用二、事務1. 定義2. 事務命令1)回滾2)提交3)臟寫、臟讀、不可重復讀和幻讀三、索引1. 定義2. 索引是什么3. 索引目的4. 索引原理5. 索引的使用6. …

車載鐵框矯平機:把“鈑金診所”開到工地上

——一次從原子層面開始的平整之旅一、先想一想:鐵框為什么“脾氣大” 鋼板在軋制、切割、焊接、吊裝、甚至太陽暴曬時,內部晶粒被拉得七扭八歪,像揉皺的紙。宏觀上,我們就看到“翹、拱、扭”。矯平,實質上是給金屬做一…

不安全的服務器,不支持 FTP over TLS

當服務器不支持 FTP over TLS(也稱為 FTPS)時,意味著它僅支持未加密的 FTP 連接。這種情況存在顯著的安全風險,因為:數據傳輸不加密:用戶名、密碼以及傳輸的文件內容都會以明文形式在網絡中傳輸&#xff0c…

本地緩存與 Redis 緩存的區別與實際應用

緩存是提升系統性能、降低數據庫壓力的重要手段。Java 開發中常用的緩存方案包括 ?本地緩存(如 Caffeine、Guava Cache)?? 和 ?分布式緩存(如 Redis)?。這兩者在設計目標、使用場景、性能特點等方面有顯著差異,合…

從“0”開始學JAVA——第十一節 I/O流

在Java編程中&#xff0c;文件操作和輸入輸出(IO)處理是必不可少的部分。本文將深入探討Java IO包中的文件流操作&#xff0c;包括基礎概念、分類、常用類以及實際應用場景。1. File類File類是Java IO操作的基礎&#xff0c;它實現了Serializable和Comparable<File>接口。…

【數據價值化】數據資產入表指南:核心準則與實操路徑

隨著數據要素市場的蓬勃發展&#xff0c;數據資產的商業價值愈發凸顯。然而&#xff0c;如何讓數據資產合規、合理地進入企業財務報表&#xff0c;成為眾多企業急需解決的難題。本文基于《企業會計準則》的相關規定&#xff0c;為您系統梳理數據資產入表的核心準則要點與實操路…

基于 MediaPipe + Three.js 的實時姿態可視化前端

這是一套前端實時姿態捕獲與 3D 可視化的 DEMO&#xff0c;特點是啟動快、UI 現代、渲染穩定&#xff0c;同時對設備性能與網絡情況做了多處優化。 預覽地址 技術棧與核心依賴 框架與工程&#xff1a;Vite React TypeScript實時姿態識別&#xff1a;MediaPipe Tasks Vision&…

【分布式技術】Kafka 數據積壓全面解析:原因、診斷與解決方案

Kafka 數據積壓全面解析&#xff1a;原因、診斷與解決方案Kafka 數據積壓深度解析與解決方案全景指南一、數據積壓核心原因矩陣二、生產者側問題深度解析1. 突發流量洪峰2. 大消息阻塞管道三、消費者側問題深度解析1. 消費能力不足2. 消費邏輯阻塞四、Broker集群問題深度解析1.…

企業云辦公安全指南:如何構建高效無憂的云辦公環境?

2025年&#xff0c;全球化協作與混合辦公已成為企業運營的常態。越來越多的企業將業務遷移至云端&#xff0c;云辦公在提升靈活性與效率的同時&#xff0c;也帶來了新的安全挑戰——數據泄露、內部威脅、網絡攻擊等風險無處不在&#xff0c;每一個環節都可能成為企業核心資產的…

Thingsboard 租戶管理員權限,增加租戶普通用戶權限

在 ThingsBoard CE&#xff08;社區版&#xff09;中&#xff0c;租戶管理員擁有對規則鏈、客戶、資產、設備、儀表板等資源的全面管理權限。如果你想為租戶創建一個普通用戶&#xff0c;并限制其不能操作規則鏈、高級功能、安全設置等&#xff0c;可以通過以下步驟實現&#x…