网站首页 > 精选教程 正文
背景
我们都知道kafka是把消息存储在磁盘上的,那随着消息数量的不断增大,所占用的空间也是不断的增加的,那减少消息的占用空间就是一个优化的方向。kafka也考虑到了这一点,所以就有了消息压缩机制。
原理
消息压缩就是?时间去换空间的经典 trade-off 思想,具体来说就是? CPU 时间去换磁盘空间或?络 I/O 传输量,希望以较?的 CPU 开销带来更少的磁盘占?或更少的?络 I/O 传输。
消息格式
有两?类消息格式,分别称之为V1版本和V2版本。V2版本是Kafka 0.11.0.0中正式引?的 V2版本都?V1版本节省磁盘空间,当启?压缩时,这种节省空间的效果更加明显
配置
配置项
- product端:
spring.kafka.producer.compression-type=gzip
- broker端:
producer.properties
compression.type=none
压缩格式
- LZ4
- Snappy
- zstd
- GZIP
压缩格式比较
- 吞吐量维度
LZ4 > Snappy > zstd / GZIP
- 压缩???
zstd > LZ4 > GZIP > Snappy
什么时候触发压缩
在kafka中,?产者程序中配置compression.type参数即表示启?指定类型的压缩算法
这样 Producer 启动后生产的每个消息都是 GZIP 压缩过的,从而降低了Producer到Broker的网络传输,从而也降低了Broker的数据存储压力。
两种例外情况就可能让Broker重新压缩消息:
- Broker端指定了和Producer端不同的压缩算法
- Broker端发?了消息格式转换
什么时候解压缩
有了压缩,那一定有对应的解压缩。在kafka中,producer端进行消息压缩,broker端保持消息压缩,consumer端解压缩。
结束
需要交流学习可以关注公众号【温故知新之java】,互相学习,一起进步。
猜你喜欢
- 2024-11-10 每日分享- jvm 如何压缩 java 项目的可执行文件
- 2024-11-10 15个最好用的JavaScript代码压缩工具
- 2024-11-10 Redis 6.2配置文件全解析:轻松优化缓存性能!
- 2024-11-10 Linux中常用的打包,压缩,解压 tar指令 zip指令
- 2024-11-10 Go发起HTTP2.0请求流程分析(后篇)——标头压缩
- 2024-11-10 hash碰撞的概率和可能性比你直觉中大得多
- 2024-11-10 2020上半年Java面试题总结,20多类1100道面试题...
- 2024-11-10 Facebook 发布最新数据压缩技术:可将 Android App 大小减少 20%
- 2024-11-10 一个简单的字符串,为什么 Redis 要设计的如此特别
- 2024-11-10 Android如何进行资源压缩 android资源文件路径
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)