一种应用于云盘系统中的文件去重方法、系统与流程

文档序号:24638824发布日期:2021-04-09 20:50阅读:67来源:国知局
一种应用于云盘系统中的文件去重方法、系统与流程

本发明属于云存储领域,具体而言,涉及一种应用于云盘系统中的文件去重方法及系统。



背景技术:

研究表明企业系统中存在着大量的重复数据,这些数据极大地增加了企业成本。为了抑制数据过快增长,提高it资源利用率,去重技术在云盘系统中越来越被重视。

现有的去重技术分为文件级去重和文件分块去重。其中文件级别的数据去重是粗粒度也容易实现的一种,通过为文件整体计算一个哈希值,对于相同的哈希值的文件只存储一份。缺点是去重效果比较差。比较适合变动不太频繁的文件或者小文件。文件分块去重将文件按照固定或可变的大小切片,然后在数据块的级别做去重,优点是粒度细,缺点是需要更复杂的分块管理,同时对底层文件系统模块的要求也大大提高。



技术实现要素:

本申请实施例提供了一种应用于云盘系统中的文件去重方法及系统,目的为提升服务器吞吐量和并发度,大大降低整个云盘方案的复杂度。

第一方面,本申请实施例提供了一种应用于云盘系统中的文件去重方法,包括:

客户端上传第一文件前,对所述第一文件进行弱校验,将弱校验信息发送给服务器;

所述服务器接收所述弱校验信息,根据所述弱校验信息确定所述服务器中是否有所述第一文件,将结果返回给客户端;

所述客户端根据返回的结果调整强校验与内容上传的流程。

其中,所述将结果返回给客户端,包括:

如果所述服务器中没有所述第一文件,服务器将未命中的信息发送给所述客户端;如果所述服务器中有所述第一文件,服务器将命中的信息发送给所述客户端;

所述客户端根据返回的结果调整强校验与内容上传的流程,包括:

当所述客户端接收到的信息为未命中时,所述客户端向所述服务器上传所述第一文件,同时计算所述第一文件的md5值,将md5值发送给所述服务器;

当所述客户端接收到的信息为命中时,所述客户端对所述第一文件进行强校验,计算所述第一文件的全文md5值,所述客户端向所述服务器发送创建请求,所述创建请求中携带所述第一文件的全文md5值。

其中,所述客户端向所述服务器上传所述第一文件,包括:

所述客户端向所述服务器发送未命中md5的文件创建请求;

所述方法还包括:

所述服务器接收未命中md5的文件创建请求,生成一个临时文件,在文件上传结束时,在md5文件库通过硬链接关联该临时文件,然后重命名并移动该临时文件至目标位置。

其中,所述弱校验包括对所述第一文件的一部分进行校验;所述强校验包括对所述第一文件的全文进行校验。

其中,所述客户端与服务器基于http协议进行通信,协议使用http头部的扩展tag标记来标记文件的请求类型和参数,使用http的content段来进行文件数据内容的交换。

第二方面,本申请提供了一种应用于云盘系统中的文件去重系统,包括客户端和服务器:

所述客户端用于:上传第一文件前,对所述第一文件进行弱校验,将弱校验信息发送给服务器;

所述服务器用于:接收所述弱校验信息,根据所述弱校验信息确定所述服务器中是否有所述第一文件,将结果返回给客户端;

所述客户端还用于:根据返回的结果调整强校验与内容上传的流程。

其中,所述服务器用于:

如果所述服务器中没有所述第一文件,服务器将未命中的信息发送给所述客户端;如果所述服务器中有所述第一文件,服务器将命中的信息发送给所述客户端;

所述客户端用于:

当所述客户端接收到的信息为未命中时,所述客户端向所述服务器上传所述第一文件,同时计算所述第一文件的md5值,将md5值发送给所述服务器;当所述客户端接收到的信息为命中时,所述客户端对所述第一文件进行强校验,计算所述第一文件的全文md5值,所述客户端向所述服务器发送创建请求,所述创建请求中携带所述第一文件的全文md5值。

其中,所述客户端用于:

所述客户端向所述服务器发送未命中md5的文件创建请求;

所述服务器还用于:接收未命中md5的文件创建请求,生成一个临时文件,在文件上传结束时,在md5文件库通过硬链接关联该临时文件,然后重命名并移动该临时文件至目标位置。

其中,所述弱校验包括对所述第一文件的一部分进行校验;所述强校验包括对所述第一文件的全文进行校验。

