你需要多个 zookeeper 实例来 运行 多代理卡夫卡吗?

Do you need multiple zookeeper instances to run a multiple-broker kafka?

我是 kafka 的新手。

Kafka 应该用作分布式服务。但是我在网上找到的教程和博文都没有提到是否有一个或多个zookeeper节点。

教程只是弹出一个 zookeper 实例,然后弹出多个 kafka 代理。

它应该如何完成?

教程通常使事情变得简单明了,所以一个 ZooKeeper(通常也是一个 Kafka 代理)。对入门有用;对任何类型的弹性都无用:)

实际上,您至少需要三个 ZooKeeper 节点。

如果有帮助,这里是 enterprise reference architecture 部署 Apache Kafka 的白皮书


免责声明:我为发布上述白皮书的 Confluent 工作

Zookeeper 是分布式系统的协调服务(以集中方式),集群使用它来维护分布式系统。它通过配置信息、命名等元数据实现的分布式同步

在一般架构中,Kafka 集群应由 3 个 ZooKeeper 节点提供服务,但如果部署规模很大,则可以增加到 5 个 ZooKeeper 节点,但这反过来会增加节点的负载,因为所有节点尝试同步,因为所有与元数据相关的活动都由 ZooKeeper 处理。

此外,应该注意的是,作为一项改进,the new release of Kafka reduces dependency on ZooKeeper为了增强元数据的可扩展性,降低使用外部组件维护元数据的复杂性,并增强从意外关闭中恢复的能力.使用新方法,控制器故障转移几乎是瞬时的。这是通过称为 'KRaft' 的 Kafka Raft 元数据模式实现的,它将 运行 没有 ZooKeeper 的 Kafka 通过将 ZooKeeper 处理的所有职责合并到 Kafka 集群本身的服务中,并在使用的基于事件的机制上运行在 KRaft 协议中。