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 Streams应用程序中的延迟?_Apache Kafka_Apache Kafka Streams - Fatal编程技术网

Apache kafka 如何最小化Kafka Streams应用程序中的延迟?

Apache kafka 如何最小化Kafka Streams应用程序中的延迟?,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我的Kafka Streams应用程序通常需要大约100毫秒的时间,从发送消息到发送关于不同主题的响应消息。我可以调整哪些配置选项或使用哪些最佳实践来最小化延迟?这似乎与producer configlinger.ms有关 从() 生产者将在请求传输之间到达的任何记录组合到一个批处理请求中。通常,只有在记录到达的速度快于发送速度时,才会在加载时发生这种情况。但是,在某些情况下,即使在中等负载下,客户端也可能希望减少请求的数量。此设置通过添加少量的人为延迟来实现这一点,即制作者不会立即发送记录,而

我的Kafka Streams应用程序通常需要大约100毫秒的时间,从发送消息到发送关于不同主题的响应消息。我可以调整哪些配置选项或使用哪些最佳实践来最小化延迟?

这似乎与producer config
linger.ms
有关

从()

生产者将在请求传输之间到达的任何记录组合到一个批处理请求中。通常,只有在记录到达的速度快于发送速度时,才会在加载时发生这种情况。但是,在某些情况下,即使在中等负载下,客户端也可能希望减少请求的数量。此设置通过添加少量的人为延迟来实现这一点,即制作者不会立即发送记录,而是等待给定的延迟,以允许发送其他记录,从而可以将发送的记录批处理在一起。这可以被认为类似于TCP中的Nagle算法。此设置给出了批处理延迟的上限:一旦我们获得了分区的batch.size值的记录,它将立即被发送,而不管此设置如何,但是如果我们为该分区累积的字节数少于此数量,我们将“逗留”指定的时间,等待更多记录显示。此设置默认为0(即无延迟)。例如,设置linger.ms=5可以减少发送的请求数,但在没有加载的情况下,发送的记录会增加5毫秒的延迟

Kafka Streams将此值设置为100ms(纯生产者默认值为0ms),以提高吞吐量


您可以通过
StreamsConfig
参数
producer.linger.ms
减少该值。建议在流中使用
producer.
作为producer configs的前缀,以隔离producer/consumer configs。您可以使用
StreamsConfig.producerPrefix(ProducerConfig.LINGER\u MS\u CONFIG)
作为参数名以获得最大便利:)

提交间隔似乎也是一个工厂,具体取决于您的拓扑结构。例如,如果在启用缓存的情况下使用KTable(默认情况下),提交间隔可能会产生影响。从KIP-63()开始,提交间隔是适用于所有处理器的因素,对吗?是的。但并非所有Kafka Streams应用程序都受KIP-63的约束(例如,不包含聚合或通过处理器API编写)。注意,提交间隔默认设置为30秒,因此,KIP-63似乎与这个问题无关。