Kafka 生产者压缩算法是什么?何时压缩和解压?什么压缩性能好?

21 篇文章 2 订阅


压缩(compression)是为了节省空间,并且减少I/O传输量。希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。

何时压缩?

Kafka 中,压缩可能发生在两个地方:生产者端Broker 端。

如果在生产者段定义压缩方式就这样写,开启GZIP压缩算法。官网中有说明

在这里插入图片描述
在这里插入图片描述
默认为none

在Broker和topic也可以配置

查看官方文档可知,在Broker.kafka配置文件中可以配置,在Topic启动参数中也可以配置
在这里插入图片描述
在这里插入图片描述
通过之前学过的可知 当topic有配置时候会覆盖Broker的配置,并且topic和Broker的默认配置都是producer

默认条件下Broker和topic都尊重 producer的压缩选择。
优先级可以当做(而不是真的当做) topic>Broker>producerr,而具体情况下不要出现以下这种情况:

Broker 端指定了和 Producer 端不同的压缩算法。

在这里插入图片描述
白白浪费了资源,而且 Broker 端CPU使用率飙升。

Broker 端发生了消息格式转换。

消息格式转换主要是为了兼容老版本的消费者程序。为了兼容老版本的格式,Broker 端会对新版本消息执行向老版本格式的转换。这个过程中会涉及消息的解压缩和重新压缩。一般情况下这种消息格式转换对性能是有很大影响的,除了这里的压缩之外,它还让 Kafka 丧失了引以为豪的 Zero Copy 特性。

何时解压缩?

Consumer端解压缩、Broker 端也会进行解压缩,在以上介绍中已经大致掌握了压缩解压情况。就不具体重复。

什么压缩性能好?

在这里插入图片描述
GZIP、Snappy、LZ4 甚至是 zstd 的表现各有千秋。但对于 Kafka 而言,它们的性能测试结果却出奇得一致,即在吞吐量方面:LZ4 > Snappy > zstd 和 GZIP;而在压缩比方面,zstd > LZ4 > GZIP > Snappy。具体到物理资源,使用 Snappy 算法占用的网络带宽最多,zstd 最少,这是合理的,毕竟 zstd 就是要提供超高的压缩比;在 CPU使用率方面,各个算法表现得差不多,只是在压缩时 Snappy 算法使用的 CPU 较多一些,而在解压缩时 GZIP 算法则可能使用更多的 CPU。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值