gpt4 book ai didi

configuration - 了解 kafka 生产者的 max.inflight 属性

转载 作者:行者123 更新时间:2023-12-04 05:45:47 25 4
gpt4 key购买 nike

我在 1.0.0-cp1 版本的 Kafka 集群的工作台上工作。

在我的部分工作人员中,我专注于在订购保证和无数据丢失(只有一个分区的主题)的情况下可能的最大吞吐量,我需要设置 max.in.flight.requests.per.connection属性(property)到1 ?

我已阅读 this article
而且我知道,如果我使用 retries 在我的生产者处启用重试功能,我只需将 max.in.flight 设置为 1属性(property)。

另一种问我的问题的方式:只有一个分区+重试=0(生产者 Prop )就足以保证Kafka中的排序?

我需要知道,因为增加 max.in.flight 会大大增加吞吐量。

最佳答案

您的用例有点不清楚。您提到了排序和无数据丢失,但没有说明您是否容忍重复的消息。因此,如果您想要至少一次(QoS 1)或恰好一次,这是不干净的

无论哪种方式,当您使用 1.0.0 并且仅使用单个分区时,您应该查看 Idempotent Producer 而不是调整 Producer 配置。它允许正确有效地保证排序并且不会丢失数据。

从文档:

Idempotent delivery ensures that messages are delivered exactly once to a particular topic partition during the lifetime of a single producer.



早期的幂等生产者被逼 max.in.flight.requests.per.connection到 1(出于您提到的相同原因)但在最新版本中,它现在可以与 max.in.flight.requests.per.connection 一起使用设置为最多 5 并仍然保持其保证。

使用幂等生产者,您不仅可以获得更强的交付语义(恰好一次而不是至少一次),而且它的性能甚至可能更好!

我建议您检查交付语义 in the docs

回到你的问题

是的,没有幂等(或事务性)生产者,如果您想避免数据丢失(QoS 1)并保持排序,您必须设置 max.in.flight.requests.per.connection到 1,允许 retries并使用 acks=all .正如您所看到的,这会带来显着的性能成本。

关于configuration - 了解 kafka 生产者的 max.inflight 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com