首页 > 其他分享 >聊聊数据压缩

聊聊数据压缩

时间:2023-03-20 18:55:23浏览次数:32  
标签:分段 数据 压缩 压缩算法 聊聊 压缩率 CPU 数据压缩

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

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

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

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

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

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

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

需要选择什么压缩算法?

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

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

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

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

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

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

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

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

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

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

Kafka如何处理消息压缩?

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

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

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

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

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

标签:分段,数据,压缩,压缩算法,聊聊,压缩率,CPU,数据压缩
From: https://www.cnblogs.com/wing011203/p/17237333.html

相关文章

  • 换个角度,聊聊全链路压测
    转载:https://www.cnblogs.com/imyalost/p/14244184.html前言之前自己也写过好几篇关于全链路压测的文章或者博客,最近看了infoQ上infoQ-数列科技杨德华的专栏,复盘了下自己......
  • 聊聊「订单」业务的设计与实现
    目录一、背景简介二、订单业务1、订单体系2、流程管理2.1流程拆分2.2正向流程2.3逆向流程2.4调度与监控3、结构设计三、技术方案1、订单ID2、并行与异步3、超时问题4、......
  • 版本发布:TDengine 3.0.3.0 为数据压缩、事件窗口等七大功能加“Buff”
    TDengine3.0自去年8月份发布以来,已经被大量用户下载使用。在此过程中,涛思的研发同学也没有懈怠,针对大家在社群、各种我们能触达到的平台上提出的种种有价值的反馈,都一一......
  • 版本发布|TDengine 3.0.3.0 为数据压缩、事件窗口等七大功能加“Buff”
    TDengine 3.0自去年8月份发布以来,已经被大量用户下载使用。在此过程中,涛思的研发同学也没有懈怠,针对大家在社群、各种我们能触达到的平台上提出的种种有价值的反馈,都一......
  • 聊聊性能测试开始前的准备工作
    转载:https://www.cnblogs.com/imyalost/p/9557741.html这篇博客,就聊聊性能测试的第一步工作:获取测试需求,到底需要哪些东西。。。性能测试流程导图一、相关设计文档1、......
  • 聊聊性能优化模式
    转载:https://www.cnblogs.com/imyalost/p/9123851.html原文链接:性能优化模式 一、性能优化的三个方面1、降低响应时间2、提高系统吞吐量3、提高服务的可用性三者的......
  • 聊聊可观测性
    !!大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com随着分布式架构逐渐成为主流,“可观测性”一......
  • 聊聊如何在K8S中实现会话保持
    前言故事的起因是朋友所在的部门最近基于auth2实现单点登录,他们在测试环境单点登录,运行得好好的,但他们把单点登录上到预发布环境,发现单点登录不好使了。他们有部分系统是......
  • 聊聊游戏业务怎么用高斯Redis
    摘要:其实游戏客户对数据库的诉求是很明确的,数据库应当“放心存放心用”。本文分享自华为云社区《华为云GaussDB(forRedis)揭秘第27期:聊聊游戏业务怎么用高斯Redis》,作者:......
  • 聊聊线上发布这件事
    上周六星球公开直播时候,有同学在直播评论区提了这样一个问题:我们每次提测质量很差,测试环境的服务经常发布,打乱测试节奏,导致最终线上发布质量很差,怎么解决?这是很典型的一......