Apache Kafka 从发布以来一直依赖于 Apache ZooKeeper 来存储元数据,例如 topic、producer 和 consumer 的位置信息。ZooKeeper 作为数据存储和集群协调的中心,一般需要专门的管理员来管理它。随着 Kafka 的不断发展和变化,自由删除 Apache ZooKeeper 依赖的想法也逐渐形成,并被 Apache Kafka 开发者社区认可。
在 Apache Kafka 2.8.0 版本中,消除了 Apache ZooKeeper 的全面依赖性,这将为 Kafka 用户带来一些好处。
首先,消除 ZooKeeper 的依赖会减少 Kafka 集群的部署和管理复杂性。没有了 ZooKeeper,用户不需要担心维护和管理 ZooKeeper 集群。这也将减少 Kafka 管理人员的支出和与 ZooKeeper 相关的故障的发生。
其次,由于 Kafka 现在可以独立于 ZooKeeper 运行,可以提升 Kafka 的性能和扩展性。现在 Kafka 可以更好地处理大量的 topic、producer 和 consumer 元数据信息,这些信息之前可能会引起 ZooKeeper 的性能瓶颈和故障。
最后,通过消除 ZooKeeper 的依赖,Kafka 可以更容易地与不同的部署方案集成。例如,现在可以轻松地将 Kafka 部署在 Kubernetes、云服务以及无服务器环境中。Kafka 可以更容易地与现有的基础设施和工具集成,例如 Apache Kafka Connect、Schema Registry 等等。
需要注意的是,虽然 Apache Kafka 现在可以独立于 ZooKeeper 运行,但是 ZooKeeper 仍然可以用于存储 Kafka 的一些元数据。Kafka 仍然支持使用 ZooKeeper 来存储 leader 选举、消费者抢占等一些重要的信息。因此,为了保证 Kafka 的正常运行,仍应该保留 ZooKeeper。
总的来说,消除 ZooKeeper 的依赖是 Apache Kafka 非常重要的一步,改变了 Kafka 部署的方式和流程。这使得 Kafka 更加开放和灵活,并且可以更容易地集成到现有的基础设施和工具集中。这种变化也将驱动 Kafka 的增长和持续发展,并使其成为一种更加普遍和广泛使用的消息传递平台。