JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

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

wys521 2024-11-10 13:18:18 精选教程 20 ℃ 0 评论

背景

我们都知道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】,互相学习,一起进步。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表