一种面向分布式去重系统的数据路由方法

文档序号:7779406阅读:541来源:国知局
一种面向分布式去重系统的数据路由方法
【专利摘要】本发明提供一种面向分布式去重系统的数据路由方法,包括:服务器将构成数据的所有数据块的指纹进行分类,并且将不同类别的指纹分别发送到存储相应类别指纹的数据摘要的不同摘要存储节点。以及,在所述摘要存储节点中查询接收到的指纹,得到该指纹在每个去重节点的命中分数,将该命中分数返回所述服务器。方法还包括所述服务器根据每个指纹在每个去重节点的命中分数得到每个去重节点的汇总分数,将该汇总分数结合每个去重节点的存储状况确定目标去重节点。本发明在实现去重效果与存储利用率的平衡的同时,有效抑制了指纹查询过程中通信和计算开销,提高了分布式去重系统的数据路由的可扩展性。
【专利说明】一种面向分布式去重系统的数据路由方法
【技术领域】
[0001]本发明总体涉及重复数据删除技术,具体而言,涉及一种面向分布式去重系统的数据路由方法。
【背景技术】
[0002]人类进入数字信息化时代以来,大量信息已被记录成数据。从衣食住行基本的生活需求到教育医疗和商业领域,从传统的互联网到由智能手机发展起来的移动互联网,越来越多的人和设备参与到数据的创造中来,每年产生的数据总量呈现爆炸式增长。与此同时,由于数据中存在潜在的商业和科研价值,因此越来越多的数据被记录和保存起来。国际数据公司(IDC)的研究报告指出2011年全球被创建和复制的数据高达1.8ZB,而且根据趋势,到2015年这个数字将接近8ZB。国际数据公司(IDC)通过研究发现在数字世界中有近75%的数据是重复的。无独有偶,企业战略集团(the Enterprise Strategy Group)指出在备份和归档存储系统中数据的冗余度超过90 %。
[0003]使用重复数据删除技术来优化存储可以有效减少数据在磁盘上的占用空间。然而,面对数据的高速增长,单一的重复数据删除服务器已经难以满足扩展性的需求。因此,集群重复数据删除技术应运而生。集群重复数据删除系统,或称分布式去重系统,通过将重复数据删除的任务分布到不同的服务器节点来提高重复数据删除服务器的处理能力。在集群重复数据删除系统中,除了考虑单个节点的去重问题外,还需要考虑将数据分配到去重服务器节点的数据路由机制,这是因为数据路由机制关系到系统整体的去重效果以及存储利用率的平衡。
[0004]目前,根据是否参考已有数据(即已存储的数据)将分布式去重系统的数据路由分为两种方法。一种方法是无状态数据路由,这种数据路由只参考当前的数据指纹信息,根据固定的映射规则,将数据分发到不同的去重服务器节点(简称去重节点)进行去重。其中,指纹(FP)用于判断构成数据的数据块是否重复,一般可通过SHAl或者MD5函数来计算数据块的指纹。这种数据路由方法实现简单,时间和空间开销都比较小。但是这种方法存在两点不足:首先,由于没有参考已存储的数据,因此无法保证数据在目标去重节点的去重率;其次,由于没有考虑去重节点的已有存储利用率,并且数据在不同去重服务器节点的去重效果不一样,因此会产生数据孤岛的问题,即某个重复数据删除服务器节点存储的数据远高于其他重复数据删除服务器节点。
[0005]另一种方法是有状态数据路由,这种方法参考系统已有数据的数据摘要和去重节点的数据存储情况来进行数据路由。这里,数据摘要是通过将构成数据的数据块指纹插入Bloom Filter (BF)而得到的。简要而言,该方法先访问存储关于每个去重节点的数据摘要的摘要存储节点,查询指纹得到该指纹在每个去重节点的命中得分,接着结合去重节点的存储利用率选择目标去重节点。这种方法的优点是能保证分布式去重系统整体的去重效果,同时能平衡去重节点的存储利用率。而缺点是这种方法需要额外的摘要存储节点用于查询,而数据摘要的内存开销很大,因此这种方法难以获得很好的扩展性。[0006]可见,在达到去重效果与存储利用率的平衡的同时,如何提高分布式去重系统数据路由的可扩展性,并且抑制指纹查询过程中通信和计算开销的增长是当前还没有解决的问题。

【发明内容】

