王炸!Kafka 4.0 重磅发布,Java 8 和 Zookeeper 彻底被扬弃了,一个时代竣 ...

打印 上一主题 下一主题

主题 2073|帖子 2073|积分 6219

大家好,我是R哥。
Kafka 4.0 终于来了!

这次更新可不只是常规的版本优化,而是一次重大架构调解,尤其是不再支持 Java 8,彻底移除了 Zookeeper,正式启用 KRaft 模式,让 Kafka 变得更加独立、高效。
除了这个重磅更新外,Kafka 4.0 还砍掉了一些历史包袱,还带来几个重磅新功能,这次升级可谓是大刀阔斧,革新不断,让我们一起看看它的主要变化吧。
Kafka 4.0 主要新特性

1、正式移除 Zookeeper

说到 Kafka 4.0,第一个必须说的就是:Zookeeper,彻底移除了,这绝对是 Kafka 4.0 版本中最最最重磅的变化。
来看看旧模型和新模型的区别:

在 Kafka 早期架构中,Zookeeper 一直和 Kafka 深度绑定,负责生存 Kafka 的元数据、节点状态、推举控制器等核心功能。
固然 Zookeeper 也是非常主流的分布式中间件,但对于讲究性能的 Kafka 来说越来越成为了累赘,比如 Kafka 须要额外维护一个 Zookeeper 集群,这就增加了管理和维护本钱,扩展性也受限,影响性能。
所以 Kafka 前几年就弄出来了KRaft 模式,把 Kafka 的元数据从 Zookeeper 搬到了 Kafka 自己管理的内部系统中。这就相称于 Kafka 白手起家,逐步离开 Zookeeper 的控制。
KRaft 是 Raft 的一个分支,但有一些不同,它扩展了 Kafka 现有的复制协议,并增加了一些与 Raft 相关的功能。
Kafka 2.8.0 版本已经对 Zookeeper 做了早期更换:

而这次 Kafka 4.0 正式移除 Zookeeper 的所有功能,KRaft 模式全面接管所有功能
Kafka 4.0 不再支持利用 Zookeeper 模式启动集群,也就是说,从这个版本开始,你就得全面利用 KRaft 模式(Kafka Raft) 来运行 Kafka。
KRaft 带来的长处包罗:

  • 部署更简单,启动更快,本钱更低 。
  • 消除了单独维护 ZooKeeper 集合的复杂性
  • 只需掩护一个组件,单一、更简单的安全模型
  • 低落了运营开销,增强了可扩展性并简化了管理使命。
  • 从自身加载数据,性能比从用 ZK 高数 10 倍
总之,移除 ZK,让 Kafka 更轻、更快、更强、更易维护
升级 4.0 注意事项:

  • Kafka 4.0 利用的是 KRaft 模式,软件和元数据版本必须至少为 3.3.x。
  • 对于 KRaft 模式早于 3.3.x 的版本,建议先升级到 3.9.x,然后再升级到 4.0.x。
2、移除旧协议 API 版本

Kafka 一直以来都死磕着兼容所有协议 API 版本,这么多年已往了,维护这么多旧版本的本钱是越来越高,代码变复杂了,测试也麻烦了,关键是用老版本的人也越来越少,大部分都早换到了支持新协议的客户端。
所以,到了 Kafka 4.0,彻底移除了一些旧协议 API 版本,把协议 API 版本的基准提高到 Kafka 2.1。简单来说就是,仅保留 Kafka 2.1 支持的最新版本及之后推出的新版本。
这样一来,Kafka 4.0 既能摆脱一堆历史包袱,又不会影响太多用户,算是个折中方案。总之,该优化的优化,该淘汰的淘汰,让 Kafka 走得更远、更稳!
升级 4.0 注意事项:

  • 在升级 Kafka brokers 和 Java 客户端之前,应确保为 2.1 或更高版本。
  • 如果不是用的 Kafka 官方的 kafka 客户端,须要自行检查兼容性问题。
3、新一代消费者重平衡协议

Kafka 3.7.0 推出了新一代消费者再平衡协议的早期版本,主要有三个变化:

  • 新的消费者再平衡协议;
  • 全新的组协调器;
  • 全新的消费者线程模型。
新一代消费者重平衡协议,将复杂性从消费者转移到代理内的组协调器,并利用了全新的消费者线程模型
新协议的优化,在简化客户端同时,能显著减少停机时间和延迟,提高了消费者组的稳定性和性能,尤其是在大规模部署中。
在 Kafka 3.7.0 还不建议生产利用了,Kafka 4.0 正式公布告别 stop-the-world 重平衡,全面开放下一代消费者重新平衡协议正式可用
4、Kafka Queues 队列来了

在 Kafka 4.0 版本之前,Kafka 主要采用发布-订阅模式,固然也可以实现点对点的消息通报,但是存在一些局限性。
Kafka 4.0 引入了  "Queues"  队列功能,使 Kafka 可以或许直接支持传统队列语义,旨在更直接和高效地利用点对点消息模式,增强其在点对点消息模式下的能力。
如图所示:

Kafka 队列功能主要解决以下问题:

  • 答应多个消费者从同一分区读取数据;
  • 个人记录确认;
  • 仍然保持生产者和消费者分离;
  • 没有最大队列大小;
  • 消息仍然保留
Kafka 队列是通过共享组(Share Groups)来实现的,共享群组答应多个消费者协作消费同一主题的消息,实现类似传统队列的语义。多个消费者可以共同处理同一分区内的消息,提高了消息处理的并行度和效率。
Kafka 队列现在还是早期特性,不建议生产利用,等背面的版本正式可用吧。
5、其他变化

Kafka 4.0 的其他新变化:

  • 删除了至少 12 个月已弃用的 API,以简化平台并鼓励采用新功能;
  • 完全弃用 Java 8,Kafka 客户端和 Kafka Streams 须要 Java 11,Kafka Brokers、Connect、工具须要 Java 17;毕竟《Java 24 正式发布,超神了。。。》都发布了。
  • 为支持升级路径,定义了新的基准要求;
  • ......
更多可参考官方发布说明。
总结

Kafka 4.0 版本的更新,标志着 Kafka 正式迈入了一个全新的阶段。
从完全弃用 Java 8,再移除 Zookeeper 到全面启用 KRaft,Kafka 变得更轻、更快、更强、更易维护。
还有旧协议版本的清算、新的消费者重平衡协议、队列功能的引入等一系列优化,让 Kafka 进一步提升了可扩展性和性能,同时低落了维护本钱。
不过,升级到 Kafka 4.0 也须要谨慎对待,特别是 Zookeeper 模式已经被完全移除,老版本的用户须要逐步过渡到 KRaft 模式。
同时,部分旧协议 API 也已被砍掉,所以在升级前一定要检查兼容性,确保你的系统不会受到影响。
总之,Kafka 4.0 是一次里程碑式的升级,无论是新的架构调解还是性能优化,都让 Kafka 这个小钢炮又上了一个新的台阶,太强了。
参考链接:
版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿同等投诉侵权,后果自负,并保留追究其法律责任的权利。
更多文章推荐:
1.Spring Boot 3.x 教程,太全了!
2.3,000+ 道 Java面试题及答案整理(最新版)
3.免费获取 IDEA 激活码的 7 种方式(最新版)
4.Java & DeepSeek & AI 学习资料分享
5.步伐员精致简历模板分享
以为不错,别忘了随手点赞+转发哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

杀鸡焉用牛刀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表