如何选择kafka版本(这里只讨论Apache Kafka)
kafka命名示例:
kafka_2.11-2.2.1.tgz
kafka_2.12-2.2.1.tgz
- 这里的2.11和2.12表示是编译kafka的Scala编译器版本;
- 2.2.1表示的是kafka的版本;
7大版本:
0.7:上古版本;
-
0.8:
- 引入副本机制;保障消息无丢失,但为老版本客户端,依赖zookeeper,生产者使用同步通信发送数据,吞吐量不高,支持异步方式,但可能会造成消息丢失;
- 0.8.2.0 引入新版本producer API,即指定Broker地址,而非zookeeper地址;
- 0.8.2.2 老版本消费者API比较稳定,不要使用新版本的producer API,Bug很多;
-
0.9:
- 新版Producer在该版本中比较稳定了;
- java重写了新版本Consumer API,但Bug超多,不要使用;
- 增加基础安全认证、权限功能;
- 增加Kafka Connect组件;
-
0.10
- 引入Kafka Stream组件;
- 0.10.2.2版本,新版Consumer API算是比较稳定了;并修复了一个可能导致Producer性能降低的BUG;
-
0.11
- 引入幂等性Producer和事务性Producer;事务性API还有一些BUG;
- 对Kafka的消息进行了重构;要注意消息格式转换会大大降低吞吐量;
- 其他各大功能组件都变得非常稳定了;
1.0 Kafka Streams飞速发展;
2.0 Kafka Streams 飞速发展;
不论你用的是哪个版本,都请尽量保持服务器端版本和客户端版本一致,否则你将损失很多 Kafka 为你提供的性能优化收益。