其中,所述客户端与服务器基于http协议进行通信,协议使用http头部的扩展tag标记来标记文件的请求类型和参数,使用http的content段来进行文件数据内容的交换。

本申请实施例应用于云盘系统中的文件去重方法及系统具有如下有益效果:

本申请应用于云盘系统中的文件去重方法包括:客户端上传第一文件前,对第一文件进行弱校验,将弱校验信息发送给服务器;服务器接收弱校验信息,根据弱校验信息确定服务器中是否有第一文件,将结果返回给客户端;客户端根据返回的结果调整强校验与内容上传的流程。本申请通过客户端承担计算任务,提升了服务器吞吐量和并发度,这样在开发效率以及服务器稳定度等方面可以获得很大的提升和保障。

附图说明

图1为本申请实施例应用于云盘系统中的文件去重方法流程示意图;

图2为本申请实施例应用于云盘系统中的文件去重方法另一种流程示意图;

图3为本申请实施例应用于云盘系统中的文件去重系统的结构示意图;

图4为本申请实施例服务器的结构示意图。

具体实施方式

下面结合附图和实施例对本申请进行进一步的介绍。

在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本发明的多个实施例,不同实施例之间可以替换或者合并组合,因此本申请也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征a、b、c,另一个实施例包含特征b、d,那么本申请也应视为包括含有a、b、c、d的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。

下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本申请内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。

本发明的目的是结合云盘前后端的特性,给出一种简洁可靠的文件级去重方案及其协议实现。本发明的上述一个目的将通过以下技术方案得以实现:客户端与服务器协同,客户端承担文件md5计算工作,服务端信任客户端计算结果。双方基于http协议进行通信,涉及文件的弱校验、创建、修改和删除。

如图1-2所示,本申请应用于云盘系统中的文件去重方法包括步骤:s101,客户端上传第一文件前,对第一文件进行弱校验,将弱校验信息发送给服务器;s103,服务器接收弱校验信息,根据弱校验信息确定服务器中是否有第一文件,将结果返回给客户端;s105,客户端根据返回的结果调整强校验与内容上传的流程。下面介绍每一步骤。

s101,客户端上传第一文件前,对第一文件进行弱校验,将弱校验信息发送给服务器。

弱校验包括对第一文件的一部分进行校验。文件上传前,客户端首先进行弱校验,弱校验只对文件一部分取样哈希,通过弱校验可以快速排除服务器不存在该文件的情况。然后进行强校验,在创建文件的请求结果中判断是否存在相同文件,存在则创建结束,否则继续上传剩余内容。关于强校验及后续处理过程将在下面介绍。

s103,服务器接收弱校验信息,根据弱校验信息确定服务器中是否有第一文件,将结果返回给客户端。

服务器需要维护弱校验的weakchksum,响应客户端的弱校验检查;响应客户端创建请求,维护md5文件库,通过硬链接关联目标文件与md5文件。

本步骤中包括:如果服务器中没有第一文件,服务器将未命中的信息发送给客户端;如果服务器中有第一文件,服务器将命中的信息发送给客户端。

s105,客户端根据返回的结果调整强校验与内容上传的流程。

客户端需根据弱校验结果,动态的调整强校验与内容上传的流程。强校验和文件创建的请求合并,通过在http请求中携带相关tag实现。

若弱校验服务器返回命中,客户端需立即做强校验,对全文计算md5,并在创建请求中携带该md5;若弱校验返回未命中,客户端只需边上传边计算,保证最后上传结束时,携带最终的文件md5。

也就是说,本步骤包括:当客户端接收到的信息为未命中时,客户端向服务器上传第一文件,同时计算第一文件的md5值,将md5值发送给服务器;当客户端接收到的信息为命中时,客户端对第一文件进行强校验,计算第一文件的全文md5值,客户端向服务器发送创建请求,创建请求中携带第一文件的全文md5值。强校验包括对第一文件的全文进行校验。

在一些实施例中,客户端向服务器上传第一文件,包括:客户端向服务器发送未命中md5的文件创建请求;本申请方法还包括:服务器接收未命中md5的文件创建请求,生成一个临时文件,在文件上传结束时,在md5文件库通过硬链接关联该临时文件,然后重命名并移动该临时文件至目标位置。

在一些实施例中,客户端与服务器基于http协议进行通信,协议使用http头部的扩展tag标记来标记文件的请求类型和参数,使用http的content段来进行文件数据内容的交换。

