目前 Kafka 版本计划在官方 wiki 上是从 0.10.1.0 开始,实际上在此之前还有 0.7、0.8、0.9 三个版本分支,由于这三个版本从功能完备性上有所欠缺,且目前应该没有多少人使用,因此官方也就没有列出。这里以《kafka 核心技术与实战》中对于历史版本的记录来补充介绍一下:
图片img
从上面的表中看到,kafka 目前是 7 个大版本,但是实际上还有 2.x 和 3.x 系列两个版本,下面这张图是 kafka 不同版本的演进情况
图片kafka version
在 1.x 版本之前,kafka 采用的是 4 位版本号, 1.x 版本之后采用的是 3 位版本号;比如
图片前面的版本号是编译 Kafka 源代码的 Scala 编译器版本,如 2.11、2.12;后面的才是 kafka 的版本号,如 2.2.1
不过从历史版本的定义来看,即使是 4 位的版本号,真正作用的还是后三位;像 0.11.0.0 这样的版本虽然有 4 位版本号,但其实它的大版本是 0.11,而不是开头的 0;如果这样来看, Kafka 版本号从来都是由 3 个部分构成,即“大版本号 - 小版本号 - Patch 号”。这种视角可以统一所有的 Kafka 版本命名。
Kafka 3.x 系列比较大的变化是对于 KRaft 的改进,Kafka 社区提出了 KRaft 协议的概念实际上从 2.8.0 就开始了,KRaft 的不断改进意味着 Apache Kafka 的内置共识机制将可以在生产环境逐步取代 Apache ZooKeeper;此外 3.x 中,也包括了 Kafka Connect 任务重启增强、KStreams 基于时间戳同步的改进以及 MirrorMaker2 更灵活的配置选项等新特性。
在最新的 3.8.0 版本中,kafka 开始对 GraalVM 支持,期望利用 AOT 编译生成 Native Image 使得 Java 拥有更快的启动速度和更低的内存消耗,从而更好的适应云原生时代;3.8.0 中比较重要的另一个更新是下一代 Rebalance 协议的 Preview,期待这个鼎鼎大名的 Rebalance 能够从官方角度提供出更好的解决方案。