如果ISR小于复制因子,并且所有生产者ACK被设置,生产者将等待多少个ACK?

问题描述 投票:0回答:1
  • RF = 3,ISR = 3,acks =全部>>>发送成功
  • RF = 3,ISR = 2,acks =全部>>>发送成功
  • RF = 3,ISR = 1,acks =全部>>>已成功发送
  • RF = 3,ISR = 1,acks = all,min.isr.replicas = 3 >>>发送成功!

因此,如果复制因子为4,ISR为3,并且生产者ACK被设置为全部,那么生产者将等待多少个ACK?我尝试了不同的场景,真正的行为应该是什么?

apache-kafka kafka-producer-api
1个回答
0
投票

谈到问题时,设置主题本身的复制因子并不重要。如生产者配置documentation中所述:

min.insync.replicas:当生产者将acks设置为“ all”(或“ -1”)时,min.insync.replicas指定必须确认一次写入才能使成功视为成功的最小副本数。 。如果无法满足此最小值,则生产者将引发异常(NotEnoughReplicas或NotEnoughReplicasAfterAppend)。一起使用时,min.insync.replicas和acks可使您实施更大的耐用性保证。典型的情况是创建一个复制因子为3的主题,将min.insync.replicas设置为2,并产生“ all”。如果大多数副本未收到写入,这将确保生产者引发异常。类型:int默认值:1有效值:[1,...]重要性:高更新模式:群集范围

回答您的具体问题:它将等待3个确认。

© www.soinside.com 2019 - 2024. All rights reserved.