【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)

news2024/12/28 19:09:38

一、数据编码概述

数据编码概述 - 在分布式系统中需要处理大量的网络数据,为了加快网络数据的传输速度,通常需 要对传输数据进行编码压缩

数据压缩是以尽可能少的数码来表示信源所发出的信号,减少容纳给定的消息集合或数据采样集合的信号空间,这里讲的信号空间就是被压缩的对象,是指某信号集合所占的时域、空域和频域。信号空间的这几种形式是相互关联的,存储空间的减少意味着信号传输效率的提高,所占用带宽的节省,只要采取某种方法来减少某个信号空间就能够压缩数据

一般来说,数据压缩主要是通过数据压缩编码来实现的。在给定的模型下通过数据编码来消除冗余,大致有以下3种情况

信源符号之间存在相关性

如果消除了这些相关性,就意味着数据压缩

信源符号之间存在分布不等概性

根据不同符号出现的不同概率分别进行编码,概率大的符合用较短的码长编码,概率小的符号用较短的码长编码,最终使信源的平均码长达到最短,通常采用统计编码的方法

 利用信息内容本身的特点(如自相似性)  

用模型的方法对需要传输的信息进行参数估测,充分利用人类的视觉、听觉等特性,同时考虑信息内容的特性,确定并遴选出其中的部分内容进行编码,从而实现数据压缩,通常采用模型基编码的方法

目前比较认同的、常用的数据压缩的编码方法大致分为两大类

冗余压缩法或无损压缩法 - 这类压缩方法只是去掉数据中的冗余部分,并没有损失熵,而这些冗余数据是 可以重新插入到原数据中的

熵压缩法或有损压缩法 - 这类压缩法由于压缩了熵,也就损失了信息量,而损失的信息是不能恢复的

二、LZSS算法

LZSS算法属于字典算法,是把文本中出现频率较高的字符组合做成一个对应的字 典列表,并用特殊代码来表示这个字符

LZSS算法的字典模型使用自适应方式,基本的思路是搜索目前待压缩串是否在以前出现过,如果出现过,则利用前次出现的位置和长度来代替现在的待压缩串,输出该字符串的出现位置以及长度,否则输出新的字符串,从而起到压缩的目的,但是在实际使用过程中,由于被压缩的文件往往较大,一般使用滑动窗口压缩方式,也就是说将一个虚拟的、可以跟随压缩进程滑动的窗口作为术语字典,LZSS算法最大的好处是压缩算法的细节处理不同,只对压缩率和压缩时间有影响,不会影响到解压程序,LZSS算法最大的问题是速度,每次都需要向前搜索到原文开头,对于较长的原文需要的时间是不可忍受的,这也是LZSS算法较大的一个缺点

 三、Snappy压缩库

Snappy是在 Google公司内部生产环境中被许多项目使用的压缩/解压缩的链接库, 使用该库的软件包括BigTable、MapReduce 和 RPC 等

Snappy是面向字节编码的 LZ77类型压缩器。Snappy采用的编码单元是 字节(byte), 而不是比特(bit)

采用小端方式 (little-endian )存储 , 同时兼顾可变长度编码。每个字节的后面7位存储具体的数据,最高位用于表示下一个字节是否为同一个整数,剩下的字节用4种元素类型中的一种进行编码,元素类型在元素数据中的第二个字节,该字节的最后两位表示类型

四、分布式通信系统

分布式通信研究分布式系统中不同子系统或进程之间的信息交换机制,我们从大数据系统中归纳出三种最常见的通信机制:远程过程调用,消息队列,多播通信

1:远程过程调用

远程过程调用的重点是网络中位于不同机器上进程之间的交互

远程过程调用 (Remote Procedure Call RPC)是一个计算机通信协议,通 过该协议运行于一台计算机上的程序可以调用另一台计算机的子程序,而程序员无须额外地为这个交互编程。

RPC框架都支持以下特性:接口描述语言、高性能、数据版本支持以及二进制数据格式

Thrift 是由 Facebook 公司开发的远程服务调用框架 ,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发

2:消息队列

消息队列的重点是子系统之间的消息可靠传递

消息队列也是设计大规模分布式系统时经常采用的中间件产品 

消息队列是在消息传递过程中保存消 息的容器或中间件,其主要目的是提供消息路由并保障消息可靠传递

分布式消息系统 Kafka 采用pub-sub机制,具有极高的消息吞吐量、较强的扩展型和高可用性

3:应用层多播通信

多播通信是实现信息的高效多播传递

分布式系统中的一个重要的研究内容是如何将数据通知到网络中的多个接收 方,这一般被称为多播通信

Gosip协议就是常见的应用层多播通信协议

Gossip协议也被称为“感 染 协 议 ”(Epidemic Protocol),用来尽快地将 本地更新数据通知到网络中的所有其他节点

其具体更新模型又可以分为3种:全通知模型、反熵模 型和散步谣言模型

创作不易 觉得有帮助请点赞关注收藏~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装Maven

目录 1.下载安装包 2.解压Maven 3.添加环境变量 4.检测Maven是否搭建成功 5. 编辑 Maven的settings.xml文件 5.1设置本地仓库 5.2添加阿里云镜像 1.下载安装包 访问查看需要的版本:Index of /dist/maven (apache.org) 安装包统一存放到/opt/software目录下…

Java基于springboot校园德育活动预约和评分管理系统+vue+elementUI

本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本校园德育活动预约和评分管理系统主要包括个人中心、学生管理、活动信息管理、活动…

使用Docker实现容器之间的互通

目录 怎样实现容器之间的相互通信? 情况1:两个容器在同一网段上 情况2:两个容器在不同网段上 怎样实现容器之间的相互通信? 情况1:两个容器在同一网段上 命令拓展: 删除所有容器:docker rm …

