当前位置: 首页 > 知识库问答 >
问题:

触发器生产者何时发送请求?

唐彬炳
2023-03-14

如果我只在生产者端发送一条记录并等待,生产者何时将记录发送给经纪人?在Kafka文档中,我找到了名为“linger.ms”的配置,它说:

一旦我们得到

根据以上文件,我有两个问题。

>

  • 如果生产者收到的数据达到batch.size,它会立即触发发送一个只包含一个批次的请求给代理?但是正如我们所知,一个请求可以包含许多批次,那么它是如何发生的呢?

    这是否意味着即使是收到的数据也不足以批量处理。大小,它也会在等待linger后触发向代理发送请求。太太

  • 共有1个答案

    史烨
    2023-03-14

    在Kafka,最低的发送单位是一个记录(一对千伏)。

    kafka生产者试图批量发送记录以优化数据传输。因此,从生产者到集群的一次推送——准确地说是到代理领导者——可能包含多个记录。

    此外,批处理总是只适用于给定的分区。生成到不同分区的记录不能批处理在一起,尽管它们可能形成多个批处理。

    如文件所述,有几个参数会影响配料行为:

    缓冲器记忆-

    生产者可以用来缓冲等待发送到服务器的记录的总内存字节数。如果记录的发送速度超过了发送到服务器的速度,制作者将阻止max.block。ms之后,它将抛出异常。

    batch.size-

    当多个记录被发送到同一个分区时,生产者将尝试将记录一起批处理成更少的请求。这有助于客户端和服务器的性能。此配置html" target="_blank">控制默认的批处理大小(以字节为单位)。不会尝试批处理大于此大小的记录。

    发送到代理的请求将包含多个批次,每个分区有一个可供发送的数据。

    linger.ms-

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

    因此,从上面的文档中,您可以理解-linger。ms是一种人工延迟,如果没有足够的字节来传输,但如果生产者在逗留之前积累了足够的字节,则需要等待。ms已过,则仍会发送请求。

    此外,批处理还受max.request.size的影响

    麦克斯,请求。大小-

    请求的最大大小(字节)。此设置将限制制作人在单个请求中发送的记录批次数量,以避免发送大量请求。这实际上也是最大记录批量的上限。请注意,服务器对记录批量大小有自己的上限,这可能与此不同。

     类似资料:
    • 前期回顾 其中channel.finishConnect()中完成建立连接,调用了 sender的run(),继续分析 其中步骤五和步骤七: 会把发往同个broker上面partition的数据组合成为一个请求,然后统一一次发送过去,这样子就减少了网络请求。调用send() 调用selector的send() 调用kafkachannel的setsend() 开始发送数据 sender里面的pol

    • 本文向大家介绍在生产者中,何时发生QueueFullException?相关面试题,主要包含被问及在生产者中,何时发生QueueFullException?时的应答技巧和注意事项,需要的朋友参考一下 答:每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

    • 问题内容: 我想在詹金斯(Jenkins)中配置一个项目,以将电子邮件发送到常规计划生成的收件人组,但仅在手动触发生成的情况下才发送给请求者。这可能吗? 问题答案: 您应该能够通过使用可编辑电子邮件通知生成后操作的“脚本- 构建后”触发器来完成此操作。您可以运行groovy脚本,最后一行评估为布尔值,该布尔值确定是否发送电子邮件。下面的屏幕截图显示了触发部分,该部分检查以查看构建是否由用户(手动)

    • 我是新的Flink流处理,并需要一些帮助与FlinkKafka生产者,因为不能找到很多相关的搜索后一段时间。我目前正在阅读一个Kafka主题的流,然后在执行一些计算后,我想把这个写到新的Kafka中的一个分离主题。但我面临的问题是,我无法发送Kafka主题的关键。我使用的是Flink Kafka连接器,它给了我FlinkKafkaConsumer和flinkkafkaProducer。更详细的查看

    • 我只需要在更新容器中的所有4行时运行函数。我还没有在网上找到任何关于这是否可能的信息。如果你能告诉我这是否可能,如果可能的话,怎么做,那就太好了。

    • 这是关于让生产者知道消息是否已被消费者消费的用例。 我的想法是,每次消费消息时,消费者都会提交偏移量,生产者可以跟踪和读取当前偏移量,以查看是否消费了相应的消息。 此外,请不要犹豫,让我知道这是否是处理用例的正确方法,因为我没有Kafka的经验。我知道Kafka不是为这种方式设计的(处理上述用例),但我必须坚持使用Kafka。