【问题标题】:Does min.insync.replica configuration affect Kafka producer throughput?min.insync.replica 配置会影响 Kafka 生产者吞吐量吗?
【发布时间】:2018-09-07 05:42:27
【问题描述】:

来自 kafka 文档

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

它说当最小数量的同步副本确认时,写入成功,但是当我使用 min.insync.replica 作为 1 和 3 运行性能测试时(对于 partition=1 和 R.F=5 的主题,在 5 个代理设置中),kafka producer的性能,与acks='all'是一样的。

那么,min.insync.replica 每个主题的配置是否会影响带有acks="all" 的 Kafka 生产者吞吐量(单独运行)?

【问题讨论】:

    标签: apache-kafka performance-testing throughput


    【解决方案1】:

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

    您的结果意味着您的代理之间的延迟非常低。如果您在不同的数据中心/区域启动代理,我相信您应该会看到差异。

    【讨论】:

      【解决方案2】:

      min.insync.replica 是必须确认数据已成功接收才能成功写入的最小副本数。

      min.insync.replica 设置为 3 和acks=all 肯定会影响吞吐量,但设置acks=01 不会影响吞吐量,但这样做时可能会丢失数据领导失败了。

      【讨论】:

      • 显着影响吞吐量。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        当生产者将确认设置为“all”(或“-1”)时,min.insync.replicas 指定必须确认写入才能被视为成功的最小副本数

        当一起使用时,min.insync.replicas 和 acks 允许您强制执行更大的持久性保证。一个典型的场景是创建一个复制因子为 3 的主题,将 min.insync.replicas 设置为 2,并使用“all”的 acks 生成

        min.insync.replicas 越高,该分区的领导者需要等待更多数量的数据副本同步写入 - 因此性能较低。

        【讨论】:

          猜你喜欢
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          • 2021-03-04
          • 2013-04-16
          • 2017-08-01
          • 1970-01-01
          • 2020-10-13
          • 2018-03-16
          相关资源
          最近更新 更多