Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 在Kafka生成器上启用幂等性会降低吞吐量吗_Apache Kafka_Kafka Producer Api - Fatal编程技术网

Apache kafka 在Kafka生成器上启用幂等性会降低吞吐量吗

Apache kafka 在Kafka生成器上启用幂等性会降低吞吐量吗,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我在rest端点调用中使用启用了幂等性的kafka producer(不启用一次语义或事务)。我之所以启用它,是因为我不希望卡夫卡重试造成任何重复。我关注以下几点: 具有幂等性会减慢我的端点吗?(这个端点需要非常快) 我读过卡夫卡api文档,启用幂等将使重试无限(什么?) 如果我不在事务中使用幂等性,我真的需要它吗 “具有幂等性会降低我的端点速度吗?(此端点需要非常快)” 卡夫卡允许使用内部序列号以幂等方式生成消息。这是在代理端缓存和比较的,因此生成消息要花费更多的时间。此外,尽管您可以有多

我在rest端点调用中使用启用了幂等性的kafka producer(不启用一次语义或事务)。我之所以启用它,是因为我不希望卡夫卡重试造成任何重复。我关注以下几点:

  • 具有幂等性会减慢我的端点吗?(这个端点需要非常快)
  • 我读过卡夫卡api文档,启用幂等将使重试无限(什么?)
  • 如果我不在事务中使用幂等性,我真的需要它吗
“具有幂等性会降低我的端点速度吗?(此端点需要非常快)”

卡夫卡允许使用内部序列号以幂等方式生成消息。这是在代理端缓存和比较的,因此生成消息要花费更多的时间。此外,尽管您可以有多个正在进行的写入请求,但如果其中一个请求失败,后续的几个请求将失败,并出现可重试的OutOfSequenceException,这也可能会降低生成程序的速度

然而,与具有禁用幂等性的生产者相比,这两个方面实际上是微小的增加,我不知道有任何全面的基准来衡量吞吐量或延迟的差异。最好是在您的实际环境中进行测试

“我读过卡夫卡api文档,启用幂等将使重试无限(什么?)”

根据配置说明,它表示:“当设置为“true”时,生产者将确保流中写入每条消息的一个副本。如果为“false”,则由于代理失败等原因导致的生产者重试可能会在流中写入重试消息的副本。请注意,启用幂等性需要
max.in.flight.requests.per.connection
小于或等于5,
retries
大于0,
acks
必须为“全部”。如果用户未明确设置这些值,将选择合适的值。如果设置了不兼容的值,将引发ConfigException。“

请记住,重试的默认值无论如何都是
2147483647
(我认为这是无限的意思)。请随意将此值设置为较低的数字,但仍然大于0

关于幂等KafkaProducer的排序保证,即使有多个飞行中的请求,我已经写了一个答案

“如果我不在事务中使用幂等性,我真的需要它吗?”

我不知道您的需求是什么,但是在生产者端启用幂等性可以确保不会因为代理或生产者失败而创建副本


请记住,Kafka中的事务有两个方面,一个是生产者,另一个是消费者。如果使用事务,您还希望查看消费者配置
隔离。级别

作为补充,acks=使用幂等生产者自动设置的所有设置也可能会增加延迟。