数据压缩不仅能节省存储空间,还可以用于提升网络传输性能
什么情况适合使用数据压缩?
不压缩直接传输需要的时间是: 传输未压缩数据的耗时。
使用数据压缩需要的时间是: 压缩耗时 + 传输压缩数据耗时 + 解压耗时
压缩和解压的操作都是计算密集型的操作,非常耗费 CPU 资源。如果你的应用处理业务逻辑就需要耗费大量的 CPU 资源,就不太适合再进行压缩和解压。
应该选择什么压缩算法?
目前常用的压缩算法包括:ZIP,GZIP,SNAPPY,LZ4 等等。选择压缩算法的时候,主要需要考虑数据的压缩率和压缩耗时。一般来说,压缩率越高的算法,压缩耗时也越高。如果是对性能要求高的系统,可以选择压缩速度快的算法,比如 LZ4;如果需要更高的压缩比,可以考虑 GZIP 或者压缩率更高的 XZ 等算法。
如何选择合适的压缩分段?
如果要对流数据进行压缩,那必须把流数据划分成多个帧,一帧一帧的分段压缩。
Kafka 是如何处理消息压缩的?
在开启压缩时,Kafka 选择一批消息一起压缩,每一个批消息就是一个压缩分段。使用者也可以通过参数来控制每批消息的大小。
在 Kafka 中,生产者生成一个批消息发给服务端,在服务端中是不会拆分批消息的。那按照批来压缩,意味着,在服务端也不用对这批消息进行解压,可以整批直接存储,然后整批发送给消费者。最后,批消息由消费者进行解压。