[0007]为解决上述问题,本发明提供一种面向分布式去重系统的数据路由方法,其中所述分布式去重系统包括摘要存储节点、去重节点,和与系统中其他节点通信的服务器,所述方法包括:
[0008]步骤I)、服务器将构成数据的所有数据块的指纹进行分类,并且将不同类别的指纹分别发送到存储相应类别指纹的数据摘要的不同摘要存储节点;
[0009]步骤2)、在所述摘要存储节点中查询接收到的指纹,得到该指纹在每个去重节点的命中分数,将该命中分数返回所述服务器;
[0010]步骤3)、所述服务器根据每个指纹在每个去重节点的命中分数得到每个去重节点的汇总分数,根据该汇总分数确定目标去重节点。
[0011]在一个实施例中,在步骤3)中,根据汇总分数确定目标去重节点包括:所述服务器结合每个去重节点的存储状况和汇总分数来确定目标去重节点。
[0012]在一个实施例中,每个摘要存储节点存储每个去重节点已存储数据的所有数据块指纹中一类指纹的数据摘要,其中指纹类别的总数与摘要存储节点的个数相同。
[0013]在一个实施例中,所述摘要存储节点使用Bloom Filter来存储每个去重节点的数据摘要。
[0014]在一个实施例中,在步骤I)中,服务器用所述摘要存储节点的个数对构成数据的所有数据块的指纹取模,将余数相同的指纹分为一类。
[0015]在一个实施例中,步骤2 )包括:
[0016]步骤21)、在所述摘要存储节点中,使用存储每个去重节点的数据摘要的BloomFilter所采用的哈希函数来计算接收到的指纹的哈希值;
[0017]步骤22)、根据该哈希值查询关于每个去重节点的Bloom Filter的对应位;
[0018]步骤23)、根据对应位计算命中分数;
[0019]步骤24)、将该命中分数返回所述服务器。
[0020]在一个实施例中,步骤3 )包括:
[0021]步骤31)、对于每个去重节点,所述服务器计算所有指纹在该去重节点的命中分数的和,得到该去重节点的汇总分数;
[0022]步骤32)、所述服务器将每个去重节点的汇总分数与存储利用率的倒数加权求和,取值最大的去重节点作为目标去重节点。
[0023]在一个实施例中,所述方法还包括:
[0024]步骤O)、服务器从客户端接收数据,将该数据进行分块,并且计算每个数据块的指纹。
[0025]在一个实施例中,所述方法还包括:
[0026]步骤4)、所述服务器将所述数据发送到所述目标去重节点进行去重。
[0027]在一个实施例中,所述方法还包括:[0028]步骤5)、所述摘要存储节点更新所述目标去重节点的数据摘要。
[0029]本发明可以达到如下有益效果:
[0030]使用多个摘要存储节点来存储数据路由过程中要用到的数据摘要,解决了单个摘要存储节点内存不足的问题。与此同时,由于运用分布式Blo om Filter存储方法按类别存储数据摘要,在摘要存储节点不断扩展的同时,有效抑制了指纹查询过程中通信和计算开销的增长,提高了数据路由的可扩展性。
【专利附图】

