Kafka-代理故障,副本行为

问题描述 投票:0回答:1

听起来好像在代理失败的情况下,副本不会分配给其他代理。我使用3经纪人创建了简单的测试设置。我创建了一个分区= 13,副本= 3的主题。

[我关闭了一个经纪人(broker 1),我看到“ ISR”和“ Leader”已更新以反映这一事实(尽管副本列表仍然显示刚刚关闭的经纪人的经纪人ID)

我引导了另一个ID为4的全新经纪人。在这一点上,我假设kafka可以在上述主题的代理上创建副本,但事实并非如此,原因为何?

所以,如果代理之一关闭了副本,那么卡夫卡为什么设计NOT在其他可用计算机上创建副本。只是仅切换领导者标志

PS:我从文档中了解到-副本不会自行自行修复。但是,在分布式系统中进行这种隐式假设的背后原因是,要在可用机器上创建副本以规避某些副本不可用的事实。

enter image description here

更新#1

仔细阅读文档

Kafka群集将自动检测到任何代理关闭或失败并为该计算机上的分区选择新的领导者。

确认,如果代理关闭,kafka将不会对创建其他副本采取任何措施。

apache-kafka confluent-platform
1个回答
0
投票

考虑到一个事实,在一个[典型 Kafka集群中,每个代理在具有自己的日志目录(主题数据)的机器(VM /物理)上运行,例如,当您启动一个新代理时,它可能在新计算机上运行,​​新代理将从何处获取另一台计算机上已关闭的代理的日志目录(主题数据)?

仅当使用(使用KafkaConsumer)主题并将其提供给另一个代理时,才会发生这种情况。但是,通过

KafkaConsumer + KafkaProducer

不会在Kafka中进行复制,而是当分区的领导者代理收到一条消息时,该消息还将发送给其他副本代理,以将其自身的消息复制到各自的日志目录中。Kafka群集在设计时就考虑到一个代理的日志目录不能被另一个代理访问。这也是为什么每个代理都有一个日志目录,而不是每个Kafka集群都有一个日志目录的原因。
© www.soinside.com 2019 - 2024. All rights reserved.