gpt4 book ai didi

apache-kafka - 在 Kafka 生产者上启用幂等性是否会降低吞吐量

转载 作者:行者123 更新时间:2023-12-04 01:10:44 25 4
gpt4 key购买 nike

我有 kafka 制作人 启用幂等性 (没有启用一次语义或事务)在休息端点调用中。我启用它的原因是因为我不希望 kafka 重试导致任何重复。我担心以下问题:

  • 幂等性会减慢我的端点吗? (这个端点需要非常快)
  • 我阅读了 kafka api 文档,启用幂等将使重试无限(什么?)
  • 如果我不将它用于事务,我真的需要幂等吗?
  • 最佳答案

    Apache Kafka 3.0 更新
    根据Announcement of Apache Kafka 3.0默认情况下,生产者启用最强的交付保证( acks=allenable.idempotence=true )。这意味着用户现在默认获得排序和持久性。

    "Will having idempotence slow down my endpoint? (This endpoint needs to be really fast)"


    Kafka 允许使用内部序列号以幂等方式生成消息。这是在代理端缓存和比较的,因此生成消息会更耗时。此外,虽然您可以有多个正在运行的写入请求,但如果一个失败,后续的少数几个请求将失败并出现可重试的 OutOfSequenceException,这也会减慢您的生产者的速度。
    但是,与禁用幂等性的生产者相比,这两个确实是很小的补充,我不知道有任何衡量吞吐量或延迟差异的综合基准。最好是在您的实际环境中对其进行测试。

    "I read the kafka api doc, that enabling idempotence will make the retries infinite (what ?)"


    根据配置说明 enable.idempotence它说:“当设置为 'true' 时,生产者将确保每条消息的副本恰好写入流中。如果为 'false',生产者由于代理失败等而重试,可能会写入重试消息的副本在流中。请注意,启用幂等性要求 max.in.flight.requests.per.connection 小于或等于 5, retries 大于 0 且 acks 必须为“全部”。如果用户未明确设置这些值,将选择合适的值。如果设置了不兼容的值,将抛出 ConfigException。”
    请记住,重试的默认值无论如何都是 2147483647 (我认为是无限的意思)。随意将此值设置为较低的数字,但仍大于 0。
    关于幂等 KafkaProducer 的排序保证,即使有多个飞行中的请求,我已经写了一个答案 here .

    "Do I really need idempotence if i am not using it with transactions ?"


    我不知道您的要求是什么,但在生产者端启用幂等性可确保不会因代理或生产者故障而创建重复项。
    请记住,Kafka 中的事务有两个方面,不仅是生产者,还有消费者。如果您使用事务,您还想查看您的消费者配置 isolation.level .

    关于apache-kafka - 在 Kafka 生产者上启用幂等性是否会降低吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64939661/

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