【附图说明】
[0031]图1是根据本发明一个实施例的面向分布式去重系统的数据路由方法的流程图;
[0032]图2是根据本发明一个实施例的分布式Bloom Fliter存储方法的示意图;
[0033]图3是根据本发明一个实施例将原始Bloom Fliter切分为较小的Bloom Fliter的不意图;
[0034]图4是根据本发明一个实施例的Bloom Fliter的数据结构示意图;以及
[0035]图5是根据本发明一个实施例的摘要存储节点功能模块的框图。
【具体实施方式】
[0036]下面结合附图和【具体实施方式】对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0037]根据本发明的一个实施例,提供一种面向分布式去重系统的数据路由方法。简要而言,该方法包括:将多个节点作为摘要存储节点,在不同的摘要存储节点上存储关于某一类指纹的数据摘要;将需要去重的数据中所有数据块的指纹按类别发送到相应的摘要存储节点,在摘要存储节点中查询指纹,得到该指纹关于每个去重节点的命中分数;接着汇总得至IJ数据中所有指纹关于每个去重节点的汇总分数,根据去重节点汇总分数和去重节点数据存储状况来确定目标去重节点,从而进行去重操作。现参考图1进行详细描述。
[0038]一、分布式地存储数据摘要
[0039]设置多个节点作为摘要存储节点是确定目标去重节点的前提。要提高分布式去重系统的数据路由的可扩展性,就要解决现有系统中单个摘要存储节点内存不足的问题,即采用多个节点来存储数据摘要。如果仅是简单地将数据摘要分布到不同节点,可能会造成服务器在查询指纹时进行重复的广播式通信。这是因为,服务器为了得到一个查询结果,需要将指纹发送到不同的摘要存储节点中进行查询。
[0040]为了克服上述数据摘要分布式存储方法所带来的通信开销和计算开销,在一个实施例中,可以采用分布式Bloom Filter存储方法来存储数据摘要。这种存储方法是基于Bloom Filter的自身特性,即在误判率要求(例如1%)和哈希函数个数一定的情况下,BloomFilter的大小和插入元素的个数成正比。
[0041]在一个实施例中,可在每个摘要存储节点中创建Bloom Filter。在另一个实施例中,可以对现有分布式去重系统进行修改,基于现有系统中摘要存储节点的Bloom Filter来获得本发明中每个摘要存储节点的Bloom F ilter,包括:
[0042]1、将现有系统中的一个相对较大的Bloom Filter根据摘要存储节点的个数切分成若干个相对较小的Bloom Filter,并且将这些较小的Bloom Filter分布存储在不同的摘要存储节点中。参考图2,现有系统的单个摘要存储节点中存储了关于N+1个去重节点的数据摘要(即图2中所有指纹的数据摘要)的Bloom Filter (以BF节点O — BF节点N表示),则对于系统有m个摘要存储节点的情况,可将现有系统中用于存储每个去重节点的数据摘要的原始Bloom Filter切分成m个较小的Bloom Filter,每个Bloom Filter可存储不同类别的指纹的数据摘要,在每个摘要存储节点中分别存储这N+1个去重节点的相应较小Bloom Filter (仍是以BF节点O — BF节点N表示)。在图2所示的实施例中,摘要节点O中存储除以m余数为O的每个去重节点的指纹的数据摘要,摘要节点I中存储除以m余数为I的每个去重节点的指纹的数据摘要,以此类推。在图3所示的实施例中,摘要存储节点的个数为3个,贝U系统会将一个较大的Bloom Filter分成3个等大小的Bloom Filter。图4示出了 Bloom Filter的数据结构,其中asi ze表示Bloom Filter的大小,指针a指向为Bloom Filter分配的空间。
[0043]2、在不同的摘要存储节点上存储关于某一类指纹的数据摘要。其中指纹类别数目与摘要存储节点的个数相等。在一个实施例中,可使用取模的方法进行分类。应理解,也可以采用其他现有的分类方式来进行分类。
[0044]分布式存储数据摘要的好处在于,当需要对摘要存储节点进行指纹查询时,系统根据类别将不同指纹发送到不同的摘要存储节点,避免了广播式的通信。与此同时,在指纹查询过程中,每个指纹的哈希函数只需要进行一次计算,避免了相同指纹进行多次重复的计算。
[0045]二、查询摘要存储节点
[0046]总的来说,统筹服务器(该服务器知晓系统中的节点结构,能够与任何摘要存储节点和去重节点进行交互)在接收到客户端发来的需要去重的数据后,将该数据进行分块、计算每个数据块的指纹、对指纹进行分类,并且将所有指纹按类别发送到相应的摘要存储节点。接着,在摘要存储节点中查询接收到的指纹,得到该指纹关于每个去重节点的命中分数。
[0047]根据本发明的一个实施例,在将数据分配到目标去重节点之前查询摘要存储节点可以实现更高的去重率。在使用分布式Bloom Filter存储数据摘要后,与现有技术相比,对摘要存储节点的查询过程发生了改变,具体来说包括:
[0048]1、服务器将数据进行分块,对每个数据块计算指纹。常用的方法是使用SHl或者MD5来计算指纹。
[0049]2、根据摘要存储节点的个数对指纹进行分类。例如,按摘要存储节点的个数对指纹取模,将余数相同的指纹分为一类。
[0050]3、将分类好的指纹分别发送到相应的摘要存储节点中进行查询,避免了原始存储方式的广播式发送。指纹在每个摘要存储节点完成哈希函数的计算和Bloom Filter查询,将得到的命中分数返回给服务器。在一个实施例中,查询过程包括:在摘要存储节点中,使用存储数据摘要的Bloom Filter所采用的哈希函数来计算接收到的指纹的哈希值;然后,根据该哈希值查询每个去重节点的Bloom Filter的对应位,如果对应位全为I (哈希函数一般超过一个),则指纹命中,命中分数加I。
[0051]4、将命中分数返回到服务器。图5给出了摘要存储节点的功能模块,其中,请求队列用于缓存服务器向摘要存储节点发送的请求,BF管理器用于管理节点中的BloomFilter,整个摘要存储节点对外提供Bloom Filte r的查询和更新功能。
[0052]三、确定目标去重节点
[0053]服务器在接收到摘要存储节点返回的命中分数后,对所有指纹关于每个去重节点的命中分数进行相加汇总,得到每个去重节点的汇总分数。该汇总分数可帮助服务器得到去重效果预判的分数,但是对于系统整体而言,除了要考虑去重效果,还要考虑去重节点存储利用率失衡的问题。
[0054]因此,在一个实施例中,在将数据发送到目标去重节点之前,服务器还要综合考虑每个去重节点的存储利用率。在一个实施例中,服务器可以保存记录每个去重节点存储利用率的表,每经过一段时间服务器会向每个去重节点查询一遍其存储情况,然后对该存储利用率表进行更新。存储利用率表的数据结构可以如表1所示,其中deduperID是去重节点的编号,Container_num是去重节点存储对象的个数,对象的个数反映了去重节点的存储占用情况。
[0055]表1
【权利要求】
1.一种面向分布式去重系统的数据路由方法,所述分布式去重系统包括摘要存储节点、去重节点,和与系统中其他节点通信的服务器,所述方法包括: 步骤I)、服务器将构成数据的所有数据块的指纹进行分类,并且将不同类别的指纹分别发送到存储相应类别指纹的数据摘要的不同摘要存储节点; 步骤2)、在所述摘要存储节点中查询接收到的指纹,得到该指纹在每个去重节点的命中分数,将该命中分数返回所述服务器; 步骤3)、所述服务器根据每个指纹在每个去重节点的命中分数得到每个去重节点的汇总分数,根据该汇总分数确定目标去重节点。
2.根据权利要求1所述的方法,步骤3)中,根据汇总分数确定目标去重节点包括: 所述服务器结合每个去重节点的存储状况和汇总分数来确定目标去重节点。
3.根据权利要求1或2所述的方法,其中,每个摘要存储节点存储每个去重节点已存储数据的所有数据块指纹中一类指纹的数据摘要,其中指纹类别的总数与摘要存储节点的个数相同。
4.根据权利要求1或2所述的方法,其中,所述摘要存储节点使用BloomFilter来存储每个去重节点的数据摘要。
5.根据权利要求1或2所述的方法,在步骤I)中,服务器用所述摘要存储节点的个数对构成数据的所有数据块的指纹取模,将余数相同的指纹分为一类。
6.根据权利要求4所述的方法,其中,步骤2)包括: 步骤21)、在所述摘要存储节点中,使用存储每个去重节点的数据摘要的BI oom Filter所采用的哈希函数来计算接收到的指纹的哈希值; 步骤22)、根据该哈希值查询关于每个去重节点的Bloom Filter的对应位; 步骤23)、根据对应位计算命中分数; 步骤24)、将该命中分数返回所述服务器。
7.根据权利要求2所述的方法,其中,步骤3)包括: 步骤31)、对于每个去重节点,所述服务器计算所有指纹在该去重节点的命中分数的和,得到该去重节点的汇总分数; 步骤32)、所述服务器将每个去重节点的汇总分数与存储利用率的倒数加权求和,取值最大的去重节点作为目标去重节点。
8.根据权利要求1或2所述的方法,还包括: 步骤O)、服务器从客户端接收数据,将该数据进行分块,并且计算每个数据块的指纹。
9.根据权利要求1或2所述的方法,还包括: 步骤4)、所述服务器将所述数据发送到所述目标去重节点进行去重。
10.根据权利要求9所述的方法,还包括: 步骤5)、所述摘要存储节点更新所述目标去重节点的数据摘要。
【文档编号】H04L29/08GK103631933SQ201310655727
【公开日】2014年3月12日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】刘厚贵, 邢晶, 霍志刚, 安学军 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1