Kafka 3.0.0 发布了:

主要更新如下:

  • The deprecation of support for Java 8 and Scala 2.12
  • Kafka Raft support for snapshots of the metadata topic and other improvements in the self-managed quorum
  • Stronger delivery guarantees for the Kafka producer enabled by default
  • Deprecation of message formats v0 and v1
  • Optimizations in OffsetFetch and FindCoordinator requests
  • More flexible Mirror Maker 2 configuration and deprecation of Mirror Maker 1
  • Ability to restart a connector’s tasks on a single call in Kafka Connect
  • Connector log contexts and connector client overrides are now enabled by default
  • Enhanced semantics for timestamp synchronization in Kafka Streams
  • Revamped public API for Stream’s TaskId
  • Default serde becomes null in Kafka

第一条就是宣布弃用对 Java 8 和 Scala 2.12 的支持!!!

在 Kafka 3.0.0 中,Kafka 项目中的所有组件都已弃用对 Java 8、Scala 2.12 的支持,宣布弃用,但 3.0.0 还能用,这次宣布只是给用户一个调整的时间,到了 Kafka 4.0,Java 8、Scala 2.12 将将正式取消支持。

其实,其他一些中间件也早有停止对 Java 8 的支持,选择 Java 11 作为最低支持版本,但 Kafka,这可能是自 Java 17 发布以来,也就是近半月时间,官宣弃用 Java 8 打响的第一枪。。

Java 8 虽然有点老了,但依然是现在市场上用的最多的版本,虽然有些中间件不再支持 Java 8 了,但实际开发工作并不受影响,Java 8+ 系列教程我也写了一堆了,关注公众号Java技术栈在菜单栏中进行阅读吧。

Kafka 目前支持的 Java 版本如下:

从官网看,Kafka 目前支持两个 LTS 版本( Java 8 和 Java 11

如果启用 TLS,那么 Java 11 的性能将得到显著提升,所以官方也强烈推荐大家使用 Java 11。

Java 11 是比 Java 8 更新一代的长期支持版本,它还包括许多其他的性能改进,比如:G1 垃圾收集器、CRC32C、字符串压缩、Thread-Local 握手机制 等等,另外从安全的角度考虑,建议使用较为新一点的安全版本,防止老版本的安全漏洞。

现在随着 Java 17 的发布及免费,Java 17 还是史上最快的 JDK,相信在不久的时间,Kafka 对于 Java 17 的支持也会安排上。在多个 Java 版本上进行开发、编译和测试,对于 Kafka 团队来说肯定是一笔不小的维护成本,所以,Kafka 还有什么理由继续保留 Java 8 呢?

Java 11/ Java 17 可能是更香的选择!

此外,Kafka 3.0 还改进了 KRaft 共识算法(Raft 的变种)

这个 Kafka 内置的 KRaft 共识机制,是用来取代 Apache ZooKeeper 的,早在很久之前(Kafka 2.8.0) Kafka 就宣布替换 Zookeeper 了:

不过到现在还不是很成熟,目前还不建议用在生产环境,官方也只是建议在开发环境进行试用。

Kafka 一向以性能著称,还要额外维护一个重量级的 Zookeeper 组件,确实也没有必要,所以就自己搞出了 KRaft 机制,让自己变得更轻量,也可以带来更优的性能。

所以,在未来的版本中,Zookeeper 也会消失在 Kafka 的长河里……

总结下,可能大家觉得,很多知识,还没开始学,就要被淘汰了,永远跟不上技术的步伐。。。

是的,很多东西,我们虽然不学,但也要知道,也就是技术的广度,如果现在面试官问你 Kafka 的领导选举机制是怎样的,你还只会说 Zookeeper,而不知道 KRaft 机制的存在,那面试官可能就觉得你对技术的敏锐能力不高了。

所以说,我们不能每天重复着重复 CRUD 搬砖劳动,有时间,闲下来,也要时刻保持对技术的渴望,不但要追求深度,也要追求广度,这样不仅是在职场,还是在面试战场,都能让你游刃有余。

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Kafka 面试题和参考答案都整理好了,在公众号后台回复关键字 “面试” 进行刷题。

最后,觉得我的文章对你用收获的话,动动小手,给个在看、转发,原创不易,栈长需要你的鼓励。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注