Apache Kafka是一个分布式消息队列,它适合离线和在线消息处理。 Kafka可以将消息保留在磁盘上,并在群集内复制以防止消息数据丢失。另外,Kafka可与Apache Storm和Spark非常好地集成,用于实时流式数据分析。

Apache Kafka 3.0.0 正式发布,这是一个重要的版本更新,其中包括许多新的功能。在众多更新中,最重要的两个点是API变更以及对KRaft的改进,而KRaft是Apache Kafka新的内置共识机制,将会取代分布式系统协调服务Apache ZooKeeper。

从Kafka 2.X版本开始,官方就开始启动移除Apache ZooKeeper的计划,ZooKeeper在Kafka中扮演协调代理的角色,当代理服务器启动时,需要向ZooKeeper注册,并由ZooKeeper管理代理的状态,也协助代理之间沟通与信息同步,因此在过去,Kafka需依赖ZooKeeper才能运行。但是ZooKeeper是独立运行的系统,因此用户在使用Kafka的同时,还必须执行一套ZooKeeper系统,产生的问题除了资源浪费外,由于Zookeeper作为外部元资料存储服务,随着Kafka扩展Zookeeper所存储的元资料越多,加载的时间也越长,进而限制了Kafka集群扩展。

除此之外,官方也开始一些清理工作,像是Kafka不再支持消息格式v0与v1,从2017年开始,消息格式v2就一直是默认格式,因此他们决定在Kafka 3中弃用旧版本,官方提到,旧格式已经很少被使用,在Kafka 3中,当用户选择使用旧版本消息格式,将会收到警告,预计Kafka4就会删除。

另外,官方也宣布在Kafka 3弃用Java 8的支持,包括所有Kafka中的Java 8组件,官方提到,Kafka 4将计划移除Java 8的支持,而现在给用户缓冲的时间进行更改。同时,Kafka 3也弃用Scala 2.12,对该语言的支持同样会在下一个主要版本移除。