写点什么

Kafka 4.0 采用 KRaft 模式简化架构

  • 2025-04-17
    北京
  • 本文字数:1178 字

    阅读完需:约 4 分钟

Kafka 4.0 采用 KRaft 模式简化架构

Apache Kafka 4.0 的发布是一个重要的里程碑,本次大版本更新引入了大量的新功能和改进,其中最引人注目的是 KRaft 模式下的默认操作,根据 Confluent 的文档,它消除了对 Apache ZooKeeper 的依赖。


十多年来,ZooKeeper 一直是 Kafka 的支柱,社区感谢了它的贡献。然而,Kafka 4.0 默认采用 KRaft,无需再单独维护 ZooKeeper 组件,简化了部署和管理。



图片来源:Confluent 文档)


AWS 社区建设者 Lalit Moharana 在 LinkedIn 上发帖:


随着 Apache Kafka 在即将发布的 Kafka 4.0 中采用 KRaft,ZooKeeper 将退居二线,这标志着这段长达 14 年的合作关系即将结束。这一转变简化了 Kafka 的架构,抛弃了独立的 ZooKeeper 系统,提高了可扩展性,并为自给自足的未来铺平了道路 —— 这一切都要归功于 KRaft 的 Raft 协议。


此外:


为什么要改变?ZooKeeper 的开销和限制(10 万多个分区)跟不上 Kafka 的增长。还有:KRaft 的优势:一个系统,数以百万计的分区,更快的恢复 —— Kafka 已经准备好翱翔蓝天!


除了架构上的转变,Kafka 4.0 还正式引入了下一代消费者组协议 KIP-848 。这一新协议旨在大幅提高再平衡性能,减少消费者组的停机时间和延迟,尤其是在大规模环境中。通过最大限度地减少“停止世界(stop-the-world)”的再平衡,Kafka 旨在提供更稳定、响应更快的数据流体验。在服务器端,新协议默认启用,消费者端则需要通过设置 group.protocol=consumer 进行选用。


在 Hacker News 上的一个讨论 中,一位回复者评论道:


从 SNS/SQS 切换到 Kafka 后,我立即注意到了一件事,那就是它的速度。消息几乎可以立即发送 / 接收。


此外,Kafka 4.0 还提供了 Queues for Kafka(KIP-932)的早期试用。该功能引入了“共享组(share group)”的概念,可以使用常规的 Kafka 主题实现协同消费,从而让 Kafka 可以有效地支持传统的队列语义。虽然不是直接添加“队列”数据结构,但这一增强功能提高了 Kafka 的多功能性,使其适用于更广泛的消息传递用例,特别是那些需要类似于持久共享订阅的点对点消息传递模式的。


在 LinkedIn 上的一篇文章中,IBM 人工智能与数据工程负责人 Govindan Gopalan 总结道:


早期队列支持(KIP-932)引入了点对点消息传递,将 Kafka 的用例扩展到了传统的发布 - 订阅工作流之外。


这一大版本标志着 Kafka 向平台现代化迈出了重要的一步。作为演进的一部分,Kafka 4.0 删除了已废弃 12 个月以上的 API。此外,它还更新了最低 Java 要求,Kafka Clients 和 Kafka Streams 现在需要 Java 11,而 Kafka Brokers、Connect 和 Tools 则需要 Java 17。这一举措旨在鼓励采用较新的 Java 特性,并使 Kafka 与当前其他的技术栈保持一致。该版本还更新了支持的最低客户端和代理版本(KIP-896),并为支持的升级路径定义了新的基线要求,详见 KIP-1124。


原文链接:

https://www.infoq.com/news/2025/04/kafka-4-kraft-architecture/

2025-04-17 08:0012129

评论

发布
暂无评论

我的编程之路 -5(停滞)

顿晓

网络编程 操作系统 编程之路 停滞 三年

云直播平台的选型与使用

音视频专家-李超

我是如何拿下PMP认证和系统架构设计师考试的?

Nick

prometheus中honor_labels配置项的源码分析

陈思敏捷

Prometheus Go 语言

《零基础学 Java》 FAQ 之 11-为什么构造方法中调用重载的构造方法必须得是在第一行

臧萌

《零基础学 Java》 FAQ 之 12-理解引用

臧萌

Java

RocketMQ - 什么是RocketMQ

Java收录阁

RocketMQ

JUC整理笔记一之细说Unsafe

JFound

Java

Mysql增量更新-ON DUPLICATE KEY UPDATE

BerryMew

MySQL 增量更新 ON DUPLICATE KEY UPDATE

工作=投资=创业?

二鱼先生

个人成长 工作思路 工作方式 创业心态 创业者

其实你就是我羡慕的别人

小天同学

个人成长 感悟 日常思考

区块链2.0--以太坊概述

皮卡丘的猫

new() 和 make的区别

陈思敏捷

源码 源码分析 Go 语言

Go: Trace包探秘

陈思敏捷

原理 Go 语言

Go: 应该使用指针还是结构体副本?

陈思敏捷

struct 原理 pointer Go 语言

你是个伪工作者么?

池建强

个人成长 伪工作者

Java环境搭建

编号94530

Java java8 Java环境 环境安装 jdk安装

Go: g0, 特殊的goroutine

陈思敏捷

原理 Go 语言

利与弊-传统框架要不要部署在Serverless架构上

刘宇

Serverless Web

2020 年 5 月 23 日 Java 集合专题

瑞克与莫迪

Java

除了直接看余额,谁更有钱还能怎么比(一)

石君

零知识证明 多方计算 同态加密

谈谈控制感(8):元控制感

史方远

职场 心理 成长

python实现·十大排序算法之插入排序(Insertion Sort)

南风以南

Python 排序算法 插入排序

看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了

苹果看辽宁体育

https

圆圈正义 - 读后感

石云升

读书笔记 法律 公平 现实

k8s上运行我们的springboot服务之——cloud gateway

柠檬

k8s Spring Cloud

python实现·十大排序算法之快速排序(Quick Sort)

南风以南

Python 排序算法 快速排序

Tekton 的工作原理

张晓辉

Kubernetes cicd 云原生

《零基础学 Java》 FAQ 之 10-Scanner里nextInt的小坑

臧萌

Java

Flask-SQLAlchemy 多表对单模型

Leetao

Python flask 编程语言 flask-sqlalchemy

游戏夜读 | 怎么让游戏跑起来?

game1night

Kafka 4.0 采用 KRaft 模式简化架构_架构_Steef-Jan Wiggers_InfoQ精选文章