Kafka 4.0 發布:KRaft 替代 Zookeeper、新一代重平衡協議、點對點消息模型、移除舊協議 API

KRaft 全面替代 ZooKeeper

Apache Kafka 4.0 是一個重要的里程碑,標志著第一個完全無需 Apache ZooKeeper? 運行的主要版本。

通過默認運行在 KRaft 模式下,Kafka 簡化了部署和管理,消除了維護單獨 ZooKeeper 集群的復雜性。

這一變化顯著降低了運營開銷,增強了可擴展性,并簡化了管理任務。

舊架構痛點回顧

在 Kafka 3.x 及更早版本中,ZooKeeper(ZK)是元數據管理的核心組件,負責 Broker 注冊、Topic 分區分配、控制器選舉等關鍵任務,如圖所示。

圖片

然而,這種設計存在顯著問題:

  • 運維復雜度高:需獨立維護 ZK 集群,占用額外資源且增加故障點。

  • 性能瓶頸明顯:元數據操作依賴 ZK 的原子廣播協議(ZAB),大規模集群(如萬級分區)下元數據同步延遲可達秒級。

  • 擴展性受限:ZK 的寫性能隨節點數增加而下降,限制 Kafka 集群規模。

KRaft 模式的技術實現

Apache Kafka Raft(KRaft)是在 KIP-500 中引入的共識協議,用于移除 Apache Kafka 對 ZooKeeper 進行元數據管理的依賴。這通過將元數據管理的責任集中在 Kafka 本身,而不是在兩個不同的系統(ZooKeeper 和 Kafka)之間分割,從而大大簡化了 Kafka 的架構。

KRaft 模式利用 Kafka 中的新法定多數控制器服務,取代了之前的控制器,并使用基于事件的 Raft 共識協議的變體。

圖片

Kafka 4.0 默認啟用KRaft 模式(Kafka Raft),完全摒棄 ZK 依賴。其核心原理如下:

  1. 元數據自管理:基于 Raft 共識算法,將元數據存儲于內置的__cluster_metadata主題中,由 Controller 節點(通過選舉產生)統一管理。

  2. 日志復制機制:所有 Broker 作為 Raft 協議的 Follower,實時復制 Controller 的元數據日志,確保強一致性。

  3. 快照與恢復:定期生成元數據快照,避免日志無限增長,故障恢復時間從 ZK 時代的分鐘級優化至秒級。

圖片

我們可以看出 KRaft 替換 ZK,并不是元數據存儲重新造輪子,而核心是集群協調機制的演進。

整個通信協調機制本質上是事件驅動模型,也就是 Metadata as an Event Log,Leader 通過 KRaft 生產權威的事件,Follower 和 Broker 通過監聽 KRaft 來獲得這些事件,并且順序處理事件,達到集群狀態和期望的最終一致。

新一代消費者重平衡協議

傳統消費者組采用Eager Rebalance 協議,存在兩大瓶頸:

  1. 全局同步屏障(Stop-the-World):任何成員變更(如擴容、故障)都會觸發全組暫停,導致分鐘級延遲。

  2. 擴展性差:消費者數量受限于分區數,萬級消費者組重平衡耗時高達數分鐘。

Kafka 4.0 引入增量式重平衡協議(KIP-848),核心改進包括:

  1. 協調邏輯轉移:由 Broker 端的GroupCoordinator統一調度,消費者僅需上報狀態,無需全局同步。

  2. 增量分配:僅調整受影響的分區,未變更的分區可繼續消費。

  3. 容錯優化:局部故障僅觸發局部重平衡,避免全組停機。

性能對比與實測數據
指標舊協議(Eager)新協議(Incremental)
重平衡延遲(萬級組)60 秒<1 秒
資源消耗(CPU)降低 70%
擴展上限千級消費者十萬級消費者

Kafka 4.0 引入了一種強大的新消費者組協議,旨在顯著提高重新平衡性能。

這種優化顯著減少了停機時間和延遲,增強了消費者組的可靠性和響應性,尤其是在大規模部署中。

點對點消息模型與共享組

傳統上,Kafka 主要采用發布-訂閱模式,消費者組模式下,分區需與消費者一一綁定,如下圖所示。

圖片

無法實現多消費者協同處理同一分區消息,消費者數量不能超過分區數量——最多為一對一。

如下圖所示,Consumer 5 無法處理 Topic 消息。

圖片

而在某些特定場景下,如點對點的消息傳遞、任務分配等,傳統的隊列語義更具優勢。

Kafka 4.0 通過引入“隊列”功能,共享組(Share Group)允許多消費者同時處理同一分區消息,實現點對點消費模式

圖片

特性傳統消費者組共享組
并行消費分區數=消費者數消費者數>分區數
消息確認偏移量提交逐條 ACK/NACK
投遞語義At-Least-OnceExactly-Once(可選)

