Kafka 4.0.0震撼来袭,彻底摒弃Zookeeper

Apache Kafka 4.0.0 版本发布,带来了众多新功能和改进。该版本是第一个完全不依赖 Apache ZooKeeper 运行的主要版本,默认以 KRaft 模式运行,简化了部署和管理。此外,还引入了新的消费者组协议、提供对 Queues for Kafka 的早期访问、更新了 Java 版本要求、移除了一些旧的 API 和功能等。

1、重要特性说明

  • 无 ZooKeeper 运行

    Apache Kafka 4.0 标志着第一个完全没有 Apache ZooKeeper 运行的主要版本。默认以 KRaft 模式运行,简化了部署和管理,降低了运营开销,增强了可扩展性并简化了管理任务。

  • 新消费者组协议

    Kafka 4.0 带来了 KIP-848 的全面可用性,引入了强大的新消费者组协议,显著提高再平衡性能,减少停机时间和延迟,增强了消费者组的可靠性和响应能力。

  • Queues for Kafka

    提供对 Queues for Kafka(KIP-932)的早期访问,使 Kafka 能够直接支持传统的队列语义,扩展了 Kafka 的多功能性。

  • Java 版本要求更新

    Kafka 4.0 中,Kafka Clients 和 Kafka Streams 需要 Java 11,而 Kafka Brokers、Connect 和 Tools 现在需要 Java 17。

  • Kafka Streams 改进

    KIP-1104 允许在 KTable 连接中从键和值中提取外键;KIP-1112 允许自定义处理器包装;KIP-1065 为 ProductionExceptionHandler 添加 "retry" 选项;KIP-1091 改进了 Kafka Streams 运算符指标。

2、使用新特性的注意点

ZooKeeper 依靠自己强一致性的特点,一直在分布式届延续着自己的传奇,很多软件都会选择它作为分布式集群的载体,如之前的4.0之前的Kafka、spark、hadoop、dubbo的注册中心等。但是Kafka在以强大推吐量著称,强依赖强一致性的ZooKeeper,势必带来一定的性能瓶颈。ZooKeeper 增加了系统的复杂性,维护和管理 ZooKeeper 集群需要额外的资源和专业知识。KRaft作为Kafka内部的算法机制直接替代ZooKeeper,使得部署和维护都变得简单了许多。

Raft 协议被用于分布式存储系统中,以确保数据在多个节点间的一致性和可用性。例如,分布式键值存储(如 etcd、Consul)和分布式数据库(如 TiKV)都采用了 Raft 协议。KRaft则是用户Kafka内部的专属协议。

新消费者组协议的核心就是增量式重平衡,不再依赖全局同步屏障,而是由组协调器(GroupCoordinator)驱动。将凭屏障的颗粒度有全局编程局部,细粒度的控制消费者。只有更改的消费者和分区变化时只会触发对应的屏障,其他不受影响。这也明显的提高处理的速度。

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

Kafka 4.0对JDK也有要求,Kafka 客户端和 Kafka Streams 需要 Java 11,Kafka Brokers、Connect工具需要 Java 17。你还在坚持着JDK你发任你发,我用JAVA8的态度么,如果这样,Kafka 4.0的新特性也将无法尝试。

3、小结

各种软件都在拥抱新的变化,不断地兼容新的产品。我们是不是也要去迭代自己的知识库,去学习这些新的东西,要不然就被时代遗弃了。


关注我的公众号:【编程朝花夕拾】,获取首发内容。

相关推荐
源代码•宸4 分钟前
分布式缓存-GO(分布式算法之一致性哈希、缓存对外服务化)
开发语言·经验分享·分布式·后端·算法·缓存·golang
It's now16 分钟前
Spring AI 基础开发流程
java·人工智能·后端·spring
cxh_陈16 分钟前
线程的状态,以及和锁有什么关系
java·线程·线程的状态·线程和锁
计算机毕设VX:Fegn089519 分钟前
计算机毕业设计|基于springboot + vue图书商城系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
R.lin31 分钟前
Java 8日期时间API完全指南
java·开发语言·python
毕设源码-赖学姐37 分钟前
【开题答辩全过程】以 高校教学质量监控平台为例,包含答辩的问题和答案
java·eclipse
timmy-uav43 分钟前
BetaFlight代码解析(22)—任务调度器和系统基础架构
架构·系统架构·无人机·飞控·betaflight
高山上有一只小老虎44 分钟前
翻之矩阵中的行
java·算法
火钳游侠1 小时前
java单行注释,多行注释,文档注释
java·开发语言
code bean1 小时前
【CMake】为什么需要清理 CMake 缓存文件?深入理解 CMake 生成器切换机制
java·spring·缓存