让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
设置得高一些。