Kafka Compression
2019-11-20 本文已影响0人
白奕新

- 使用kafka-producer-perf-test.sh脚本依次为4个topic发送60,000,000条消息,每条消息1KB大小。
- ZStandard是Kafka v2.1.0新支持的压缩算法。
1、producer端
(1)CPU使用率

结论:snappy的cpu使用率最高,其他都差不多
(2)producer端TPS

结论:LZ4的吞吐量最高,ZStandard是LZ4的1/3
2、broker端
磁盘使用率

磁盘使用率与压缩比成反比。ZStandard的压缩比最高,LZ4的压缩比也不错排第二
3、consumer端
(1)CPU使用率

结论:几种压缩算法的cpu消耗都基本一致
(2)consumer的吞吐量

结论:LZ4的吞吐量最高
4、conclusion
- 4种算法在生产者以及消费者的CPU消耗都差不多。
- LZ4能取得最好的吞吐量以及相对不错的压缩比,为ZStandard的1/2。
- 为什么LZ4在对比Snappy以及GZIP有高压缩率的时候还能保持高TPS?在实现高压缩率的时候需要耗费更多的时间以及更高的cpu使用率,但是TPS又是由压缩时间+传输时间决定的。当压缩时间耗费多带来的数据量更小的情况下使得传输时间大大降低,所以总的发送耗时反倒更短,TPS更高。
- ZStandard能有最高的压缩比,所以有最低的带宽以及磁盘使用量,但是吞吐量一般,为LZ4的1/3~1/4。
- 如果要追求低带宽以及低磁盘存储量,使用ZStandard,否则使用LZ4是个最好的选择。其他两种压缩算法不考虑。
5、process
- kafka producer将数据按照批次进行压缩(同一个topic的同一个partition)
- broker直接将压缩的日志储存
- kafka consumer自动将日志解压缩
- 压缩文件与非压缩文件可以同时发送,互不影响