Kafka 中的消息压缩

17 Mar 2025 | 阅读 2 分钟

正如我们所见,生产者以文本格式将数据发送到 Kafka,通常称为 JSON 格式。JSON 有一个缺点,即数据以字符串形式存储。这会导致几个重复的记录存储在 Kafka 主题中。因此,它会占用大量磁盘空间。因此,需要减少磁盘空间。这可以通过在将数据发送到 Kafka 之前压缩或延迟数据来完成。

消息压缩的必要性

以下原因可以更好地描述减少消息大小的必要性

  1. 它将减少将数据发送到 Kafka 所需的延迟和大小。
  2. 它将减少带宽,这将使用户增加发送到代理的消息数量。
  3. 当数据通过云平台存储在 Kafka 中时,它可能会导致低成本。这是因为云服务是付费的。因此,它会计算存储在 Kafka 中的数据量。
  4. 消息压缩不需要对代理和消费者的配置进行任何更改。
  5. 消息压缩不需要对代理和消费者的配置进行任何更改。
  6. 减少磁盘负载将导致快速的读写操作。

生产者批处理/记录批处理

生产者将消息逐条写入 Kafka。因此,Kafka 运行良好。它会等待要生产到 Kafka 的消息。然后,它会创建一个批处理并将消息放入其中,直到它已满。然后,将批处理发送到 Kafka。这种类型的批处理称为 生产者批处理。默认批处理大小为 16KB,最大值可以是任何值。批处理大小越大,压缩、吞吐量和生产者请求的效率越高。

Kafka Message Compression

注意:消息大小不应超过批处理大小。否则,消息将不会被批处理。此外,批处理是按分区分配的,因此不要将其设置为非常高的数字。

生产者批处理越大,使用消息压缩技术越有效。

消息压缩格式

消息压缩始终在生产者端完成,因此不需要在消费者或代理端更改配置。

Kafka Message Compression

在图中,创建了一个 200 MB 的生产者批处理。压缩后,它减少到 101 MB。

为了压缩数据,使用 'compression.type'。这使用户可以决定压缩类型。类型可以是 'gzip'、'snappy'、'lz4' 或 'none'(默认)。'gzip' 具有最大的压缩比。

消息压缩的缺点

消息压缩存在以下缺点

  1. 生产者提交一些 CPU 周期进行压缩。
  2. 消费者提交一些 CPU 周期进行解压缩。
  3. 这些缺点导致 CPU 使用率增加。

因此,消息压缩是减少磁盘负载的更好选择。


下一主题Kafka 安全性