Kafka深度解析與原理剖析

文章目錄

  • 一、Kafka核心架構原理
        • 1. **分布式協調與選舉**
        • 2. **ISR、OSR與HW機制**
        • 3. **高性能存儲設計**
        • 4. **刷盤機制 (Flush)**
        • 5. **消息壓縮算法**
  • 二、高可用與消息可靠性保障
        • 1. **數據高可用策略**
        • 2. **消息丟失場景與規避**
        • 3. **順序消費保證**
  • 三、Kafka高頻面試題精析
        • 1. **HW截斷機制是什么?**
        • 2. **Kafka為什么快?**
        • 3. **如何避免重復消費?**
        • 4. **Rebalance觸發的條件?**
        • 5. **Kafka如何實現高吞吐?**
  • 四、新一代架構:Kafka KRaft(HMA)
  • 物理實體與邏輯概念
      • **物理實體(Physical Entities)**
      • **邏輯概念(Logical Abstractions)**
      • **混合型概念(物理與邏輯的橋梁)**
      • **虛實關系圖解**
      • **關鍵結論**

一、Kafka核心架構原理

1. 分布式協調與選舉
  • Controller選舉:Kafka集群中首個在ZooKeeper創建/controller節點的Broker成為Controller(或使用KRaft協議去ZK化)
  • Partition Leader選舉:Controller監控ISR變化,優先從ISR列表中選舉新Leader(默認unclean.leader.election.enable=false確保數據一致性)
2. ISR、OSR與HW機制
  • ISR (In-Sync Replicas):與Leader保持同步的副本集合(包含Leader自身)
  • OSR (Out-of-Sync Replicas):滯后超過replica.lag.time.max.ms的副本
  • HW (High Watermark):所有ISR副本均已復制的最大偏移量,消費者可見的數據分界點
  • LEO (Log End Offset):當前副本最新消息的偏移量

關鍵公式HW = min(Leader_LEO, Follower1_LEO, Follower2_LEO, ...)

