您的位置 首页 java

陪你一起学kafka(十)——消息压缩

背景

我们都知道 kafka 是把消息存储在磁盘上的,那随着消息数量的不断增大,所占用的空间也是不断的增加的,那减少消息的占用空间就是一个优化的方向。kafka也考虑到了这一点,所以就有了消息压缩机制。

原理

消息压缩就是⽤时间去换空间的经典 trade-off 思想,具体来说就是⽤ CPU 时间去换磁盘空间或⽹络 I/O 传输量,希望以较⼩的 CPU 开销带来更少的磁盘占⽤或更少的⽹络 I/O 传输。

消息格式

有两⼤类消息格式,分别称之为V1版本和V2版本。V2版本是Kafka 0.11.0.0中正式引⼊的 V2版本都⽐V1版本节省磁盘空间,当启⽤压缩时,这种节省空间的效果更加明显

配置

配置项

  • product端:
 spring.kafka.producer.compression-type=gzip
  
  • broker端:

producer.properties

 compression.type=none
  

压缩格式

  • LZ4
  • Snappy
  • zstd
  • GZIP

压缩格式比较

  • 吞吐量维度

LZ4 > Snappy > zstd / GZIP

  • 压缩⽐⽅⾯

zstd > LZ4 > GZIP > Snappy

什么时候触发压缩

在kafka中,⽣产者程序中配置compression.type参数即表示启⽤指定类型的压缩算法

这样 Producer 启动后生产的每个消息都是 GZIP 压缩过的,从而降低了Producer到Broker的网络传输,从而也降低了Broker的数据存储压力。

两种例外情况就可能让Broker重新压缩消息:

  1. Broker端指定了和Producer端不同的压缩算法
  2. Broker端发⽣了消息格式转换

什么时候解压缩

有了压缩,那一定有对应的解压缩。在kafka中,producer端进行消息压缩,broker端保持消息压缩,consumer端解压缩。

结束

需要交流学习可以关注公众号【温故知新之java】,互相学习,一起进步。

文章来源:智云一二三科技

文章标题:陪你一起学kafka(十)——消息压缩

文章地址:https://www.zhihuclub.com/185518.shtml

关于作者: 智云科技

热门文章

网站地图