Kafka 高并发设计之数据压缩与批量消息处理
创作时间:
作者:
@小白创作中心
Kafka 高并发设计之数据压缩与批量消息处理
引用
CSDN
1.
https://blog.csdn.net/qq_14855971/article/details/140367731
Kafka是一个高吞吐量、可扩展的分布式消息系统,深入掌握Kafka的数据压缩和批量数据处理机制,对于优化系统性能和资源使用至关重要。本文将详细介绍Kafka支持的压缩算法及其特点,并阐述数据压缩在Kafka中的具体应用。
压缩,是一种用时间换空间的trade-off思想,用CPU的时间去换磁盘或者网络I/O传输量,用较小的CPU开销来换取更具性价比的磁盘占用和更少的网络I/O传输。
Kafka数据压缩机制
数据压缩在Kafka中有助于减少磁盘空间的使用和网络带宽的消耗,从而提升整体性能。通过减少消息的大小,压缩可以显著降低生产者和消费者之间的数据传输时间。
Kafka支持的压缩算法
在Kafka 2.1.0版本之前,Kafka支持3种压缩算法:GZIP、Snappy和LZ4。从2.1.0开始,Kafka正式支持Zstandard算法(简写为zstd)。
一个压缩算法的优劣,有两个重要的指标:压缩比,文件压缩前的大小与压缩后的大小之比,比如源文件占用1000M内存,经过压缩后变成了200M,压缩比=1000/200=5,压缩比越高越高;另一个指标是压缩/解压缩吞吐量,比如每秒能压缩或者解压缩多少M数据,吞吐量越高越好。
如下图是Facebook Zstandard官网提供的一份压缩算法benchmark比较结果:
从图中可以看到,ZSTD压缩比最高,但是吞吐量中规中矩。LZ4在吞吐量方面属于王者。
- GZIP:压缩比高,但压缩和解压缩速度相对较慢。适用于对传输带宽要求较高的场景。
- Snappy:由Google开发,压缩和解压缩速度快,但压缩比相对较低。适用于对性能要求较高的场景。
- LZ4:在压缩和解压缩速度以及压缩比之间取得良好平衡。适用于对性能和压缩比有综合需求的场景。
- ZSTD:由Facebook开发,提供高压缩比和较快的压缩解压速度。适用于对高效压缩和快速处理都有需求的场景。
在Kafka的性能测试结果中,不同压缩算法的两个指标有以下排序特点:
- 吞吐量方面:LZ4 > Snappy > zstd和GZIP;
- 压缩比方面:zstd > LZ4 > GZIP > Snappy。
何时压缩
在生产者端压缩是很自然的想法,大部分情况下Broker收到Producer端的消息后是原封不动的保存,并不会进行压缩。
Kafka数据压缩流程
Kafka的数据压缩主要在生产者端进行。具体步骤如下:
- 生产者配置压缩方式:在KafkaProducer配置中设置
compression.type
参数,可以选择gzip
、snappy
、lz4
或zstd
。 - 消息压缩:生产者将消息批量收集到一个batch中,然后对整个batch进行压缩。这种批量压缩方式可以获得更高的压缩率。
- 压缩消息存储:压缩后的batch以压缩格式存储在Kafka的主题(Topic)分区中。
- 消费者解压缩:消费者从Kafka主题中获取消息时,首先对接收到的batch进行解压缩,然后处理其中的每一条消息。
热门推荐
克苏鲁神话2
浴室柜安装高度多少合适 浴室柜装高了怎么办
NBA历史中投命中率排行榜的演变:从乔丹到科比的精准传奇
白芥子:传统中药材的多重功效与应用
天王补心丹的功效与作用和适用人群
如何举报项目经理不作为
太阳穴痛的常见原因与应对方法解析:生活方式与健康因素的重要性
Win8任务栏图标闪烁不停怎么办?一文解决烦恼
家里出现小霉点,是夏天最被低估的健康威胁
带着“开金撤离”走向大众化,两周年的暗区“不装了”
张宗昌和张作霖是什么关系?张宗昌是如何在奉军中一步步崛起的?
葛根生长周期是多长时间?(探究葛根的生命力和生长特性,了解其生长规律)
减肥喝那种酸奶比较好,推荐几款能减肥的酸奶
个人信息保护面临新挑战!北京互联网法院:涉诉个人信息类型和侵权形态较为多样
工伤认定调取证据资料都有哪些
倍量过左峰在股票技术分析中的意义及应用
麦芽糖的功效与作用是什么
如何防止脱发?日常护理全攻略!
预防 AGA(男性型秃发)
孕期音乐疗法:用旋律滋养身心
肺结节手术费用详解:影响因素与价格范围
菲律宾旅游安全攻略:哪些地方适合游玩?哪些地方需要避开?
西甲第26轮:赫罗纳主场与塞尔塔战成平局,阿隆索表现抢眼
增光又美观!小区树木如何修剪?指南来了
英国个税计算器:帮助您轻松应对税务
如何快速背课文:高效记忆技巧和方法
大便粘稠排便不畅怎么办
改善股票收益:如何优化您的股票投资组合以提高收益
违章多久要处理才不会逾期?花呗逾期影响几何?
胡宗宪:抗倭英雄的双面人生