主要特點:

  • 支持傳統隊列場景:適用于需要保證消息嚴格順序且僅由一個消費者處理的場景。

  • 提升資源利用率:共享組機制使得多個消費者能夠動態地共享分區資源,提高了系統資源的利用率和整體吞吐量。

  • 簡化架構設計:開發者無需在 Kafka 與其他專門的隊列系統之間進行復雜的集成和數據遷移。

共享組(Share Group)機制

Kafka 4.0 通過共享組實現隊列語義,關鍵技術包括:

  1. 多消費者協同消費:同一分區的消息可由多個消費者并行處理,突破分區數限制。

  2. 記錄級鎖機制:每條消息被消費時加鎖(TTL 控制),防止重復處理。

  3. ACK/NACK 語義:支持逐條確認(Exactly-Once)或重試(At-Least-Once)。

移除舊協議 API 版本,提升系統性能

Kafka 一直以來都致力于兼容各個版本的協議 API,但隨著時間的推移,維護大量舊版本的協議 API 帶來了許多不必要的復雜性和成本。

在 Kafka 4.0 中,舊版本的協議 API 被徹底移除,系統基準協議直接提升至 Kafka 2.1 版本。

改進點:

  • 簡化代碼:去除了歷史包袱,簡化了代碼結構,統一KafkaProducerKafkaConsumer接口,減少冗余配置項,減少了測試難度。

  • 提高性能:去除了對舊協議 API 的支持,使得系統性能得到了顯著提升。廢棄 Kafka 2.1 之前的所有 API(如MessageFormatter v0)

值得注意的是,在 Kafka 4.0 中,Kafka 客戶端和 Kafka Streams 需要 Java 11,而 Kafka Brokers,Connect 和工具現在需要 Java 17。

其他改進

Kafka 4.0 的其他新變化:

  1. 動態配置優化:

    1. 自動線程調整num.io.threads根據 CPU 核數動態分配,提升資源利用率。

    2. 時間窗口偏移量:支持從特定時間點(如 24 小時前)開始消費,替代固定偏移量。

  2. 安全性增強:OAuth 2.0 集成,支持基于 Token 的鑒權,替代 SASL/PLAIN;審計日志:記錄所有元數據操作,滿足金融級合規要求。

總結

Kafka 4.0 通過徹底擺脫 ZooKeeper,全面采用 KRaft 模式,不僅簡化了部署和維護工作,還顯著提升了系統的性能和穩定性。

同時,新一代消費者重平衡協議和隊列功能的引入,為開發者提供了更為靈活和高效的消息處理模式。

這些架構革新使得 Kafka 4.0 成為了一個更加獨立、高效和易用的分布式消息系統,為未來的發展奠定了堅實的基礎。

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

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

相關文章

SFT實驗報告

大模型微調實驗報告* 實驗目標 梳理大模型微調方法&#xff0c;評估各種基座和微調方法的實驗效果。 基礎模型 \1.Llama \2.Qwen \3.Chatglm4 \4. 微調策略 LoRA系列 低秩適配&#xff08;LoRA&#xff09;的核心思想是凍結原始參數&#xff0c;通過低秩分解引入可訓…

LLM - R1 強化學習 DRPO 策略優化 DAPO 與 Dr. GRPO 算法 教程

歡迎關注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/146533892 在強化學習算法中&#xff0c;DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)&#xff0c;通過解耦裁剪和動態采樣策…

美攝科技智能汽車視頻延遲攝影解決方案,開啟智能出行新視界

在智能汽車時代&#xff0c;車載影像技術正以前所未有的速度發展&#xff0c;成為提升駕乘體驗和滿足用戶多樣化需求的關鍵因素。美攝科技憑借其卓越的技術實力和創新精神&#xff0c;推出了智能汽車視頻延遲攝影解決方案&#xff0c;為智能汽車行業帶來了一場視覺盛宴。 一、…

[250325] Claude AI 現已支持網絡搜索功能!| ReactOS 0.4.15 發布!

目錄 Claude AI 現已支持網絡搜索功能&#xff01;ReactOS 0.4.15 發布&#xff01; Claude AI 現已支持網絡搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 現在可以進行網絡搜索&#xff0c;為用戶提供更及時、更相關的回復。這項新…

代碼規范之Variable Names變量名

代碼規范之Variable Names變量名 golang中 官方文檔&#xff1a;https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基礎上進行了增強&#xff0c;在 MyBatis 的基礎上只做增強不做改變&#xff0c;為簡化開發、提高效率而生。本文章只做簡單的使用介紹&#xff0c;更加詳細的內容大家可以參考官網。 下面是mybatis_plus 官網地址&#xff1a; mybatis_plu…

深圳問頂安全科技有限公司asktopsec是做什么的?

深圳問頂安全科技有限公司&#xff0c;是一家專業的AI與應用安全公司。 全球領先的AI、Android、IOS應用安全解決方案提供商&#xff0c;官網&#xff1a;https://asktopsec.com 問頂安全主要為企業提供AI和應用安全服務 移動應用安全檢測、移動應用安全加固、AI智能體安全、AI…

鴻蒙OS 5 架構設計探秘:從分層設計到多端部署

