春招面试复习:消息队列(七)-数据压缩

1 数据压缩意义

Kafka使用数据压缩,最高可提升约几十倍吞吐量。数据压缩不仅可节省存储空间,还可用于提升网络传输性能。这种使用压缩提升系统性能的方法,不仅在MQ使用,日常开发也可。比如传输大量数据或要在磁盘、数据库中存储较大数据,这些情况下,都可考虑使用数据压缩提升性能,还能节省网络带宽和存储空间。

2 数据压缩适用场景

进程间通过网络传输数据是不是需要压缩?

  • 不压缩直接传输耗时: 传输未压缩数据的耗时
  • 使用数据压缩耗时: 压缩耗时 + 传输压缩数据耗时 + 解压耗时
    压缩快还是不压缩快呢?
    不好说。影响因素多,比如数据压缩率、网络带宽、收发两端服务器的繁忙度。

压缩和解压的操作都是计算密集型操作。如果你的应用处理业务逻辑就需耗费大量CPU资源,就不太适合再压缩解压。

若系统瓶颈是磁盘IO性能,CPU资源又闲,这就非常适合在把数据写入磁盘前先压缩。
但若系统读写比严重失调,要考虑每读次数据就解压次是不是划算。

压缩的本质是资源置换,即时间换空间或CPU资源换存储资源。

就像木桶理论,每个系统都有性能瓶颈资源,可能磁盘IO、网络带宽、CPU。
若使用压缩,能用长板来换些短板,那总体上就能提升性能,这就划算。
若用压缩后,短板更短,就不划算。

只有通过性能测试,确认数据压缩可提升系统性能,就需选择合适压缩算法了。

3 压缩算法抉择

压缩算法可以分为

  • 有损压缩
    主要用来压缩音视频,它压缩之后会丢失信息
  • 无损压缩
    这讨论都是无损压缩,即数据经过压缩和解压过程后,与压缩前相比100%相同。

数据为什么可被压缩呢?各种各样压缩算法又怎么压缩数据的?

举个极端例子:

00000000000000000000

人肉压缩下:

200

20个字符就被压缩成4字符,且可无损还原。

常用压缩算法:ZIP,GZIP,SNAPPY,LZ4,XZ。
选择时考虑数据的压缩率和压缩耗时。一般压缩率越高,压缩耗时越高。

  • 若要高性能,可选择压缩速度快的LZ4
  • 要更高压缩比,考虑GZIP或压缩率更高的XZ

压缩样本对压缩速度和压缩比的影响也较大,同样大小的一段数字和一段新闻的文本,即使用相同压缩算法,压缩率和压缩时间差异也较大。
所以,有时在选择压缩算法前,用系统样例业务数据做个测试,帮你找到最合适压缩算法。

如果感兴趣,可学习最经典的压缩算法&#x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值