基于Snappy
、DEFLATE
、Gzip
、bzip2
、LZ4
及LZO
等算法实现数据压缩,主要用于RPC
通讯场景。
Snappy
(以前称Zippy
)是Google
基于LZ77
的思路用C++
语言编写的快速数据压缩与解压程序库,并在2011
年开源。它的目标并非最大压缩率或与其他压缩程序库的兼容性,而是非常高的速度和合理的压缩率。
DEFLATE
是同时使用了LZ77
算法与哈夫曼编码(Huffman Coding
)的一个无损数据压缩算法。JDK
中提供了压缩类Deflater
和解压类Inflater
。
Gzip
的基础是Deflate
。同样JDK
中也提供了相关的类:GZIPOutputStream
和GZIPInputStream
。
bzip2
是Julian Seward
开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。bzip2
比传统的gzip
或者ZIP
的压缩效率更高,但是压缩速度较慢。
LZ4
是一种无损数据压缩算法,着重于压缩和解压缩速度。它属于面向字节的LZ77
压缩方案家族。该算法提供一个比LZO
算法稍差的压缩率——这逊于Gzip
等算法。但是,它的压缩速度类似LZO
——比Gzip
快几倍;而解压速度显著快于LZO
。
LZO
是致力于解压速度的一种数据压缩算法,LZO
是Lempel-Ziv-Oberhumer
的缩写。这个算法是无损算法,参考实现程序是线程安全的。