文章目錄 鴻蒙OS架構設計探秘&#xff1a;從分層設計到多端部署一、鴻蒙的分層架構設計二、模塊化設計的精髓三、智慧分發設計&#xff1a;資源的動態調度四、一次開發&#xff0c;多端部署的實踐總結與思考 鴻蒙OS架構設計探秘&#xff1a;從分層設計到多端部署 最近兩年來&a…

idea 沒有 add framework support(添加框架支持)選項

在 IntelliJ IDEA 2023 中&#xff0c;若需通過設置手動添加 “添加框架支持” 菜單項&#xff0c;可按照以下步驟操作&#xff1a; 手動添加 “添加框架支持” 菜單項 打開設置 點擊頂部菜單欄的 File&#xff08;文件&#xff09; -> Settings&#xff08;設置&#xff09…

計算機網絡--傳輸層(2)

傳輸層核心機制深度解析 一、可靠傳輸實現機制 1. 校驗和機制 技術原理&#xff1a; 使用16位二進制反碼求和算法&#xff0c;計算范圍包括TCP偽首部&#xff08;12字節&#xff09;、TCP首部&#xff08;20字節&#xff09;和數據部分接收端重新計算校驗和&#xff0c;若與…

再探帶權并查集

典型例題 Acwing 權值 故名思義&#xff0c;在帶權并查集中&#xff0c;我們需要讓每個節點攜帶一個**“權值”**。 那么這個權值應該是什么呢&#xff1f;其實答案就在并查集當中。 由于在并查集當中我們可以在 O ( 1 ) O(1) O(1) 時間內找到一個節點的根節點&#xff0c;那…

Vala編成語言教程-構造函數和析構函數

構造函數 Vala支持兩種略有不同的構造方案&#xff1a;我們將重點討論Java/C#風格的構造方案&#xff0c;另一種是GObject風格的構造方案。 Vala不支持構造函數重載的原因與方法重載不被允許的原因相同&#xff0c;這意味著一個類不能有多個同名構造函數。但這并不構成問題&…

本地部署Stable Diffusion生成爆火的AI圖片

直接上代碼 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…

python爬蟲WASM

WASM 一.WASM簡介 1.1 WASM定義 ? WebAssembly(簡稱wasm)是一個虛擬指令集體系架構(virtual ISA),整體架構包括核心的ISA定義、二進制編碼、程序語義的定義與執行,以及面向不同的嵌入環境(如Web)的應用編程接口(WebAssembly API)。是一種運行在現代網絡瀏覽器中的…

Docker鏡像遷移方案

Docker鏡像遷移方案 文章目錄 Docker鏡像遷移方案一&#xff1a;背景二&#xff1a;操作方式三&#xff1a;異常原因參考&#xff1a; 一&#xff1a;背景 比如機器上已經有先有的容器&#xff0c;但是docker pull的時候是失敗的二&#xff1a;操作方式 1、停止正在運行的容器…

關于跨域問題(本地前端訪問服務器端接口跨域出錯)

問題來源&#xff1a; 當服務器封裝了接口但是本地電腦端前端訪問出現跨域問題。 解決方案&#xff1b; 1、使用ipconfig 查看本地電腦的ip地址 ipconfig 2、在后端接口處配置如下代碼 allow_origins["http://本地ip地址:3001", # 局域網內其他設備訪問的本地…

邊緣計算 vs. 云計算,誰才是工業物聯網的未來?

前言 在物聯網&#xff08;IoT&#xff09;飛速發展的今天&#xff0c;邊緣計算正在徹底改變數據的處理、存儲和分析方式。傳統的IoT設備數據通常需要發送到云端進行處理&#xff0c;但隨著設備數量的激增&#xff0c;這種模式在延遲、帶寬和安全性方面暴露出諸多局限。邊緣計…

dell 臺式機 電腦 紐扣電池 如何取下?

dell 臺式機 電腦 紐扣電池 如何取下&#xff1f; 戴爾-optiplex-3060-塔式機-服務手冊

NFC 智能門鎖全棧解決方案:移動端、服務器、Web 管理平臺

目錄 一、系統整體架構 二、移動端 APP 開發 2.1 開發環境與基礎準備 2.2 主要功能模塊 2.3 示例代碼&#xff08;Android/Kotlin 簡化示例&#xff09; 三、后臺服務開發 3.1 環境準備 3.2 主要功能 3.3 示例代碼&#xff08;Node.js Express 簡化示例&#xff09; …

DDR4、DDR5、固態硬盤(SSD)和機械硬盤(HDD)在連續讀/寫、隨機讀/寫性能的對比分析

以下是關于DDR4、DDR5、固態硬盤&#xff08;SSD&#xff09;和機械硬盤&#xff08;HDD&#xff09;在連續讀/寫、隨機讀/寫性能的對比分析&#xff0c;結合技術特性與應用場景的總結&#xff1a; 一、性能對比表格 存儲類型連續讀&#xff08;MB/s&#xff09;連續寫&#x…