Kafka 4.0 发布,很炸裂!

作者 : 码海拾光 本文共2055个字,预计阅读时间需要6分钟 发布时间: 2025-03-24 共43人阅读




Kafka 4.0 发布,很炸裂!

Apache Kafka 4.0 正式发布了,这是一次里程碑式的版本更新。这次更新带来的改进优化非常多,不仅简化了 Kafka 的运维,还显著提升了性能,扩展了应用场景。

Image 1: Image

我这里简单聊聊我觉得最重要的 3 个改动:

  1. KRaft 模式成为默认模式

  2. 消费者重平衡协议升级

  3. 队列功能(早期访问版本)

详细更新介绍可以参考官方文档:https://www.confluent.io/blog/introducing-apache-kafka-4-0/

KRaft 模式成为默认模式

在 Kafka 2.8 之前,Kafka 最被大家诟病的就是其重度依赖于 Zookeeper 做元数据管理和集群的高可用(ZK 模式)。在 Kafka 2.8 之后,引入了基于 Raft 协议的 KRaft 模式(Kafka Raft),不再依赖 Zookeeper,大大简化了 Kafka 的架构,让你可以以一种轻量级的、单进程的方式来使用 Kafka。

Image 2: Image

KRaft 模式在后续的版本中不断完善,直到 Kafka 3.3.1,被正式标记为生产环境可用(Production Ready)。

Image 3: Image

Kafka 4.0 则迈出了更大的一步——彻底移除了对 Zookeeper 的支持,并默认采用 KRaft 模式。

需要注意的是,Kafka 4.0 不再支持以 ZK 模式运行或从 ZK 模式迁移。如果你的 Kafka 仍然使用 ZK 模式,官方建议先升级到过渡版本(如 Kafka 3.9),执行 ZK 迁移后再升级到目标版本。

详细介绍:https://developer.confluent.io/learn/kraft/

消费者重平衡协议升级

全新的消费者重平衡协议正式 GA 了,可以告别“stop-the-world”重新平衡了!这个协议的核心思想最早在 Kafka 2.4 版本 通过KIP-429: Kafka Consumer Incremental Rebalance Protocol 实现。

新协议的核心在于增量式重平衡,不再依赖全局同步屏障,而是由组协调器(GroupCoordinator)驱动,各个消费者独立地与协调器交互,只调整自身相关的分区分配,从而将全局的“停顿”分解成多个局部的、微小的调整。只有需要调整的消费者和分区才会发生变更,未受影响的消费者可以继续正常工作(旧有的再均衡协议依赖于组范围内的同步屏障,所有消费者都需要参与,这会导致明显的“停顿”)。

Image 4: Image

详细介绍:https://cwiki.apache.org/confluence/x/HhD1D

队列功能(早期访问版本)

Kafka 4.0 通过引入共享组 (Share Group) 机制提供了类似队列的功能。不过,它并非真正意义上的队列,而是利用 Kafka 已有的主题(Topic)和分区(Partition)机制,结合新的消费模式和记录确认机制来实现类似队列的行为。

Image 5: Kafka 发布订阅模型

Kafka 发布订阅模型

共享组解决了传统 Kafka 消费者组(Consumer Groups)在某些场景下的局限性,主要体现在:

  • 支持多消费者协同消费:多个消费者可以协同消费同一主题的消息,并可以同时处理同一分区的数据。每个消息在被确认之前,都会被一个时间限制的锁机制保护,确保同一时刻只有一个消费者可以尝试处理。

  • 突破消费者组与分区数量的限制:共享组的消费者数量可以超过主题的分区数量,从而更好地支持高并发消费场景。而消费者组的并行消费能力受限于分区数量,这往往导致用户为了满足峰值负载下的并行消费需求而创建过多的分区,造成资源浪费。

  • 消息的独立确认:支持对每条消息进行独立确认、释放或拒绝,提供更精细的消息处理能力。

  • 消息投递次数记录:系统会记录每条消息的投递次数,方便处理无法处理的消息。

共享组还支持无队列深度限制和基于时间点的恢复能力,极大地扩展了 Kafka 的应用场景。

详细介绍:https://cwiki.apache.org/confluence/display/KAFKA/KIP-932%3A+Queues+for+Kafka

Kafka 常见面试题

关于 Kafka 以及其他常见消息队列的知识点/面试题总结,大家可以参考 JavaGuide( javaguide.cn ) 官方文档中的总结(点击阅读原文直达):

Image 6: Image

Image 7: 图片

这是一个或许对你有用的技术社群:JavaGuide 官方知识星球星球部分面试资料如下

点击下方卡片进入公众号

回复 「PDF」 即可领取原创PDF技术面试手册
回复 「学习路线」 即可获取最新版Java学习路线
回复 「开源」 即可获取优质Java开源项目合集
免费分享无套路,有帮助点个赞就好!





发表回复