apache-kafka - kafka分区中每条记录的记录大小是如何设置的?

标签 apache-kafka

我想知道kafka主题中的每条记录是否占用相同的大小,而不管消息的实际大小?

我知道以下属性 -> max.message.bytes=1000012,这将使记录的大小达到 1000012 字节。

我的问题是,如果传入记录小于这些字节,为其预留的空间的实际大小是多少?

最佳答案

在 Kafka 中,代理将生产者发送的内容几乎完全添加到磁盘。

但是,正如您所暗示的,生产者将消息包装到一条记录和一批中。

这些数据结构的完整描述可以在 documentation 中找到。 .

除了非常小的消息外,消息占用的磁盘空间主要取决于消息的大小,因为每条消息的 Kafka 开销相对较小。

例如,对于没有 key 或 header 的 10 字节的单个消息,磁盘上的大小将为 78 字节。这看起来可能是一个很大的开销,但由于无论消息大小如何,它几乎都是恒定的,如果有效负载为 1024 字节,则占用的总磁盘将仅为 1094 字节。

如果考虑批处理,则开销会进一步减少,因为批处理 header (约 50 字节)将用于多个记录。

关于apache-kafka - kafka分区中每条记录的记录大小是如何设置的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56342349/

相关文章:

java - kafka 在客户端 java 中覆盖 advertised.host.name

mysql - 如何告诉 debezuim Mysql 源连接器停止重新拍摄 kafka 主题中现有表的快照?

apache-kafka - Kafka 高级与低级消费者

java - 如何获取kafka的消费者offset值

apache-kafka - kafka缺少必需的配置 "zookeeper.connect",该配置没有默认值

node.js - 如何控制ConsumerGroup处理消息的并发度

python - 如何以编程方式检查 Kafka Broker 是否已启动并在 Python 中运行

java - 如何在apache kafka主题中查询记录的最后一个值

apache-spark - FAIR调度模式能否使从不同主题读取的Spark Streaming作业并行运行?

apache-kafka - Kafka Streams - 缺少源主题