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

阿帕奇-Kafka,batch.sizevsbuffer.memory

邢硕
2023-03-14

我正试图找出这两种设置之间的区别。大小和缓冲区。Kafka制作人的记忆。

据我所知。大小:这是可以发送的批次的最大大小。

文档描述了缓冲区。memory as:生产者可以用来缓冲等待发送的记录的内存字节。

我不明白这两者之间的区别。有人能解释一下吗?

谢啦

共有3个答案

白烨煜
2023-03-14

Kafka制作者和Kafka消费者有许多有助于性能调整的配置,比如获得低延迟和高吞吐量。缓冲器内存和批处理。尺寸也是其中之一,这些都是Kafka制作人特有的。让我们看看这些配置的更多细节。

>

一批大小当多条记录被发送到同一个分区时,生产者会将它们成批放入。此配置控制将用于每个批处理的内存量(以字节为单位,而不是消息)。当批处理已满时,将发送批处理中的所有消息。然而,这并不意味着生产商将等待批次满。生产商将发送半个完整批次,甚至只发送一条消息的批次。因此,将批大小设置得太大不会导致发送消息的延迟。它只会为批处理使用内存。将批量大小设置得太小会增加额外的开销,因为生产者需要更频繁地发送消息。默认批量大小为16384。

batch.size也是基于linger.ms的工作,它控制在发送当前批次之前等待额外消息的时间。正如我们所知,Kafka生产者在rge当前批次已满或达到linger.ms时间时发送一批消息。默认情况下,一旦有一个发送线程可以发送消息,prodcuer就会发送消息,即使只有消息。

梁渊
2023-03-14

合流文档页面上对这两种生产者配置的描述如下:

  • 一批。大小

kafka生产者试图将发送的消息收集成批处理以提高吞吐量。使用Java客户端,您可以使用batch.size来控制每个消息批处理的最大字节大小。

  • 缓冲区。记忆

使用缓冲区。内存限制Java客户端用于收集未发送消息的总内存。当达到此限制时,制作人将阻止其他发送,时间与max.block相同。ms,然后提出了一个例外。

闻人梓
2023-03-14

在我看来,

batch.size:单个请求中可以发送的最大数据量。如果batch.size是(32*1024),这意味着单个请求可以发送32KB。

缓冲器内存:如果Kafka制作人无法向Kafka代理发送消息(批处理)(假设代理已关闭)。它开始在缓冲内存中累积消息批(默认为32MB)。一旦缓冲区已满,它将等待“max.block.ms”(默认60000ms),以便清除缓冲区。然后是抛出异常。

 类似资料:
  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 下面是我成功运行两三天后持续获得的异常的详细信息。有人能指导我吗?

  • 我正在使用Flink从Apache Pulsar读取数据。我在pulsar中有一个分区主题,有8个分区。在本主题中,我生成了1000条消息,分布在8个分区中。我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主

  • 我做了一个poc,其中我使用spark流从Kafka读取数据。但我们的组织要么使用ApacheFlink,要么使用Kafka消费者从ApacheKafka读取数据,作为标准流程。所以我需要用Kafka消费者或ApacheFlink替换Kafka流媒体。在我的应用程序用例中,我需要从kafka读取数据,过滤json数据并将字段放入cassandra中,因此建议使用kafka consumer而不是f

  • 目前我正在研究Apache spark和Apache ignite框架。 这篇文章介绍了它们之间的一些原则差异,但我意识到我仍然不理解它们的目的。 我的意思是,哪一个问题更容易产生火花而不是点燃,反之亦然?