文档:https://kafka.apache.org/downloads
2014 年,Kafka 的 3 个创始人 Jay Kreps、Naha Narkhede 和饶军离开 LinkedIn 创办了 Confluent 公司,专注于提供基于 Kafka 的企业级流处理解决方案。
1、kafka版本命名规则:
在 1.x 之前的版本,基本遵循 4 位版本号,例如:0.8.2.2、0.9.0.1、0.10.0.0…
在 1.x 之后,kafka 全面启用了遵循 Major.Minor.Patch 的三位版本规则,其中 Major 表示大版本,通常是一些重大改变,因此彼此之间功能可能会不兼容;Minor 表示小版本,通常是一些新功能的增加;最后 Patch 表示修订版,主要为修复一些重点Bug而发布的版本。例如:Kafka 2.1.1,大版本就是 2,小版本是 1,Patch 版本为 1,是为修复 Bug 发布的第 1 个版本。
Scala 2.12 - kafka_2.12-2.7.0.tgz (asc, sha512)
2.12 表示的 scala 的版本, “-“ 后面的 2.7.0 表示的 kafka 的版本信息
Kafka 总共发布了 7 个大版本,分别是 0.7.x、0.8.x、0.9.x、0.10.x、0.11.x、1.x 及 2.x 版本
1)0.7版本:
这是个 “上古” 版本,只提供了基础的消息队列功能,还没有提供副本机制
2)0.8 版本:
新增了如下几个重要特性:
- Kafka 0.8.0,增加了副本机制,至此 Kafka 成为了一个真正意义上完备的分布式高可靠消息队列解决方案;
- Kafka 0.8.2.0,consumer 的消费偏移位置 offset 由原来的保存在 zookeeper 改为保存在 kafka 本身(kafka 定义了一个系统 topic,专用用来存储偏移量的数据);
- Kafka 0.8.2.0,引入了新版本 Producer API:新版本 Producer API 有点不同,一是连接 Kafka 方式上,旧版本的生产者及消费者API连接的是 Zookeeper,而新版本则连接的是 Broker;二是新版 Producer 采用异步批量方式发送消息,比之前同步发送消息的性能有所提升。
3)0.9版本:
Kafka 0.9 是一个重大的版本迭代,增加了非常多的新特性,主要体现在三个方面:
- 新版本 Consumer API:Kafka 0.9.0 使用 java 重写了新版 Consumer API,使用方式也是从连接 Zookeeper 切到了连接Broker;
- 安全方面:在 0.9.0 之前,Kafka 安全方面的考虑几乎为 0。Kafka 0.9.0 在安全认证、授权管理、数据加密等方面都得到了支持,包括支持 Kerberos 等;
- Kafka Connect:Kafka 0.9.0 引入了新的组件 Kafka Connect ,用于实现 Kafka 与其他外部系统之间的数据抽取。
注:此时的新版本 Consumer api 还不大稳定,而 0.9.0 版本的 Producer API 已经比较稳定了;
4)0.10.x版本:
Kafka 0.10 是一个重要的大版本,因为 Kafka 0.10.0.0 引入了 Kafka Streams,使得 Kafka 不再仅是一个消息引擎,而是往一个分布式流处理平台方向发展。0.10 大版本包含两个小版本:0.10.1 和 0.10.2,它们的主要功能变更都是在 Kafka Streams 组件上。
值得一提的是,自 0.10.2.2 版本起,新版本 Consumer API 已经比较稳定了,而且新版本的 Producer API 的性能也得到了提升,因此对于使用 0.10.x 大版本的用户,建议使用或升级到 Kafka 0.10.2.2 版本。
5)0.11.x版本:
Kafka 0.11 是一个里程碑式的大版本,主要有两个大的变更:
- 从这个版本开始支持 Exactly-Once 语义即精准一次语义,主要是实现了 Producer 端的消息幂等性,以及事务特性,这对于 Kafka 流式处理具有非常大的意义;
- Kafka 0.11另一个重大变更是Kafka消息格式的重构(对用户是透明的),主要为了实现 Producer 幂等性与事务特性,重构了投递消息的数据结构。这一点非常值得关注,因为 Kafka 0.11 之后的消息格式发生了变化,所以我们要特别注意 Kafka 不同版本间消息格式不兼容的问题。
注:这个版本中各个大功能组件都变得非常稳定了,应该算是目前最主流的版本之一。
6)1.x版本:
Kafka 1.x 更多的是 Kafka Streams 方面的改进,以及 Kafka Connect 的改进与功能完善等。但仍有两个重要特性:
- 一是 Kafka 1.0.0 实现了磁盘的故障转移,当 Broker 的某一块磁盘损坏时数据会自动转移到其他正常的磁盘上,Broker 还会正常工作,这在之前版本中则会直接导致 Broker 宕机,因此 Kafka 的可用性与可靠性得到了提升;
- 二是 Kafka 1.1.0 开始支持副本跨路径迁移,分区副本可以在同一 Broker 不同磁盘目录间进行移动,这对于磁盘的负载均衡非常有意义。
7)2.x版本:
Kafka 2.x 更多的也是 Kafka Streams、Connect 方面的性能提升与功能完善,以及安全方面的增强等。一个使用特性,Kafka 2.1.0 开始支持 ZStandard 的压缩方式,提升了消息的压缩比,显著减少了磁盘空间与网络 io 消耗。
