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 分钟前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow20 分钟前
CountDownLatch in Java
java
LucianaiB1 小时前
我用豆包工作 Seed-2.1-pro,复刻了 QQ 时代爆红的魔术图片
后端
码事漫谈1 小时前
智谱 ZCode 静默上传 Git 历史:48 小时信任危机复盘
后端
SL_staff1 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
掘金码甲哥1 小时前
当对话模型遇上向量模型,vllm production stack 又该如何应对?
后端
传奇开心果编程2 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
SL_staff2 小时前
财务系统慎用低代码?从数据模型闭环看合规落地的技术实践
java·低代码·全栈
IT_陈寒2 小时前
Java线程池用错参数,我的服务居然悄悄崩溃了
前端·人工智能·后端
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
IDEA:Command line is too long
java·ide·intellij-idea