美文网首页
聊聊数据压缩

聊聊数据压缩

作者: 技术修行者 | 来源:发表于2023-03-19 18:47 被阅读0次

什么情况适合使用数据压缩?

数据压缩不仅能节省存储空间,还可以用于提升网络传输性能。

通过网络传输数据,使用数据压缩前后,处理的时间会有一些差别:

  • 压缩前:传输未压缩数据耗时
  • 压缩后:压缩耗时+传输压缩数据耗时+解压耗时

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

如果我们的系统瓶颈在于磁盘IO,同时CPU资源又有大量空闲,那么就非常适合在将数据写入磁盘前先进行压缩。

数据压缩的本质是资源的置换,是一个时间换空间,或者说CPU资源置换存储资源的操作。

需要选择什么压缩算法?

压缩算法可以分为有损压缩和无损压缩,有损压缩主要用来压缩音视频,它在压缩之后会丢失消息,而无损压缩的数据,在经过压缩和解压缩后,数据是没有变化的。

目前常用的压缩算法包括:ZIP、GZIP、SNAPPY、LZ4等,选择压缩算法时,主要考虑数据的压缩率和压缩耗时。一般来说,压缩率越高的算法,压缩耗时也越高。如果对性能要求很高,可以选择压缩速度快的算法,比如LZ4,如果需要更高的压缩比,可以考虑GZIP算法。

压缩样本对压缩速度和压缩比的影响也是比较大的,同样大小的一段数字和一段新闻的文本,即使是使用相同的压缩算法,压缩率和压缩时间的差异也是比较大的,所以在选择压缩算法之前,可以先尝试用我们系统中真正使用的数据做一些测试,这样可以找到最合适的压缩算法。

如何选择合适的压缩分段?

大部分压缩算法的区别主要在于对数据进行编码不同,压缩的流程和压缩包的结构大致一样,而在压缩的过程中,我们需要了解如何选择合适的压缩分段大小。

在压缩时,给定的被压缩数据必须由确定的长度,或者说是有头有尾的数据,不能是一个无限的流数据。如果要对流数据进行压缩,也需要把流数据划分成多个帧,一帧一帧的分段压缩。

压缩算法在开始压缩之前,一般都需要对被压缩数据从头到尾进行一次扫描,扫描的目的是确定如何对数据进行划分和编码,一般的原则是重复次数多、占用空间大的内容,使用尽量短的编码,这样压缩率会更高。

被压缩的数据长度越大,重码率会越高,压缩比也就越高。

分段也不是越大越好,实际上分段大小超过一定长度后,再增加长度对压缩率的共享就不大了,同时,过大的分段长度,在解压缩时,会有更多的解压浪费。

我们需要根据具体的业务场景,选择合适的压缩分段,在压缩率、压缩速度和解压浪费之间找到一个合适的平衡。

Kafka如何处理消息压缩?

Kafka是否开启消息压缩,是可以进行配置的,它也支持配置使用哪一种压缩算法。

在开启压缩时,Kafka选择一批消息一起压缩,每一批消息就是一个压缩分段。使用者也可以通过参数来控制每批消息的大小。

Kafka并不需要在服务端对接收到的批消息进行解压,而是整批直接存储,然后将其发送给消费者,由消费者对批消息进行解压处理。

不在服务端解压,就不会耗费服务端的CPU资源,同时传递消息数据时,真用的传输带宽也会小。

在使用Kafka时,如果生产者和消费者的CPU资源不是特别吃紧,开启压缩后,可以节省网络带宽和服务端的存储空间,提升总体的吞吐量。

相关文章

  • Apache站点优化-数据压缩

    数据压缩 数据压缩介绍 数据压缩实现 压缩工具比较 一、数据压缩介绍 数据从服务器传输到客户端,需要传输时间,文件...

  • 《算法》-字符串[数据压缩]

    1、为什么要做数据压缩? 2、什么是数据压缩? 3、常见的数据压缩算法 LZW压缩 LZW压缩是一种无损压缩,应用...

  • Golang 压缩Gzip数据

    Gzip数据压缩:

  • 第十四章 降维(Dimensionality Reduction

    14.1 动机一:数据压缩 其实当我们看到降维的时候,也会很自然地想起数据压缩,数据压缩带给我们的好处有很多,例如...

  • HADOOP与HDFS数据压缩格式

    HADOOP与HDFS数据压缩格式 1、cloudera 数据压缩的一般准则 一般准则 是否压缩数据以及使用何种压...

  • 17. Linux 压缩、归档和备份

    [TOC] 一、文件压缩程序 数据压缩是一个删除冗余数据的过程。游程编码是最基本的数据压缩技术。 压缩算法: 无损...

  • 数据压缩

    本章的学习目标是什么? 列出计算机中使用的5种不同的数据类型 不同的数据如何以位模式存储在计算机内部 整数如何以无...

  • protobuf学习

    1.高效的数据压缩编码方式 Protobuf

  • TERADATA数据压缩

    数据压缩 概况 本章描述了几种数据压缩选项,它能够帮助你减少磁盘空间的使用,在某种情况下,还可以提高I/O性能。 ...

  • 赫夫曼树和赫夫曼编码

    在数据膨胀,信息爆炸的今天,数据压缩的意义不言而喻。谈到数据压缩,就不能不提赫夫曼(Huffman)编码,赫夫曼编...

网友评论

      本文标题:聊聊数据压缩

      本文链接:https://www.haomeiwen.com/subject/tspyrdtx.html