【问题标题】:Optimal Kafka Producer Options for Failover and Recovery用于故障转移和恢复的最佳 Kafka Producer 选项
【发布时间】:2018-03-01 20:19:56
【问题描述】:

我想微调 Producer 的 KafkaTemplate 选项,以尽可能优化地处理各种故障转移和恢复场景。

我们的KafkaProducerMessageHandlersync 模式下运行(即等待发送操作结果 - 请参阅: acks 下面)。 注意:这是在当前版本的 Kafka 中启用 ErrorChannel 报告所必需的。

以下是我选择的选项:

  • acks = 1 (我们正在执行来自 Kafka 的基本确认 经纪人领导)
  • retries = 10
  • max.in.flight.requests.per.connection = 1 (如果达到错误状态,这将使消息保持有序)
  • linger.ms = 1 (不确定这个或是否相关?)
  • request.timeout.ms = 5000 (超时 5 秒,这将适用于重试 - 所以 总时间为 50 秒,在消息被视为失败并出现在错误通道之前)
  • enable.idempotence = false (再次,不确定这个选项?)
  • retry.backoff.ms = 100 (这是默认设置 - 再次值得一玩吗?)

这些价​​值观听起来如何? 我有什么遗漏吗?

【问题讨论】:

  • 我保留您选择的标签,但听起来这个问题与 Spring Integration 或 Spring Kafka 无关。确实是 Apache Kafka Producer 选项。即使没有 Spring Integration 和 Spring Kafka,你也会面临同样的问题。
  • official documentation 很好地描述了这些配置。

标签: java spring apache-kafka spring-integration


【解决方案1】:

这是一篇关于 Kafka 生产者调优的旧帖子:http://ingest.tips/2015/07/19/tips-for-improving-performance-of-kafka-producer/

TLDR 版本:

注意“batch.size”和“linger.ms”参数。

【讨论】:

  • 感谢您的回答 - 这篇文章内容丰富!对于故障转移和恢复,您有什么进一步的建议吗?
  • @RobertSmith 这是一个复杂的话题。我尝试的是记录失败的消息以便以后处理它们。您可以在 Kafka 生产者回调中执行此操作。恕我直言,这非常影响您的工作量。所以我建议你尝试不同的设置并比较结果。在恢复方面,您应该查看集群拓扑 - 例如复制因子、分区数量等。如果您希望生产者更快地发送消息,您可以尝试不同的 'ack' 值。
  • 这就是我们正在使用的方法——我们计划通过错误通道对失败的消息做同样的事情。对于ack 值,我们将使用默认值 1(显然这是必需的,对于当前版本的 Kafka 以便失败的消息最终会出现在错误通道中)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2010-09-12
  • 2018-03-30
  • 2015-09-14
  • 2021-05-31
  • 1970-01-01
相关资源
最近更新 更多