Kafka核心技术与实战——05 | 聊聊Kafka的版本号

  • Kafka 版本命名
    • Scala 2.11 - kafka_2.11-2.1.1
    • 前面的版本号是编译 Kafka 源代码的 Scala 编译器版本。Kafka 服务器端的代码完全由 Scala 语言编写,Scala 同时支持面向对象编程和函数式编程
    • 真正的 Kafka 版本号实际上是 2.1.1
    • 前面的 2 表示大版本号,即 Major Version;中间的 1 表示小版本号或次版本号,即 Minor Version;最后的 1 表示修订版本号,也就是 Patch 号
    • “大版本号 - 小版本号 - Patch 号”
  • Kafka 版本演进
    • Kafka 目前总共演进了 7 个大版本,分别是 0.7、0.8、0.9、0.10、0.11、1.0 和 2.0,其中的小版本和 Patch 版本很多
    • 我们先从 0.7 版本说起,这个版本只提供了最基础的消息队列功能,甚至连副本机制都没有
    • Kafka 从 0.7 时代演进到 0.8 之后正式引入了副本机制,至此 Kafka 成为了一个真正意义上完备的分布式高可靠消息队列解决方案
    • 社区正式发布了 0.9.0.0 版本。在我看来这是一个重量级的大版本更迭,0.9 大版本增加了基础的安全认证 / 权限功能,同时使用 Java 重写了新版本消费者 API,另外还引入了 Kafka Connect 组件用于实现高性能的数据抽取
    • 0.10.0.0 是里程碑式的大版本,因为该版本引入了 Kafka Streams。从这个版本起,Kafka 正式升级成分布式流处理平台
    • 社区发布了 0.11.0.0 版本,引入了两个重量级的功能变更:一个是提供幂等性 Producer API 以及事务(Transaction) API;另一个是对 Kafka 消息格式做了重构
    • 最后我合并说下 1.0 和 2.0 版本吧,因为在我看来这两个大版本主要还是 Kafka Streams 的各种改进,在消息引擎方面并未引入太多的重大功能特性。如果你是 Kafka Streams 的用户,至少选择 2.0.0 版本吧
    • 最后还有个建议,不论你用的是哪个版本,都请尽量保持服务器端版本和客户端版本一致,否则你将损失很多 Kafka 为你提供的性能优化收益
  • 小结
    • 我希望现在你对如何选择合适的 Kafka 版本能做到心中有数了。
    • 每个 Kafka 版本都有它恰当的使用场景和独特的优缺点,切记不要一味追求最新版本。
    • 事实上我周围的很多工程师都秉承这样的观念:不要成为最新版本的“小白鼠”
    • 考虑客户端的版本与服务端版本的兼容问题
posted @ 2020-04-28 10:47  怡情养性长智  阅读(315)  评论(0编辑  收藏  举报