关于Kafka的版本号

这个内容实在是太重要了,甚至是你能否用好 Kafka 的关键。

Kafka 流行的几种 Kafka 发行版本质上都内嵌了最核心的 Apache Kafka,也就是社区版 Kafka,那今天我们就来说说 Apache Kafka 版本号的问题。

那么现在你可能会有这样的疑问:我为什么需要关心版本号的问题呢?直接使用最新版本不就好了吗?当然了,这的确是一种有效的选择版本的策略,但我想强调的是这种策略并非在任何场景下都适用。如果你不了解各个版本之间的差异和功能变化,你怎么能够准确地评判某 Kafka 版本是不是满足你的业务需求呢?因此在深入学习 Kafka 之前,花些时间搞明白版本演进,实际上是非常划算的一件事。

Kafka 版本命名

当前 Apache Kafka 已经迭代到 2.6版本。但是很多人对于 Kafka 的版本命名理解存在歧义。比如我们在官网上下载 Kafka 时,会看到这样的版本:

于是有些同学就会纳闷,难道 Kafka 版本号不是 2.11 或 2.12 吗?其实不然,前面的版本号是编译 Kafka 源代码的 Scala 编译器版本。

现在你应该知道了对于 kafka-2.11-2.1.1 的提法,真正的 Kafka 版本号实际上是 2.1.1。前面的 2 表示大版本号,即 Major Version;中间的 1 表示小版本号或次版本号,即 Minor Version;最后的 1 表示修订版本号,也就是 Patch 号。

Kafka 版本演进

Kafka 目前总共演进了 7 个大版本,分别是 0.7、0.8、0.9、0.10、0.11、1.0 和 2.0,其中的小版本和 Patch 版本很多。

  • 0.7 大版本
    • “上古”版本,提供了最基础的消息队列功能,连副本机制都没有,不推荐。
  • 0.8大版本
    • 正式引入了副本机制,至此 Kafka 成为了一个真正意义上完备的分布式高可靠消息队列解决方案。有了副本备份机制,Kafka 就能够比较好地做到消息无丢失。
    • 建议你至少要升级到 0.8.2.2 这个版本,因为该版本中老版本消费者 API 是比较稳定的。另外即使你升到了 0.8.2.2,也不要使用新版本 Producer API,此时它的 Bug 还非常多。
  • 0.9大版本
    • 增加了基础的安全认证 / 权限功能,同时使用 Java 重写了新版本消费者 API,另外还引入了 Kafka Connect 组件用于实现高性能的数据抽取。
    • 新版本 Producer API 在这个版本中算比较稳定了。但不要使用新版本 Consumer API,因为此时很不稳定。
  • 0.10.0.0大版本
    • 里程碑式的大版本,因为该版本引入了 Kafka Streams。从这个版本起,Kafka 正式升级成分布式流处理平台,虽然此时的 Kafka Streams 还基本不能线上部署使用。
    • 如果你依然在使用 0.10 大版本,建议你至少升级到 0.10.2.2 然后使用新版本 Consumer API,另外此版本的 Producer 性能也更好。
  • 0.11.0.0 大版本
    • 主流的版本之一,引入了幂等性 Producer API 以及事务(Transaction) API;重构了 Kafka 消息格式。
    • 至少将你的环境升级到 0.11.0.3,因为这个版本的消息引擎功能已经非常完善了。
  • 1.0 和 2.0大版本的区别
    • 这两个大版本主要还是 Kafka Streams 的各种改进,如果你是 Kafka Streams 的用户,至少选择 2.0.0 版本吧。

建议不论你用的是哪个版本,都请尽量保持服务器端版本和客户端版本一致,否则你将损失很多 Kafka 为你提供的性能优化收益。

小结

每个 Kafka 版本都有它恰当的使用场景和独特的优缺点,不要一味追求最新版本,选择稳妥且合适的才是最好的。

Views: 151

发表回复

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