NuSences 数据集解析以及 nuScenes devkit 的使用

文章目录一、官网介绍1.1 总览(Overview)1.1.1 数据搜集(Data collection)1.1.2 传感器同步(Sensor synchronization)1.2 数据格式(Data format)attributecalibrated_sensorcategoryego_poseinstancelidarseglogmapsamplesample_a…

安装包UI美化之路-升级安装与静默安装一键打包

在实际应用中,除了产品安装外,还需要能够持续升级到新的版本,这时候升级方案就显得比较重要;而还有一些使用场景,需要咱们的安装包在安装时,不要显示安装界面,直接在后台进行安装! …

测试开发之前端篇-Web前端简介

自从九十年代初,人类创造出网页和浏览器后,Web取得了长足的发展,如今越来越多的企业级应用也选择使用Web技术来构建。 前面给大家介绍网络协议时讲到,您在阅读这篇文章时,浏览器是通过HTTP/HTTPS协议向服务器发送请求…

Python+Django的高考志愿填报辅助系统 计算机毕业设计

在各学校的教学过程中,学生的高考志愿填报辅助是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及,“基于网络的学习模式”正悄无声息的改变着传统的教室学习模式,“基于网络的教学平台”的研究和设计也成为教育技术领域的热点课…

音频转文字怎么转?三个方法教你音频转文字

昨天,朋友给我发了一条信息,大概的内容是“今天上班的时候,领导突然发了一段音频,说是会议的录音,让我朋友在下班之前整理成会议纪要发给他。无奈,我的朋友只能打开录音开始整理”。听到他还在听录音手动整…

Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW

今天的主题是Stata中的治疗效果。最近我们被客户要求撰写关于治疗效果的研究报告,包括一些图形和统计输出。 治疗效果估算器根据观察数据估算治疗对结果的因果关系。 我们将讨论四种治疗效果估计量: RA:回归调整IPW:逆概率加权I…

【卡尔曼滤波器】递归算法

大家好,我是小政。最近在学习卡尔曼滤波,本篇文章记录一下我学习的卡尔曼滤波器中的递归算法,通过举例子让大家更加清晰理解递归到底是什么?希望与同是卡尔曼滤波研究方向的同学进行一些交流。 递归算法1.为什么要用卡尔曼滤波器&…

zookeeper3.6.3升级jetty9.4.47解决安全漏洞CVE-2022-2048和CVE-2021-28169

客户扫描到zookeeper有CVE-2022-2048和CVE-2021-28169安全漏洞要求修复。 漏洞和官方解决办法如下: 一、# CVE-2022-2048 Jetty升级到这几个修复版本9.4.47. 10.0.10, 11.0.10 Eclipse Jetty 存在安全漏洞,该漏洞源于无效的 HTTP/2 请求可能占用连接导致…

视频配音怎么制作?手把手教你配音视频制作

相信很多短视频的创作者都知道,每个视频的好坏大多数取决于配音的效果,好的配音才能给观众留下一个深刻的印象,如果你想要制作一个好的视频,那肯定是离不开配音制作的。那你们知道视频配音怎么制作吗?不知道也没关系&a…

java计算机毕业设计ssm在线实验室器材设备借用管理系统42c93(附源码、数据库)

java计算机毕业设计ssm在线实验室器材设备借用管理系统42c93(附源码、数据库) 项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都…

“为什么同样是跳槽,有些人薪资就能翻2倍?“是我在软件测试路上走错了方向?

“为什么同样是跳槽,有些人薪资能翻两三倍?” 最近遇到一个朋友跟我吐槽如上,其实类似这样的问题我也听到过很多次,身边也不乏有认识的同事、朋友们通过跳槽拿下高薪,这里我先说一个我身边真实的例子: 学…

Java基于springboot高考填报志愿综合参考系统 vue+elementUI

高考填报志愿综合参考系统是针对目前高考填报志愿管理的实际需求,从实际工作出发,对过去的高考填报志愿综合参考系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利&…

(十一)数据归一化方法BN/LN/GN/IN

文章目录0. Introduction1.Batch Normalization3.Layer Normalization4.Group Normalization6.Instance Normalization参考资料欢迎访问个人网络日志🌹🌹知行空间🌹🌹 0. Introduction 在神经网络的训练过程中,网络的…

机器学习分类算法之逻辑回归

1、基础知识: 逻辑回归:logistic regression二分类:binary classification 类别一类别二noysefalsetrue01negative classpositive class 线性回归模型用于分类,效果一般;逻辑回归是最广泛使用的分类算法;…

main入口函数分析

在开始讲解之前,分享一些阅读 项目代码的经验。无论学习哪方面的知识,都是需要正反馈才能继续学下去。在学习开源项目的时候,如果不掌握一些比较好的方法,会比较难拿到正反馈,或者要坚持学习很久才能拿到正反馈。 我个…

JAVA毕业设计——基于Springboot的动漫论坛系统(源代码+数据库+ppt文档)

github代码地址 https://github.com/ynwynw/cartoonForum-public 毕业设计所有选题地址 https://github.com/ynwynw/allProject #动漫论坛系统 #java web #java #毕业设计 #课程设计 #JPa #Springboot #mysql #源代码 基于Springboot的动漫论坛系统(源代码数据库ppt文档)040 …

Python文件操作注意事项

今天继续给大家介绍Python相关知识,本文主要内容是Python文件操作注意事项。 一、文件操作流程注意事项 在文章Python文件操作详解(一)中,我们讲解过,文件操作的流程是打开文件——操作文件——关闭文件。如果我们在…