我想知道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/