Apache kafka 卡夫卡-min.insync.com

Apache kafka 卡夫卡-min.insync.com,apache-kafka,confluent-platform,Apache Kafka,Confluent Platform,我正在查看多个地方的文档,这增加了混乱 关于属性min.insync.replicas 当生产者将ACK设置为“全部”(或“-1”)时,此配置 指定必须确认写入的最小副本数 使写入被认为是成功的。如果此最小值不能 则制作人将提出一个异常(或 NotEnoughReplicas或NotEnoughReplicasAfterAppend)。使用时 min.insync.replicas和ack结合在一起,使您能够实施更大的 耐久性保证。一个典型的场景是创建一个主题 复制因子为3时,将min.insy

我正在查看多个地方的文档,这增加了混乱

关于属性min.insync.replicas

当生产者将ACK设置为“全部”(或“-1”)时,此配置 指定必须确认写入的最小副本数 使写入被认为是成功的。如果此最小值不能 则制作人将提出一个异常(或 NotEnoughReplicas或NotEnoughReplicasAfterAppend)。使用时 min.insync.replicas和ack结合在一起,使您能够实施更大的 耐久性保证。一个典型的场景是创建一个主题 复制因子为3时,将min.insync.replicas设置为2,然后 用“全部”的包装生产。这将确保生产商提高成本 如果大多数复制副本未收到写入,则会出现异常

我提出的问题

  • 该属性是否仅在“发送记录”(制作人)的一部分中与“确认”一起使用时才具有意义,或者作为消费流的一部分也具有任何影响
  • 如果acks=all和min.insync.replicas=1(默认值:1)-->它是否与acks=1相同?(考虑到复制因子3
  • 更新#1 我遇到了这个

    “当生产者指定ack(-1/all config)时,它仍将在此时等待来自所有同步副本的ack(与最小同步副本的设置无关)。因此,如果您在4个副本同步时发布,则除非所有4个副本提交消息,否则您将无法获得ack(即使最小同步副本配置为2)。”


    到目前为止,此短语的相关性如何?此属性“同步副本中的最小副本”是否仍然独立?

    此处有两种设置会影响生产者:

    • acks
      -这是生产商级别的设置
    • min.insync.replicas
      -这是一个主题级设置
    acks
    属性确定如何处理对卡夫卡的写入:

    acks=0
    -我不在乎收到回执的确认

    acks=1
    -当前导分区在内存中接收到批时发送确认

    all
    /
    -1
    -等待all副本接收批处理,然后发送确认

    请记住,分区中的回执在内存中,默认情况下Kafka不会等待fsync发送到磁盘,因此acks=1不是持久写入

    min.insync.replications
    用于主题中出现问题时,可能其中一个分区不同步或脱机。在这种情况下,群集将在满足
    min.insync.replications
    时发送确认。因此,3个副本,
    min.insync.replications=2
    仍将能够写入:

    acks属性对使用者没有影响,只是在满足
    acks
    min.insync.replications
    之前不会写入数据

    如果acks=all和min.insync.replicas=1(默认值:1)-->它与acks=1相同吗?(考虑复制系数3


    仅当主题有问题时。如果您有3个副本并且
    min.insync.replicas=1
    两个分区已关闭,这与acks=1相同。如果主题正常,则制作者将在发送ack之前等待所有副本。

    这是否意味着-“如果主题正常,制作者将在发送ack之前等待所有副本”-与设置“min.insync.replicas”无关?基本上,我想了解“min.insync.replicas”是否对“ack”有任何影响“设置?仅当同步副本<主题的副本总数时才有影响。我刚刚添加了更新#1,请检查并添加您的thoughts@Nag,我的回答涵盖了您的更新#1,是否有什么不清楚的地方?因此,在总结中,如果至少有“min.insync.replicas”,则-acks=all将发送确认“用响应返回。要量化“至少”,这取决于主题的运行状况。如果所有副本(代理)都正常运行,则只有在所有副本都用响应返回时,才会发送ack。否则,至少“min.insync.replicas”应该回应。