min.insync.replica配置是否会影响Kafka生产者的吞吐量?

时间:2018-09-07 05:42:28

标签: apache-kafka performance-testing throughput

来自kafka文档

  

当生产者将acks设置为“ all”(或“ -1”)时,此最小insync.replica配置   指定必须确认写入的最小副本数   认为写入成功。

它表示当最小数量的同步副本得到确认时,写入成功,但是当我以min.insync.replica为1和3进行性能测试时(对于5中partition = 1和RF = 5的主题经纪商设置),则卡夫卡生产者的绩效与acks='all'相同。

因此,按主题配置min.insync.replica是否会影响acks="all"的Kafka生产者吞吐量(隔离运行)?

3 个答案:

答案 0 :(得分:1)

仅在涉及群集的可用性和Kafka中的可靠性保证时,您才关心min.insync.replica。它与吞吐量无关。将min.insync.replica设置为> 1可确保没有数据丢失。吞吐量因acks配置而异。

min.insync.replica的意义主要在于您在kafka中的消息的可用性和持久性保证。

无论您为此设置多少,追随者的确会消耗领导者的消息,以确保它们在ISR列表中,除非它们崩溃或变坏。

答案 1 :(得分:1)

如果您使用acks='all',则领导者会等到同步副本收到消息后再发送回确认或错误,因此会影响性能。对于min.insync.replica=1,一旦将消息写入领导者,生产者就会得到响应。它应该比使用min.insync.replica=3更快,因为在这种情况下,生产者将等待2个副本以获取所有消息,然后才能将其视为已提交。

您的结果意味着您的经纪人之间的等待时间非常短。我相信,如果在不同的数据中心/区域中启动代理,您应该会看到差异。

答案 2 :(得分:0)

如果您不设置 acks='all'min.insync.replica > 1,请注意您有数据丢失的风险。如果领导者宕机,则意味着无法保证复制的节点是领导者的副本。这实际上是 Kafka 防止分布式系统等情况的主要思想。