3. 高性能存儲設計
  • Segment分片存儲
    • 每個Partition拆分為多個Segment(默認1GB)
    • 文件命名基于基準偏移量(如00000000000036876912.log
    • 包含.log(數據)、.index(稀疏索引)、.timeindex(時間索引)
  • 內存映射優化:通過FileChannel.map()實現零拷貝讀取
4. 刷盤機制 (Flush)
  • Page Cache優先:消息先寫入OS頁緩存,由操作系統異步刷盤
  • 同步刷盤策略
    • flush.messages:累計n條消息強制刷盤
    • flush.ms:間隔n毫秒強制刷盤
  • 權衡建議:通常采用異步刷盤(log.flush.interval.messages=10000)平衡性能與可靠性
5. 消息壓縮算法
算法壓縮比CPU消耗適用場景
gzip最高帶寬敏感場景
snappy中等CPU敏感場景(默認)
lz4中等最低低延遲場景
zstd中等Kafka 2.1+ 平衡選擇

生產者端設置compression.type啟用壓縮,Broker保持壓縮狀態存儲。


二、高可用與消息可靠性保障

1. 數據高可用策略
  • Replica同步流程
    1. Producer發送消息至Leader
    2. Leader持久化消息并更新LEO
    3. Followers從Leader拉取消息(PULL模式)
    4. Follower持久化后返回ACK
    5. Leader更新HW并通知Followers
  • ACK確認機制
    • acks=0:不等待確認(可能丟失數據)
    • acks=1:Leader落盤即確認(默認)
    • acks=all:所有ISR副本落盤確認(最強保障)
2. 消息丟失場景與規避
場景解決方案
Producer端丟失設置acks=all + retries=N
Broker端丟失min.insync.replicas=2
Consumer端丟失關閉自動提交,處理完手動提交
3. 順序消費保證
  • 關鍵條件:單分區內消息天然有序
  • 消費端策略
    • 使用單線程消費分區
    • 對Key做哈希路由,相同Key的消息發往同一分區
    • 避免分區重平衡導致亂序(max.poll.interval.ms調優)

三、Kafka高頻面試題精析

1. HW截斷機制是什么?

當Leader切換時,新Leader會將其HW設置為當前LEO,Follower比較自身HW與Leader的HW,將本地日志截斷到HW位置,確保數據一致。

2. Kafka為什么快?
  • 零拷貝技術(sendfile系統調用)
  • 順序磁盤I/O(Segment追加寫入)
  • 頁緩存(Page Cache)加速讀寫
  • 批量處理(Producer/Broker/Consumer)
3. 如何避免重復消費?
  • 冪等Producer:啟用enable.idempotence=true,自動去重
  • 事務消息:跨會話精確一次語義(EOS)
  • 消費端:保證處理邏輯冪等性(如數據庫唯一鍵)
4. Rebalance觸發的條件?
  • 消費者組新增/退出實例
  • 訂閱Topic分區數變化
  • 消費者超過session.timeout.ms未發送心跳
5. Kafka如何實現高吞吐?

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

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

相關文章

【教學類】20250605立體紙盤(3邊形-22邊形,角度5、10……40,45)

背景需求 在《自助餐》活動中, 【教學類-53-01】20240918自助餐餐盤-CSDN博客文章瀏覽閱讀984次,點贊29次,收藏11次。【教學類-53-01】20240918自助餐餐盤https://blog.csdn.net/reasonsummer/article/details/142340542?spm1011.2415.300…

GC1809:高性能24bit/192kHz音頻接收芯片解析

1. 芯片概述 GC1809 是數字音頻接收芯片,支持IEC60958、S/PDIF、AES3等協議,集成8選1輸入切換、低抖動時鐘恢復和24bit DAC,適用于家庭影院、汽車音響等高保真場景。 核心特性 高精度:24bit分辨率,動態范圍105dB&…

Next.js 中間件鑒權繞過漏洞 CVE-2025-29927

前言:CVE-2025-29927 是一個影響 Next.js 的嚴重漏洞&#xff0c;源于開發者信任了客戶端請求中攜帶的 X-Middleware-Rewrite 頭部字段。攻擊者可以手動構造該頭部&#xff0c;實現繞過中間件邏輯&#xff0c;訪問本應受保護的資源或 API。 影響版本&#xff1a;Next.js < …

第1章 數據分析簡介

第1章 數據分析簡介 1.1 數據分析 當今世界對信息技術依賴日深,每天產生和存儲海量數據,來源于自動檢測系統、傳感器、科學儀器,以及銀行取錢、買東西、寫博客、發微博等日常行為。 數據與信息在形式上不同:數據是無形式可言的字節流,難理解其本質;信息是對數據集處理后…

邊緣計算網關賦能沸石轉輪運行故障智能診斷的配置實例

一、項目背景 在環保行業&#xff0c;隨著國家對大氣污染治理要求的不斷提高&#xff0c;VOCs廢氣處理成為了眾多企業的重要任務。沸石轉輪作為一種高效的VOCs治理設備&#xff0c;被廣泛應用于石油化工、汽車制造、印刷包裝等主流行業。這些行業生產規模大、廢氣排放量多&…

20250602在Ubuntu20.04.6下修改壓縮包的日期和時間

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…

windows無法安裝到這個磁盤,選中的磁盤采用gpt分區儀式

解決辦法&#xff1a; 我才用的是一個網友分享的微軟官方解決辦法&#xff0c;成功了&#xff0c;但是不知道會不會i有什么影響。將所有分區刪掉&#xff0c;這時磁盤變成為分配的空間。我個人是兩塊固態&#xff0c;一塊m.2&#xff0c;一塊sata&#xff1b;所以我直接將500g…

使用Composer創建公共類庫

概述 如果多個項目中存在使用相同類庫、模塊的情況&#xff0c;此時可以考慮將類庫或者模塊單獨抽取出來&#xff0c;形成獨立類庫&#xff0c;通過composer 來進行依賴管理&#xff0c;這樣可以更方便維護&#xff0c;大大提升開發效率。 優勢 可以對特定模塊進行統一維護和…

Ubuntu中TFTP服務器安裝使用

TFTP服務器 在 Ubuntu 下使用 TFTP&#xff08;Trivial File Transfer Protocol&#xff09; 服務&#xff0c;通常用于簡單的文件傳輸&#xff08;如網絡設備固件更新、嵌入式開發等&#xff09;。 1 TFTP服務器安裝 sudo apt-get install tftp-hpa sudo apt-get install…

前端面試總結

1.請做下自我介紹 技術棧 工作經歷 2.挑一個項目詳細講一下 介紹了一個項目的業務&#xff0c;重點講了一個動態表單的實現&#xff0c;從業務、擴展性、可維護性、性能提升 3.場景題&#xff1a;問答怎么做&#xff0c;表單之間關聯&#xff0c;回答不同問題跳轉到不同的下一個…

Python訓練打卡Day38

Dataset和Dataloader類 知識點回顧&#xff1a; Dataset類的__getitem__和__len__方法&#xff08;本質是python的特殊方法&#xff09;Dataloader類minist手寫數據集的了解 在遇到大規模數據集時&#xff0c;顯存常常無法一次性存儲所有數據&#xff0c;所以需要使用分批訓練的…

web3-區塊鏈基礎:從區塊添加機制到哈希加密與默克爾樹結構

區塊鏈基礎&#xff1a;從區塊添加機制到哈希加密與默克爾樹結構 什么是區塊鏈 抽象的回答: 區塊鏈提供了一種讓多個參與方在沒有一個唯一可信方的情況下達成合作 若有可信第三方 > 不需要區塊鏈 [金融系統中常常沒有可信的參與方] 像股票市場&#xff0c;或者一個國家的…

MySQL 索引:為使用 B+樹作為索引數據結構,而非 B樹、哈希表或二叉樹?

在數據庫的世界里&#xff0c;性能是永恒的追求。而索引&#xff0c;作為提升查詢速度的利器&#xff0c;其底層數據結構的選擇至關重要。如果你深入了解過 MySQL&#xff08;尤其是其主流存儲引擎 InnoDB&#xff09;&#xff0c;你會發現它不約而同地選擇了 B樹 作為索引的主…

Kafka broker 寫消息的過程

Producer → Kafka Broker → Replication → Consumer|Partition chosen (by key or round-robin)|Message appended to end of log (commit log)上面的流程是kafka 寫操作的大體流程。 kafka 不會特意保留message 在內存中&#xff0c;而是直接寫入了disk。 那么消費的時候&…

leetcode hot100(兩數之和、字母異位詞分組、最長連續序列)

兩數之和 題目鏈接 參考鏈接&#xff1a; 題目描述&#xff1a; 暴力法 雙重循環查找目標值 class Solution {public int[] twoSum(int[] nums, int target) {int[] res new int[2];for(int i 0 ; i < nums.length ; i){boolean isFind false;for(int j i 1 ; j …

SkyWalking架構深度解析:分布式系統監控的利器

一、SkyWalking概述 SkyWalking是一款開源的APM(應用性能監控)系統&#xff0c;專門為微服務、云原生和容器化架構設計。它由Apache軟件基金會孵化并畢業&#xff0c;已成為分布式系統監控領域的明星項目。 核心特性 ?分布式追蹤?&#xff1a;跨服務調用鏈路的完整追蹤?服務…

Matlab程序設計基礎

matlab程序設計基礎 程序設計函數文件1.函數文件的基本結構2.創建并使用函數文件的示例3.帶多個輸出的函數示例4.包含子函數的函數文件 流程控制1. if 條件語句2. switch 多分支選擇語句3. try-catch 異常處理語句ME與lasterr 4. while 循環語句5. for 循環語句break和continue…

Client-Side Path Traversal 漏洞學習筆記

近年來,隨著Web前端技術的飛速發展,越來越多的數據請求和處理邏輯被轉移到客戶端(瀏覽器)執行。這大大提升了用戶體驗,但也帶來了新的安全威脅。其中,Client-Side Path Traversal(客戶端路徑穿越,CSPT)作為一種新興的漏洞類型,逐漸受到安全研究者和攻擊者的關注。本文…

基于Socketserver+ThreadPoolExecutor+Thread構造的TCP網絡實時通信程序

目錄 介紹&#xff1a; 源代碼&#xff1a; Socketserver-服務端代碼 Socketserver客戶端代碼&#xff1a; 介紹&#xff1a; socketserver是一種傳統的傳輸層網絡編程接口&#xff0c;相比WebSocket這種應用層的協議來說&#xff0c;socketserver比較底層&#xff0c;soc…

【無標題】平面圖四色問題P類歸屬的嚴格論證——基于拓撲收縮與動態調色算法框架

平面圖四色問題P類歸屬的嚴格論證——基于拓撲收縮與動態調色算法框架 --- #### **核心定理** 任意平面圖 \(G (V, E)\) 的四色著色問題可在多項式時間 \(O(|V|^2)\) 內求解&#xff0c;且算法正確性由以下三重保證&#xff1a; 1. **拓撲不變性**&#xff08;Kuratowsk…