内容简介:保证kafka高吞吐量的另外一大利器就是消息压缩。就像上图中的压缩饼干。压缩即空间换时间,通过空间的压缩带来速度的提升,即通过少量的cpu消耗来减少磁盘和网络传输的io。
背景
保证kafka高吞吐量的另外一大利器就是消息压缩。就像上图中的压缩饼干。
压缩即空间换时间,通过空间的压缩带来速度的提升,即通过少量的cpu消耗来减少磁盘和网络传输的io。
消息压缩模型
消息格式V1
kafka不会直接操作单条消息,而是直接操作一个消息集合。
消息格式V2:
1, 抽取了消息的公共部分放到消息集合中;去掉每条消息的公共部分,减少了总体积。
2,消息的CRC校验由对每一条消息,移动到了对消息集合进行校验,减少了校验次数,节省了cpu;
3, 对单个消息进行压缩,放到消息的body字段 pk 对消息集合整个进行压缩 更好的压缩效果;
压缩过程模型
压缩算法比较
如何衡量一个压缩算法的好坏。
常见的压缩算法对比:
Zstandard 算法(简写为 zstd)。它是 Facebook 开源的一个压缩算法,能够提供超高的压缩比
启用压缩场景
如果cpu负载比较高,不适合启用压缩;
如果带宽不足,而cpu负载不高,最适合启用压缩,节约大量的带宽;
尽量避免消息格式不一致带来的解压缩消耗。
小结
压缩的目的是较少空间占用,带来传输速度的提升,但是需要消耗一定的cpu ;
是一种提高kafka消息吞吐量的有效办法。
本节回顾了新版的kafka是如何对消息进行压缩的,压缩和解压缩的流程是怎样的,
然后对比了常见的4种压缩算法,根据具体的使用场景来选择是否启用压缩,以及选择合适的压缩算法。
然后给出了压缩的配置参数,在producer和borker端都可以使用compression.type来设置。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何找到 Kafka 集群的吞吐量极限?
- 高吞吐量的Java事件总线:MBassador
- 再次提高 Kafka 吞吐量,原来还有这么多细节?
- 软件交付效能度量:从吞吐量和稳定性开始
- 惊:FastThreadLocal吞吐量居然是ThreadLocal的3倍!!!
- 唯品会高吞吐量 Access Log 存储的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java程序员修炼之道
[英] Benjamin J. Evans、[荷兰] Martijn Verburg / 吴海星 / 人民邮电出版社 / 2013-7 / 89.00元
本书分为四部分,第一部分全面介绍Java 7 的新特性,第二部分探讨Java 关键编程知识和技术,第三部分讨论JVM 上的新语言和多语言编程,第四部分将平台和多语言编程知识付诸实践。从介绍Java 7 的新特性入手,本书涵盖了Java 开发中最重要的技术,比如依赖注入、测试驱动的开发和持续集成,探索了JVM 上的非Java 语言,并详细讲解了多语言项目, 特别是涉及Groovy、Scala 和Cl......一起来看看 《Java程序员修炼之道》 这本书的介绍吧!