在 Kafka HA 中,为什么需要的最少代理数量是 3 而不是 2

Swa*_*wap 5 apache-kafka kafka-cluster

我们正在尝试使用 kafka 集群来实现 Kafka HA。在做研发的时候,我们发现zookeeper & kafka broker推荐的最小节点数是3。

我们理解为什么 Zookeeper 应该至少有 3 个节点,因为对于领导者选举,最少 (n+1)/2 个节点应该启动并运行。

但不清楚,为什么至少需要 3 个 kafka 经纪人。为什么我们不能用 2 个 kafka 代理和 3 个 zookeepr 节点来实现 HA?

hqt*_*hqt 7

由于 quorum 属性,Zookeeper 的最小节点数为 3。它应该是奇数,因为没有使用偶数个节点。例如:节点总数为8的Zookeeper可以降级为7。Zookeeper中的许多节点也因为共识算法而不好。(例如:Paxos)

对于Kafka集群,个人认为设置2个broker是可以的。但最好有 3 个经纪人。原因是因为维护 ISR - In Sync Replicas。

假设您的 Kafka 集群有 2 个代理。为了保持数据的高可用性和一致性,我们将副本和 ISR 都设置为 2。有趣的部分是 min-ISR 属性。如果您将 min-ISR 设置为 1,则领导者失败,您可能没有任何剩余的副本。如果将 min-ISR 设置为 2,则当领导者或跟随者失败时,生产者和消费者都无法工作。

如果我们的 Kafka 集群有 3 个 broker,并且我们将 ISR 设置为 3,则 min-ISR 等于 2。使用这种配置,我们接受在工作时丢失 1 个副本(领导者或追随者)的风险。例如,如果我们失去了领导者,那么至少有一个追随者同步切换。如果我们失去了一个追随者,我们仍然有一个剩余的追随者来保持最小 ISR 为 2。