Apache kafka 卡夫卡-min.insync.com
我正在查看多个地方的文档,这增加了混乱 关于属性min.insync.replicas 当生产者将ACK设置为“全部”(或“-1”)时,此配置 指定必须确认写入的最小副本数 使写入被认为是成功的。如果此最小值不能 则制作人将提出一个异常(或 NotEnoughReplicas或NotEnoughReplicasAfterAppend)。使用时 min.insync.replicas和ack结合在一起,使您能够实施更大的 耐久性保证。一个典型的场景是创建一个主题 复制因子为3时,将min.insync.replicas设置为2,然后 用“全部”的包装生产。这将确保生产商提高成本 如果大多数复制副本未收到写入,则会出现异常 我提出的问题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
到目前为止,此短语的相关性如何?此属性“同步副本中的最小副本”是否仍然独立?此处有两种设置会影响生产者:
-这是生产商级别的设置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”应该回应。