保证kafka高吞吐量的另一大利器就是消息压缩。就像上图中的压缩饼干。程序员
压缩即空间换时间,经过空间的压缩带来速度的提高,即经过少许的cpu消耗来减小磁盘和网络传输的io。算法
消息格式V1编程
kafka不会直接操做单条消息,而是直接操做一个消息集合。网络
消息格式V2:学习
1, 抽取了消息的公共部分放到消息集合中;去掉每条消息的公共部分,减小了整体积。blog
2,消息的CRC校验由对每一条消息,移动到了对消息集合进行校验,减小了校验次数,节省了cpu;资源
3, 对单个消息进行压缩,放到消息的body字段 pk 对消息集合整个进行压缩 更好的压缩效果;kafka
压缩过程模型io
如何衡量一个压缩算法的好坏。学习资料
常见的压缩算法对比:
Zstandard 算法(简写为 zstd)。它是 Facebook 开源的一个压缩算法,可以提供超高的压缩比
启用压缩场景
若是cpu负载比较高,不适合启用压缩;
若是带宽不足,而cpu负载不高,最适合启用压缩,节约大量的带宽;
尽可能避免消息格式不一致带来的解压缩消耗。
压缩的目的是较少空间占用,带来传输速度的提高,可是须要消耗必定的cpu ;
是一种提升kafka消息吞吐量的有效办法。
本节回顾了新版的kafka是如何对消息进行压缩的,压缩和解压缩的流程是怎样的,
而后对比了常见的4种压缩算法,根据具体的使用场景来选择是否启用压缩,以及选择合适的压缩算法。
而后给出了压缩的配置参数,在producer和borker端均可以使用compression.type来设置。
原创不易,点赞关注支持一下吧!转载请注明出处,让咱们互通有无,共同进步,欢迎沟通交流。
我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各类资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!