📅  最后修改于: 2021-01-05 03:01:03             🧑  作者: Mango
如我们所见,生产者以文本格式(通常称为JSON格式)将数据发送到Kafka。 JSON有一个缺点,即数据以字符串形式存储。这将创建多个重复的记录以存储在Kafka主题中。因此,它占用大量磁盘空间。因此,需要减少磁盘空间。这可以通过在将数据发送到Kafka之前压缩或保留数据来完成。
可能有以下原因可以更好地说明减少消息大小的需要:
生产者将消息逐条地写到Kafka。因此, kafka 打得很聪明。它等待产生给Kafka的消息。然后,它将创建一个批处理并将消息放入其中,直到充满为止。然后,将批次发送到Kafka。这种批次的类型称为生产者批次。默认的批处理大小为16KB,最大可以为任何大小。批次大小较大,生产者请求的压缩,吞吐量和效率更大。
注意:邮件大小不应超过批处理大小。否则,该邮件将不会被批量处理。此外,批次是按分区分配的,因此请勿将其设置为很高的数量。
生产者批次更大,有效使用消息压缩技术。
消息压缩始终在生产者端进行,因此不需要在消费者或代理端更改配置。
在该图中,创建了200 MB的生产者批次。压缩后,它减少到101 MB。
为了压缩数据,使用了“ compression.type”。这使用户可以决定压缩的类型。类型可以是'gzip','snappy','lz4'或'none'(默认)。 “ gzip”具有最大的压缩率。
消息压缩有以下缺点:
因此,消息压缩是减少磁盘负载的更好选择。