如果acks=all且所有副本都是健康的,Kafka何时发送确认?



让Kafka生产者配置acks=all,并且有5个代理副本配置min.insync.replica=2

我明白,如果3个broker离线,但是2个broker仍然正常运行,那么生产者仍然会得到消息确认,并且能够继续发送消息。

但是如果所有5个经纪人都是健康的呢?

  • #1只有在所有5个broker都写了消息给自己之后,生产者才会收到确认吗?
  • 还是在2个broker写入消息后生产者已经收到确认?所以它不会等待其他3家经纪商的反馈?

我对所有代理副本都健康的情况下的吞吐量很感兴趣:min.insync.replica=2的吞吐量会比min.insync.replica=5高吗(对于acks=all和5代理副本)?

Producer将在数据写入min.insync.replicas时获得确认,在本例中为2。它不会等待所有代理都得到消息。是的,当min.insync.replica=2

时,吞吐量肯定会更高这是kafka试图给用户的权衡。如果吞吐量对您来说很重要,请将min.insync.replica设置得低一些;如果可靠性对您来说更重要,请将min.insync.replica设置得高一些。

最新更新