消息压缩

发布时间 2023-03-29 17:45:08作者: zhengbiyu

什么情况适合使用压缩?

在使用压缩之前,首先你需要考虑,当前这个场景是不是真的适合使用数据压缩。
比如,进程之间通过网络传输数据,这个数据是不是需要压缩呢?我和你一起来对比一下:
  • 不压缩直接传输需要的时间是: 传输未压缩数据的耗时。
  • 使用数据压缩需要的时间是: 压缩耗时 + 传输压缩数据耗时 + 解压耗时。
到底是压缩快,还是不压缩快呢?其实不好说。影响的因素非常多,比如数据的压缩率、网络带宽、收发两端服务器的繁忙程度等等。
压缩和解压的操作都是计算密集型的操作,非常耗费 CPU 资源。如果你的应用处理业务逻辑就需要耗费大量的 CPU 资源,就不太适合再进行压缩和解压。
又比如说,如果你的系统的瓶颈是磁盘的 IO 性能,CPU 资源又很闲,这种情况就非常适合在把数据写入磁盘前先进行压缩
但是,如果你的系统读写比严重不均衡,你还要考虑,每读一次数据就要解压一次是不是划算。
压缩它的本质是资源的置换,是一个时间换空间,或者说是 CPU 资源换存储资源的游戏。
就像木桶的那个短板一样,每一个系统它都有一个性能瓶颈资源,可能是磁盘 IO,网络带宽,也可能是 CPU。如果使用压缩,能用长板来换一些短板,那总体上就能提升性能,这样就是划算的。如果用了压缩之后,短板更短了,那就不划算了,不如不用。
如果通过权衡,使用数据压缩确实可以提升系统的性能,接下来就需要选择合适的压缩算法。