本发明技术方案应用于云盘系统,相对于现有技术其有益效果体现在:通过客户端承担计算任务,提升了服务器吞吐量和并发度;服务器通过硬链接实现文件的去重,简化了文件特征值管理,大大降低整个云盘方案的复杂度。这样在开发效率以及服务器稳定度等方面可以获得很大的提升和保障。

如图2所示,客户端首先对文件做取样哈希,计算弱校验,取样偏移按照指数级递增。计算结束向服务器查询弱校验是否命中:

1)弱校验未命中。客户端向服务器发送创建请求,服务器创建临时文件并返回临时文件名,用于客户端接下来的内容上传。

客户端需要在上传的同时计算文件md5,在最后上传结束时,请求中同时携带文件md5和弱校验值。

2)弱校验命中。客户端直接计算全文md5,在创建文件请求中携带该md5。

服务器针对该md5查重,存在两种情况,一种是md5文件已存在,服务器直接链接md5文件到目标路径,返回客户端创建成功,同时在http的tag中添加md5命中标记,客户端收到应答结束上传流程。另一种是md5文件不存在,服务器需要创建临时文件并返回创建结果。客户端收到应答后,继续上传内容写入临时文件,最终结束上传。服务器在结束上传时,通过硬链接的形式将临时文件关联到md5文件库,并保存弱校验值,用于下次弱校验检查。

综上关于实施例的详细描述可见,本发明技术方案应用于云盘中,相对有益效果体现在:通过弱校验与强校验的结合,优化了文件不重复的场景下的使用体验,通过硬链接的使用也规避了复杂的特征值管理,可以极大地降低系统后端服务器开发的复杂度,提高服务器稳定度。而计算过程都集中在客户端,提高了系统吞吐量,服务器不会因此成为整个云盘解决方案的性能瓶颈。

如图3所示,本申请一种应用于云盘系统中的文件去重系统,包括客户端201和服务器202:客户端201用于:上传第一文件前,对第一文件进行弱校验,将弱校验信息发送给服务器;服务器202用于:接收弱校验信息,根据弱校验信息确定服务器中是否有第一文件,将结果返回给客户端;客户端201还用于:根据返回的结果调整强校验与内容上传的流程。

其中,服务器用于:

如果服务器中没有第一文件,服务器将未命中的信息发送给客户端;如果服务器中有第一文件,服务器将命中的信息发送给客户端;

客户端用于:

当客户端接收到的信息为未命中时,客户端向服务器上传第一文件,同时计算第一文件的md5值,将md5值发送给服务器;当客户端接收到的信息为命中时,客户端对第一文件进行强校验,计算第一文件的全文md5值,客户端向服务器发送创建请求,创建请求中携带第一文件的全文md5值。

其中,客户端用于:

客户端向服务器发送未命中md5的文件创建请求;

服务器还用于:接收未命中md5的文件创建请求,生成一个临时文件,在文件上传结束时,在md5文件库通过硬链接关联该临时文件,然后重命名并移动该临时文件至目标位置。

其中,弱校验包括对第一文件的一部分进行校验;强校验包括对第一文件的全文进行校验。

其中,客户端与服务器基于http协议进行通信,协议使用http头部的扩展tag标记来标记文件的请求类型和参数,使用http的content段来进行文件数据内容的交换。

本申请中,应用于云盘系统中的文件去重系统实施例与应用于云盘系统中的文件去重方法实施例基本相似,相关之处请参考应用于云盘系统中的文件去重方法实施例的介绍。

本领域的技术人员可以清楚地了解到本发明实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是fpga(field-programmablegatearray,现场可编程门阵列)、ic(integratedcircuit,集成电路)等。

本发明实施例的各处理单元和/或模块,可通过实现本发明实施例所述的功能的模拟电路而实现,也可以通过执行本发明实施例所述的功能的软件而实现。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述应用于云盘系统中的文件去重方法步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/或数据的任何类型的媒介或设备。

图4为本申请实施例服务器的结构示意图,如图4所示,本申请的服务器例如为台式计算机、工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本申请服务器包括处理器401、存储器402、输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线405或者其他方式连接。存储器402上存储有计算机程序,该计算机程序可在处理器401上运行,而且处理器401执行程序时实现上述应用于云盘系统中的文件去重方法中服务器执行的步骤。

输入装置403可接收输入的数字或字符信息,以及产生与数据处理计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置404可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器、等离子体显示器和触摸屏。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

以上介绍仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1