千呼万唤始出来,经过7年的发展与完善,Apache Kafka 1.0.0正式发布!在笔者看来,比起1.0.0引入的新功能,此版本最大的意义在于标识Kafka各种组件功能的稳定性。不过我们还是来看下1.0.0引入的一些新功能:
- Kafka Streams API的优化:增加了一些全新的操作算子(operator),如cogroup等。另外print和writeAsText方法的改进更加方便了对Streams程序的调试
- JMX监控指标的完善:引入了很多集群健康度检查指标,同时对Kafka Connect监控体系做了较大程度的补足
- 正式支持Java 9:Java 9优化TLS和CRC32的性能(JEP 249以及引入了java.util.zip.CRC32C),因此在Java 9上启用Kafka安全后可以更快地进行数据加密以及checksum计算与校验
- 优化SASL认证错误的处理:之前某些SASL认证异常没有清晰显式地与其他异常区分开来。1.0.0版本更加“优雅”地处理这些异常,参见KAFKA-4764
- 强化对JBOD磁盘崩溃的处理:之前JBOD下Kafka无法容忍磁盘崩溃,会直接导致broker宕机。该新功能正式支持JBOD错误处理——笔者以为这是普通Kafka用户(没有使用Kafka Streams)最期待的两个1.0新功能之一
- 幂等producer的优化:之前为了保证消息的顺序性,在启用幂等producer之后强制设置max.in.flight.requests.per.connection=1,因而影响producer的TPS。KAFKA-5949引入了新的算法使得在保持幂等和EOS的同时还能提升该参数上限到5,一定程度上缓解了对TPS的伤害
- 替换ZkClient:这个特性未写在官方的Release Notes中,但实际上已经集成进1.0中。之前版本中Zookeeper的访问全部依赖于ZkClient以及Zookeeper的同步API,当分区数很多或请求数很多时controller的处理往往成为瓶颈。1.0版本使用了原生Zookeeper的异步API + 回调的方式,以期望提升controller与Zookeeper的交互性能。——笔者以为这是最期待的第二个1.0新功能
比起Apache Flink火箭速度的版本演进,Kafka 1.0发布的确有些慢了,不过我们总算是等到了这个正式版本。接下来问题来了,Confluent会把KSQL捐献给Apache社区吗:-)
时间: 2024-10-16 18:03:53