消息队列面试解析系列(七)- 数据压缩(上)

简介: 消息队列面试解析系列(七)- 数据压缩

1 数据压缩意义


Kafka使用数据压缩,最高可提升约几十倍吞吐量。数据压缩不仅可节省存储空间,还可用于提升网络传输性能。这种使用压缩提升系统性能的方法,不仅在MQ使用,日常开发也可。比如传输大量数据或要在磁盘、数据库中存储较大数据,这些情况下,都可考虑使用数据压缩提升性能,还能节省网络带宽和存储空间。


2 数据压缩适用场景    


进程间通过网络传输数据是不是需要压缩?

  • 不压缩直接传输耗时: 传输未压缩数据的耗时
  • 使用数据压缩耗时: 压缩耗时 + 传输压缩数据耗时 + 解压耗时
    压缩快还是不压缩快呢?
    不好说。影响因素多,比如数据压缩率、网络带宽、收发两端服务器的繁忙度。


压缩和解压的操作都是计算密集型操作。如果你的应用处理业务逻辑就需耗费大量CPU资源,就不太适合再压缩解压。


若系统瓶颈是磁盘IO性能,CPU资源又闲,这就非常适合在把数据写入磁盘前先压缩。

但若系统读写比严重失调,要考虑每读次数据就解压次是不是划算。


压缩的本质是资源置换,即时间换空间或CPU资源换存储资源。


就像木桶理论,每个系统都有性能瓶颈资源,可能磁盘IO、网络带宽、CPU。

若使用压缩,能用长板来换些短板,那总体上就能提升性能,这就划算。

若用压缩后,短板更短,就不划算。


只有通过性能测试,确认数据压缩可提升系统性能,就需选择合适压缩算法了。



3 压缩算法抉择


压缩算法可以分为

  • 有损压缩
    主要用来压缩音视频,它压缩之后会丢失信息
  • 无损压缩
    这讨论都是无损压缩,即数据经过压缩和解压过程后,与压缩前相比100%相同。


数据为什么可被压缩呢?各种各样压缩算法又怎么压缩数据的?

举个极端例子:

00000000000000000000

人肉压缩下:

20个0

20个字符就被压缩成4字符,且可无损还原。

常用压缩算法:ZIP,GZIP,SNAPPY,LZ4,XZ。

选择时考虑数据的压缩率和压缩耗时。一般压缩率越高,压缩耗时越高。



  • 若要高性能,可选择压缩速度快的LZ4
  • 要更高压缩比,考虑GZIP或压缩率更高的XZ


压缩样本对压缩速度和压缩比的影响也较大,同样大小的一段数字和一段新闻的文本,即使用相同压缩算法,压缩率和压缩时间差异也较大。

所以,有时在选择压缩算法前,用系统样例业务数据做个测试,帮你找到最合适压缩算法。


如果感兴趣,可学习最经典的压缩算法:哈夫曼编码。

目录
相关文章
|
7天前
|
Python
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
2024年最全用Python写了一个电子考勤系统_用python写一个宿舍考勤系统,2024年最新1307页阿里Python面试全套真题解析在互联网火了
|
7天前
|
机器学习/深度学习 编解码 算法
算法工程师面试问题总结 | YOLOv5面试考点原理全解析
本文给大家带来的百面算法工程师是深度学习目标检测YOLOv5面试总结,文章内总结了常见的提问问题,旨在为广大学子模拟出更贴合实际的面试问答场景。在这篇文章中,我们还将介绍一些常见的深度学习目标检测面试问题,并提供参考的回答及其理论基础,以帮助求职者更好地准备面试。通过对这些问题的理解和回答,求职者可以展现出自己的深度学习目标检测领域的专业知识、解决问题的能力以及对实际应用场景的理解。同时,这也是为了帮助求职者更好地应对深度学习目标检测岗位的面试挑战,提升面试的成功率和竞争力。
|
10天前
|
前端开发 JavaScript
Web前端开发之面试题全解析 一,2024年最新面经牛客
Web前端开发之面试题全解析 一,2024年最新面经牛客
|
10天前
|
移动开发 前端开发 JavaScript
Web前端开发之面试题全解析 一(3),前端面试题背不下来怎么办
Web前端开发之面试题全解析 一(3),前端面试题背不下来怎么办
|
10天前
|
前端开发 算法 搜索推荐
Web前端开发之面试题全解析 一(1),2024年最新前端组件化面试
Web前端开发之面试题全解析 一(1),2024年最新前端组件化面试
|
10天前
|
Linux 网络安全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
CentOS系统openssh-9,网络安全大厂面试真题解析大全
|
10天前
|
Android开发
Android高级开发面试题以及笞案整理,实战解析
Android高级开发面试题以及笞案整理,实战解析
|
10天前
|
Android开发
71,字节跳动历年校招Android面试真题解析
71,字节跳动历年校招Android面试真题解析
|
10天前
|
Android开发
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
Flutter完整开发实战详解(六、 深入Widget原理),2024百度Android岗面试真题收录解析
|
11天前
|
Android开发 Java Kotlin
阿里P8大佬亲自讲解,android面试题解析
阿里P8大佬亲自讲解,android面试题解析

热门文章

最新文章

推荐镜像

更多