Apache kafka 在leader倒下后,Kafka是否保持同步复制因子?

Apache kafka 在leader倒下后,Kafka是否保持同步复制因子?,apache-kafka,kafka-topic,Apache Kafka,Kafka Topic,请有人解释一下卡夫卡在以下场景中的同步复制因子维护: 情景: 考虑一下,最初我们将复制因子设为3 在卡夫卡,如果领导者倒下,其中一个同步副本将成为新的领导者 因此,对于新的领导者(同步复制副本之一),卡夫卡是否再次保持3的复制因子。希望对卡夫卡符号进行更清晰的说明:没有“同步复制因子”。每个主题都有一个“复制因子”和一个单独的“同步副本”(也称为ISR)列表。在一个正常的集群中,复制因子和同步副本的数量是匹配的,但一旦一个代理崩溃,这些数字可能会出现偏差,因为您将拥有不同步的副本 “因此,对于新

请有人解释一下卡夫卡在以下场景中的同步复制因子维护:

情景:

  • 考虑一下,最初我们将复制因子设为3
  • 在卡夫卡,如果领导者倒下,其中一个同步副本将成为新的领导者

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

    希望对卡夫卡符号进行更清晰的说明:没有“同步复制因子”。每个主题都有一个“复制因子”和一个单独的“同步副本”(也称为ISR)列表。在一个正常的集群中,复制因子和同步副本的数量是匹配的,但一旦一个代理崩溃,这些数字可能会出现偏差,因为您将拥有不同步的副本

    “因此,对于新的领导者(同步副本之一),卡夫卡是否再次保持3的复制系数。”

    是(也不是)。卡夫卡将坚持复制系数为3。然而,它期望崩溃的代理再次可用。在此期间,您的主题将

    • 新的领导者(正如你在第二个要点中提到的)
    • 复制因子为3
    • 只有两个同步副本
    因此,尽管您的复制系数为
    3
    ,但您的主题将有一个不同步副本

    在代理重新启动之前,它现在取决于KafkaProducer配置
    acks
    min.insync.replications
    ,前提是制作人仍然可以成功地将数据写入主题。
    min.insync.replications
    的描述提供了更多详细信息:

    当生产者将ACK设置为“all”(或“-1”)时,min.insync.replicas指定必须确认写入的副本的最小数量,才能认为写入成功

    上的Kafka文档提供了分区引线的一些背景信息:

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

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

    auto.leader.rebalance.enable=true