领袖下台后,卡夫卡是否保持同步复制因子



有人能解释一下在以下场景中Kafka中同步复制因子的维护吗:

场景:

  1. 考虑一下,最初我们的复制因子为3
  2. 在卡夫卡中,如果首领倒下,其中一个同步复制品就会成为新的首领

因此,对于新的领导者(同步副本之一(,Kafka是否再次保持复制因子3。

希望在卡夫卡符号上增加更多的清晰度:没有"同步复制因子";。每个主题都有一个";复制因子";以及一个单独的";同步复制品";(也称为ISR(。在一个健康的集群中,复制因子和同步副本的数量匹配,但一旦一个代理崩溃,这些数字可能会偏离,因为您将拥有不同步的副本。

"因此,对于新的前导(同步复制品之一(,Kafka是否再次保持复制因子3;

是(和否(。卡夫卡将坚持复制因子3。然而,它预计崩溃的经纪人会再次出现。在此期间,您的主题将具有

  • 一位新的领导者(正如您在第二个要点中所提到的(
  • 3的复制因子
  • 只有两个同步复制副本

因此,尽管您的复制因子为3,但您的主题将有一个不同步的副本。

在代理重新启动之前,它现在取决于KafkaProducer配置acksmin.insync.replicas,如果生产者仍然可以成功地向主题写入数据。min.insync.replicas的描述提供了更多细节:

"当生产者将ack设置为"0"时;所有";(或"-1"(,min.insync.replicas指定必须确认写入才能认为写入成功的最小副本数">

关于平衡领导层的Kafka文档提供了分区领导层发生的一些背景:

每当代理停止或崩溃时,该代理分区的领导权就会转移到其他副本。当代理重新启动时,它将只是其所有分区的跟随者,这意味着它不会用于客户端读写。

为了避免这种不平衡,卡夫卡有一个首选复制品的概念。如果分区的副本列表是1,5,9,则节点1优选作为节点5或9的前导,因为它在副本列表中较早。默认情况下,Kafka集群将尝试将领导层恢复到已恢复的副本。此行为配置为:

auto.leader.rebalance.enable=true

最新更新