确定存储服务器的方法及分布式存储系统的制作方法

文档序号:7981097阅读:295来源:国知局
确定存储服务器的方法及分布式存储系统的制作方法
【专利摘要】本发明公开了一种确定存储服务器的方法,当用于存储第一存储数据的第一存储服务器处于非工作状态时,基于一预设策略,获取所述第一存储数据的与第一哈希值不同的第二哈希值,并将所述第一存储数据存储到与所述第二哈希值对应的第二存储服务器中。本发明还提供了一种分布式存储系统,包括第一获取单元、服务器确定单元和存储单元,当用于存储第一存储数据的第一存储服务器处于非工作状态时,基于一预设策略,获取所述第一存储数据的与第一哈希值不同的第二哈希值,并将所述第一存储数据存储到与所述第二哈希值对应的第二存储服务器中。
【专利说明】确定存储服务器的方法及分布式存储系统
【技术领域】
[0001]本发明涉及分布式存储领域,尤其涉及一种确定存储服务器的方法及分布式存储系统。
【背景技术】
[0002]随着移动通信网、互联网和广电网之间的飞速发展和不断融合,人们越来越依赖网络,如此,网络中需要存储的数据量越来越大,需要进行大规模存储网络中数据,为了满足大规模存储应用的需要,一般通过分布式存储系统来存储网络中需要存储的数据。现有的分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,并采用一致性哈希算法来将所述需要存储的数据分布到相应的存储服务器中,能够有效提高了系统的可靠性、可用性和存取效率,还易于扩展。
[0003]但本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
[0004]在分布存储系统中采用一致性哈希算法来给需要存储的数据分配存储服务器时,一旦所述多台存储服务器中有一台第一存储服务器出现故障,就会导致存储到所述第一存储服务器中所有数据存储到第一个与所述第一存储服务器顺时针相连的第二存储服务器中,如此,就会促使所述第二存储服务器中需要存储的数据增多以及所述第二存储服务器的存储压力增大,在进行大量数据存储时,会导致存储到所述第二存储服务器的数据达到或超过所述第二存储服务器的极限,导致存储到所述第二存储服务器的存储数据会出现丢失的问题,此外,存储到所述第二存储服务器的存储数据增多,其他存储服务器的存储服务器不会进行改变,导致所述多台存储服务器每个存储服务器中存储的数据不均衡的问题。比如:如图1所示,一个互联网论坛设置有存储服务器A、存储服务器B、存储服务器C和存储服务器D这4个存储服务器来存储用户数据,采用一致性哈希算法为每个存储服务器分配一个数值,假设为上述4个存储服务器的哈希函数的值的空间为0-400,且所述存储服务器A的哈希值(hash值)为0,所述存储服务器B的hash值为100,所述存储服务器C的hash值为200,所述存储服务器D的hash值为300,然后在存储所述用户数据时对用户的Key值进行哈希,将获取的数值作为所述用户数据的哈希值(hash值),在根据所述用户数据hash值的在0-400之间的取值范围,确定所述用户数据该存储到哪个存储服务器中。假设所述存储服务器B出现故障不能工作,那么应该存储到所述存储服务器B中的所有用户数据都会存储到所述存储服务器C中,即用户数据的hash值在0-100之内的用户数据都会存储到所述存储服务器C中,一旦当前存储的用户数据量过大,就会导致所述存储服务器C存储压力变大,会出现丢失用户数据的问题。

【发明内容】

[0005]本申请实施例通过提供一种确定存储服务器的方法及分布式存储系统,能够进一步提高分布式存储系统中每个存储服务器中存储数据的分布均衡且还能降低丢失用户数据的概率,提高所述分布式存储系统的稳定性。
[0006]本申请实施例提供了一种确定存储服务器的方法,应用于包括至少两个存储服务器的分布式存储系统中,所述方法包括:
[0007]当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时;
[0008]基于一预设策略,获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同;
[0009]基于所述第二哈希值,从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器;
[0010]将所述第一存储数据存储到所述第二存储服务器中。
[0011]可选的,所述当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,具体包括:获取所述第一存储数据的第一哈希值;基于所述第一哈希值,从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器;在所述第一存储数据未存储到所述第一存储服务器时,确定所述第一存储服务器处于非工作状态。
[0012]可选的,所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括:获取所述第一存储数据的第一 Key值;基于一预设规则,获取所述第一存储数据的第二 Key值,其中,所述第二 Key值与所述第一 Key值不相同;
[0013]基于所述第二 Key值,获取所述第一存储数据的第二哈希值。
[0014]可选的,所述基于一预设规则,获取所述第一存储数据的第二 Key值,具体包括:基于所述第一 Key值,获取所述第一存储数据的第二 Key值。
[0015]可选的,所述基于所述第一 Key值,获取所述第一存储数据的第二 Key值,具体包括:增加或减少所述第一 Key值的位数,获得第一数据;将所述第一数据作为所述第一存储数据的第二 Key值。
[0016]可选的,所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括:获取所述第一存储数据的数据信息;基于一预设规则,从所述数据信息中确定一个第二数据为所述第一存储数据的第二 Key值,其中,所述第二数据与所述第一 Key值不相同;基于所述第二 Key值,获取所述第一存储数据的第二哈希值。
[0017]在上述方法的基础之上,本发明还提供了一种分布式存储系统,包括至少两个存储服务器,所述系统包括:
[0018]第一获取单元,当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,基于一预设策略,用于获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同;
[0019]服务器确定单元,基于所述第二哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器;
[0020]存储单元,用于将所述第一存储数据存储到所述第二存储服务器中。
[0021]可选的,所述第一获取单元设置有判断单元,通过获取所述第一存储数据的第一哈希值,并基于所述第一哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器,在所述第一存储数据未存储到所述第一存储服务器时,用于确定所述第一存储服务器处于非工作状态。
[0022]可选的,所述第一获取单元设置有第二哈希值获取单元,通过获取所述第一存储数据的第一 Key值,在基于一预设规则,用于获取所述第一存储数据的第二 Key值,其中,所述第二 Key值与所述第一 Key值不相同,在基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
[0023]可选的,所述第二哈希值获取单元包括第二 Key值获取单元,基于所述第一 Key值,用于获取所述第一存储数据的第二 Key值。
[0024]可选的,所述第二 Key值获取单元是通过增加或减少所述第一 Key值的位数,获得第一数据,并将所述第一数据作为所述第一存储数据的第二 Key值。
[0025]可选的,所述第一获取单元设置有第三哈希值获取单元,通过获取所述第一存储数据的数据信息,再基于一预设规则,用于从所述数据信息中确定一个第二储数据为所述第一存储数据的第二 Key值,其中,所述第二数据与所述第一 Key值不相同,再基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
[0026]本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0027]其一、由于本申请实施例在根据所述第一存储数据的第一哈希值确定了分布式存储系统中有一第一存储服务器处于非工作状态时,获取所述第一存储数据的第二哈希值,所述第二哈希值与所述第一哈希值不相同,再基于所述第二哈希值,可以从所述分布式存储系统中确定一个与第一存储服务器不同的第二存储服务器,然后将所述第一存储数据存储进所述第二存储服务器中,如此,能够分散的将所述第一存储数据分配到分布式存储系统中除所述第一存储服务器的其他存储服务器中,不会将所有应该存储于所述第一存储服务器的数据存储到第一个与 所述第一存储服务器顺时针相连的第三存储服务器中,减少了所述第三存储服务器中存储压力,促使所述分布式存储系统中的每个存储服务器的数据分布均衡,并提高了系统运行的稳定性。
[0028]其二、由于本申请实施例通过减少或增加所述第一存储数据的第一 Key值的位数,获取增加或减少所述第一 Key值位数后的数值为所述第一存储数据的第二 Key值,由于所述第一存储数据的第一 Key值和所述第二 Key值的差别很大,导致所述第一存储数据的第一哈希值与所述第一存储数据的第二哈希值的差别也很大,如此,所述第一存储数据对应的第二存储服务器的分布更加分散,进一步促使存储数据均衡分布在所述分布式存储系统的每个存储服务器中,在进行大量数据存储时,能够降低所述分布式存储系统丢失存储数据的概率,提高所述分布式系统的稳定性。
【专利附图】

【附图说明】
[0029]图1为现有技术中分布式存储系统使用一致性哈希算法的结构示意图;
[0030]图2为本申请实施例中确定存储服务器的方法的流程图;
[0031]图3为本申请实施例中分布式存储系统使用一致性哈希算法的结构示意图;
[0032]图4为本申请实施例中分布式存储系统哈希取值在0-2~32结构示意图;
[0033]图5为本申请实施例中分布式存储系统的功能模块图。
具体实施例[0034]本申请实施例通过提供一种确定存储服务器的方法及分布式存储系统,解决了现有技术中在分布式存储系统中有存储服务器处于非工作状态时,采用一致性哈希算法会导致所述分布式存储系统中每个存储服务器中存储的数据分布不均衡,以及在存储大量数据时,会导致所述分布式存储系统中某些存储服务器的存储压力过大,出现丢失用户数据的问题,实现了在所述分布式存储系统中有存储服务器处于非工作状态时,促使用户数据均衡分布在所述分布式存储系统中每个存储服务器中,在存储大量数据时,能够降低所述分布式存储系统的整体存储压力,以降低丢失用户数据的概率。
[0035]本申请实施例的技术方案为解决上述区分存储问题,总体思路如下:
[0036]在获取所述第一存储数据的第一哈希值之后,基于所述第一哈希值确定所述第一存储数据对应的第一存储服务器,在所述第一存储服务器处于非工作状态时,基于一预设策略,获取所述第一存储数据的与所述第一哈希值不同的第二哈希值,基于所述第二哈希值,从所述分布式存储系统确定一个与所述第一存储服务器不同的第二存储服务器,将所述第一存储数据存储到所述第二存储服务器中。
[0037]由于在所述第一存储服务器处于非工作状态时,将所述第一存储数据的哈希值进行改变,导致所述第一存储数据对应的存储服务器也会进行改变,在有大量的第一存储数据需要存储到所述第一存储服务器时,能够促使大量的第一存储数据能够分散的存储到所述分布式存储系统中其他存储服务器中,而不会导致所有存储到所述第一存储服务器的大量数据会存储到第一个与所述第一存储服务器顺时针相连的第三存储服务器中,降低了所述第三存储服务器的存储压力,能够促使所述分布式存储系统中每个存储服务器的数据均衡分布,降低丢失用户数据的概率。
[0038]为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
[0039]本发明提供了一种确定存储服务器的方法,应用于包括至少两个存储服务器的分布式存储系统中,如图2所示,所述方法包括:
[0040]S101、当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,基于一预设策略,获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同:
[0041]具体来讲,在所述第一存储数据需要存储到所述分布式存储系统时,会从所述第一存储数据中取一组数据作为第一 Key值,在通过哈希函数对所述第一 Key值进行哈希得到所述第一存储数据的第一哈希值,基于所述第一哈希值就可以确定一个第一存储服务器来存储所述第一存储数据,在所述第一存储数据无法存储进所述第一存储服务器时,就可以确认所述第一存储服务器处于非工作状态,即可以在基于所述第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态。具体讲,根据所述第一存储数据的第一哈希值,可以确定与所述第一存储数据对应的第一存储服务器,用于将所述第一存储数据存储到所述第一服务器中,当所述第一存储数据无法存储进所述第一存储服务器中,就可以确定所述第一存储服务器处于非工作状态。比如:如图1所示,比如有数据PO需要存储到图1中的存储服务器中时,将所述数据PO的IP进行哈希,假设获取所述数据PO的哈希值为50,那么所述数据pO对应的存储服务器为B,当所述数据pO无法存储到所述存储服务器B中时,则可以确定,所述存储服务器B处于非工作状态。[0042]其中,在确定所述第一存储服务器处于非工作状态时,基于一预设策略,获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同。具体讲,就是当第一存储服务器处于非工作状态时,基于一预设策略,将所述第一存储数据的哈希值进行改变,在所述哈希值进行改变之后,那么所述第一存储数据对应的存储服务器可能不会是所述第一存储服务器,而可能是另外的存储服务器。比如:如图1所示,数据PO的哈希值为50,则所述数据PO应该存储到存储服务器B中,当所述存储服务器B处于非工作状态,所述数据PO应该存储到存储服务器C中,这时,将所述数据PO的哈希值增加5倍,则所述数据PO的哈希值为250,则所述数据pO应该存储到存储服务器D中,与所述存储服务器C不在对应。
[0043]此外,所述当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,具体包括:获取所述第一存储数据的第一哈希值,再基于所述第一哈希值,从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器,在所述第一存储数据未存储到所述第一存储服务器时,确定所述第一存储服务器处于非工作状态。即,当第一存储数据需要进行存储时,通过对所述第一存储数据进行哈希,获取所述第一存储数据的第一哈希值,根据所述第一哈希值确定用于存储所述第一存储数据的第一存储服务器,检测所述第一存储数据是否能够存储到所述第一存储服务器中,在所述第一存储数据未存储到所述第一存储服务器中时,可以确定所述第一存储服务器处于非工作状态。比如:如图1所示,当数据PO的哈希值为50,则所述数据pO应该存储到存储服务器B中,当所述数据pO未存储到所述存储服务器B中,则可以判定所述存储服务器B处于非工作状态。
[0044]在具体实现过程中,在所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括:获取所述第一存储数据的第一 Key值,基于一预设规则,获取所述第一存储数据的第二 Key值,其中,所述第二 Key值与所述第一 Key值不相同,在基于所述第二 Key值,获取所述第一存储数据的第二哈希值。具体来讲,通过首先获取所述第一存储数据的第一哈希值对应的第一 Key值,在按预设规则将所述第一 Key值转变成所述第二 Key值,而且所述第二 Key值与所述第一 Key值不相同,在将所述第二 Key值进行哈希得到所述第一存储数据的第二哈希值。
[0045]其中,所述基于一预设规则,获取所述第一存储数据的第二 Key值,具体包括:基于所述第一 Key值,获取所述第一存储数据的第二 Key值。具体讲,就是获取所述第一存储数据的第一 Key值之后,将所述第一 Key值进行改变,将改变后的第一 Key值的数值作为所述第一存储数据的第二 Key值。比如:如图1所示,数据pO的哈希值为50,对应的第一 Key值为500,当所述数据pO对应的存储服务器B处于非工作状态时,将所述第一 Key值增大5倍,得到所述数据PO的第二 Key值为2500,对所述第二 Key值进行哈希,获取所述数据pO的第二哈希值为250,与存储服务器D对应。即,所述数据pO会存储到所述存储服务器D中,而不会存储到存储服务器C中。
[0046]再者,所述基于所述第一 Key值,获取所述第一存储数据的第二 Key值,具体包括:增加或减少所述第一 Key值的位数,获得第一数据,并将所述第一数据作为所述第一存储数据的第二 Key值。具体讲,将增加或减少所述第一 Key值的位数后的第一数据作为所述第一存储数据的第二 Key值,通过哈希对所述第二 Key值进行哈希,获取的第二哈希值。由于所述第一 Key值与所述第二 Key值的数值相差很大,如此,促使所述与所述第一 Key值对应的第一哈希值与所述第二哈希值的数值也相差较大,导致所述第二哈希值对应的第二存储服务器与所述第一哈希值对应的第一存储服务器不同。比如:如图1所示,数据PO的哈希值为50,对应的第一 Key值为500,在所述数据pO的第一 Key值增加一位数作为所述数据PO的第二 Key值。即,所述第二 Key值为5000,所述数据pO对应的第二哈希值为500,基于所述第二哈希值,可以确定所述数据PO应该存储到所述存储服务器A中。
[0047]另外,所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括:获取所述第一存储数据的数据信息,再基于一预设规则,从所述数据信息中确定一个第二数据为所述第一存储数据的第二 Key值,其中,所述第二数据与所述第一 Key值不相同,再基于所述第二 Key值,获取所述第一存储数据的第二哈希值。具体讲,就是重新从所述第一存储数据中选取一个第二数据为所述第二 Key值,并且所述第一存储数据中选取的第二数据与所述第一 Key值不相同。比如:所述第一存储数据包含有192.168.0.1的数据片段,在对所述第一存储数据进行哈希的过程中,取192168这个数值进行哈希,也就是所述第一 Key值为192168,当所述第一存储数据对应的存储服务器宕机之后,重新取1680这个数值来进行哈希,也就是所述第一存储数据的第二 Key值为1680,由于所述第一 Key值和所述第二Key值的数值相差很大,因此,导致所述第一存储数据的第一哈希值与第二哈希值也会相差很大。
[0048]其次,所述基于一预设策略,获取所述第一存储数据的第二哈希值,还包括:基于所述第一哈希值,获取所述第一存储数据的第二哈希值。具体讲,就是根据所述哈希值的取值范围和存储服务器的数量,将所述第一哈希值进行调整,比如将所述第一哈希值增大若干倍或将所述第一哈希值降低若干倍,以上所述第一哈希值与第二哈希值相差较大。比如:如图3所示,假设有6台服务器来为一个论坛提供服务,分别为存储服务器A、存储服务器B、存储服务器C、存储服务器D、存储服务器E和存储服务器F,假设6台服务器的哈希函数的值的空间为0-2000,且所述存储服务器A的哈希值为O也可以为2000,所述存储服务器B的哈希值为250,所述存储服务器C的哈希值为750,所述存储服务器D的哈希值为1000,所述存储服务器E的哈希值为1250和所述存储服务器F的哈希值为1750,根据6台存储服务器中每个存储服务器的哈希值,将其分布在如图3所示的环上;且有3个数据P、P1和P2的哈希值分别对应300、500和650,如此,所述数据P、P1和P2应该存储到所述存储服务器C中,当所述存储服务器C处于不能工作状态时,经过顺时针查找,所述存储服务器D来存储数据P、P1和P2,在存储数据量较大时会导致所述存储服务器D的压力较大,会出现丢失数据的问题,因此,将所述数据P、Pl和P2的哈希值都增大3倍,则所述数据P对应的第二哈希值为900,所述数据Pl对应的第二哈希值为1500和数据P2对应的第二哈希值为1950。
[0049]S102、基于所述第二哈希值,从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器:
[0050]具体来讲,当所述第一存储数据对应的第一存储服务器处于非工作状态时,获取所述第一存储数据的第二哈希值,通过所述第二哈希值的数值确定所述第一存储数据应该存储到第二存储服务器,所述第二存储服务器与所述第一存储服务器不同。比如:如图1所示,假设数据PO的第一哈希值为50,则所述数据PO应该存储到所述存储服务器B中,在所述存储服务器B处于非工作状态时,得到的所述数据pO的第二哈希值为250,则所述数据PO应该存储到所述存储服务器D中。
[0051]其中,在确定了所述第一存储数据的第二哈希值后,根据所述第二哈希值的取值范围,确定用于存储所述第一存储数据的第二存储服务器,其中,所述第二存储服务器与所述第一存储服务器不同。当然,在对所述第一存储数据的哈希值进行改变之后,基于所述第二哈希值,确定用于存储所述第一存储数据的第二存储服务器与所述第一存储服务器相同,由于所述第一存储服务器处于非工作状态,则需顺时针查找到与所述第一存储服务器相邻的第一个存储服务器来存储所述第一存储数据。即,基于所述第二哈希值,从所述至少两个存储服务器中确定一个用于存储所述第一存储数据的第二存储服务器,所述第二存储服务器与所述第一存储服务器是不相同的。
[0052]在具体实现过程,通过一致性算法在分配所述存储服务器时,首先会对求出每个存储服务器的哈希值,将所述每个存储服务器的作为所述哈希函数的参数,基于所述每个存储服务器的哈希值,将所述每个存储服务器分布到O?2~32的一个圆环上。假设有数据A需要进行存储时,求出所述数据A的第一哈希值,所述第一哈希值会对圆环上某一个点,如果该点对应没有映射到具体的某个存储服务器的节点,那么顺时针查找,直到第一次找到有存储服务器的节点,该节点就是确定的目标节点,如果超过了 2~32仍然找不到节点,则命中第一个存储服务器节点。比如:如图4所示,有A,B,C,D和E五台存储服务器,通过一定的hash算法我们将其分布到如图4所示的环上,假设数据Q的哈希值介于A?B之间,那么命中的存储服务器应该是B ;若假设数据Q的哈希值大于2~32,那么命中的存储服务器应该是A。
[0053]S 103、将所述第一存储数据存储到所述第二存储服务器中:
[0054]具体来讲,就是在确定了用于存储所述第一存储数据的第二存储服务器之后,将所述第一存储数据存储到所述第二存储服务器中。比如:如图3所示,当存储服务器C处于非工作状态时,需要将数据P、P1和P2的哈希值分别对应300、500和650进行改变,数据P对应的第二哈希值为900,所述数据Pl对应的第二哈希值为1500和数据P2对应的第二哈希值为1950。基于所述数据P、P1和P2的哈希值,可以确定所述数据P应该存储到存储服务器D中,所述数据Pl应该存储到存储服务器F中,所述数据P2应该存储到存储服务器A中。这样,促使所述数据P、P1和P2不会全部存储到所述存储服务器D中,在有大量数据进行存储时,将哈希取值存储服务器B和存储服务器C之间的所有存储数据存储到存储服务器D、E、F和A中,而不会将所述所有存储数据只存储到存储服务器D中,从而降低了所述存储服务器D存储的压力,能够降低存储数据丢失的概率,并能促使所述存储服务器中存储的数据分布的更加均衡。
[0055]在上述方法的基础之上,本申请实施例还提供了一种分布式存储系统,包括至少两个存储服务器,如图5所示,所述系统包括:
[0056]第一获取单元,当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,基于一预设策略,用于获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同;
[0057]服务器确定单元,基于所述第二哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器;
[0058]存储单元,用于将所述第一存储数据存储到所述第二存储服务器中。[0059]所述第一获取单元设置有判断单元,通过获取所述第一存储数据的第一哈希值,并基于所述第一哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器,在所述第一存储数据未存储到所述第一存储服务器时,用于确定所述第一存储服务器处于非工作状态。
[0060]所述第一获取单元设置有第二哈希值获取单元,通过获取所述第一存储数据的第一 Key值,在基于一预设规则,用于获取所述第一存储数据的第二 Key值,其中,所述第二Key值与所述第一 Key值不相同,在基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
[0061 ] 所述第二哈希值获取单元包括第二 Key值获取单元,基于所述第一 Key值,用于获取所述第一存储数据的第二 Key值。
[0062]所述第二 Key值获取单元是通过增加或减少所述第一 Key值的位数,获得第一数据,并将所述第一数据作为所述第一存储数据的第二 Key值。
[0063]所述第一获取单元设置有第三哈希值获取单元,通过获取所述第一存储数据的数据信息,再基于一预设规则,用于从所述数据信息中确定一个第二储数据为所述第一存储数据的第二 Key值,其中,所述第二数据与所述第一 Key值不相同,再基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
[0064]其中,所述第一获取单元中可以同时设置有第二哈希值获取单元和第三哈希值获取单元,基于实际情况,可以通过选择所述第二哈希值获取单元或所述第三哈希值获取单元来获取所述第一存储数据的第二哈希值,在有大量的第一存储数据时,用于促使所述大量的第一存储数据更均匀的分布在其他存储服务器中。同理,所述第一获取单元中可以选择性的设置所述第二哈希值获取单元或者所述第三哈希值获取单元,同样能够将大量的第一存储数据均匀分布在其他存储服务器中。
[0065]上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
[0066]其一、由于本申请实施例在根据所述第一存储数据的第一哈希值确定了分布式存储系统中有一第一存储服务器处于非工作状态时,获取所述第一存储数据的第二哈希值,所述第二哈希值与所述第一哈希值不相同,再基于所述第二哈希值,可以从所述分布式存储系统中确定一个与第一存储服务器不同的第二存储服务器,然后将所述第一存储数据存储进所述第二存储服务器中,如此,能够分散的将所述第一存储数据分配到分布式存储系统中除所述第一存储服务器的其他存储服务器中,不会将所有应该存储于所述第一存储服务器的数据存储到第一个与所述第一存储服务器顺时针相连的第三存储服务器中,减少了所述第三存储服务器中存储压力,促使所述分布式存储系统中的每个存储服务器的数据分布均衡,并提高了系统运行的稳定性。
[0067]其二、由于本申请实施例通过减少或增加所述第一存储数据的第一 Key值的位数,获取增加或减少所述第一 Key值位数后的数值为所述第一存储数据的第二 Key值,由于所述第一存储数据的第一 Key值和所述第二 Key值的差别很大,导致所述第一存储数据的第一哈希值与所述第一存储数据的第二哈希值的差别也很大,如此,所述第一存储数据对应的第二存储服务器的分布更加分散,进一步促使存储数据均衡分布在所述分布式存储系统的每个存储服务器中,在进行大量数据存储时,能够降低所述分布式存储系统丢失存储数据的概率,提高所述分布式系统的稳定性。[0068]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0069]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种确定存储服务器的方法,应用于包括至少两个存储服务器的分布式存储系统中,其特征在于,所述方法包括: 当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时; 基于一预设策略,获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同; 基于所述第二哈希值,从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器; 将所述第一存储数据存储到所述第二存储服务器中。
2.如权利要求1所述的方法,其特征在于,所述当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,具体包括: 获取所述第一存储数据的第一哈希值; 基于所述第一哈希值,从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器; 在所述第一存储数据未存储到所述第一存储服务器时,确定所述第一存储服务器处于非工作状态。
3.如权利要求1所述的方法,其特征在于,所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括: 获取所述第一存储数据`的第一 Key值; 基于一预设规则,获取所述第一存储数据的第二 Key值,其中,所述第二 Key值与所述第一 Key值不相同; 基于所述第二 Key值,获取所述第一存储数据的第二哈希值。
4.如权利要求3所述的方法,其特征在于,所述基于一预设规则,获取所述第一存储数据的第二 Key值,具体包括: 基于所述第一 Key值,获取所述第一存储数据的第二 Key值。
5.如权利要求4所述的方法,其特征在于,所述基于所述第一Key值,获取所述第一存储数据的第二 Key值,具体包括: 增加或减少所述第一 Key值的位数,获得第一数据; 将所述第一数据作为所述第一存储数据的第二 Key值。
6.如权利要求1所述的方法,其特征在于,所述基于一预设策略,获取所述第一存储数据的第二哈希值,具体包括: 获取所述第一存储数据的数据信息; 基于一预设规则,从所述数据信息中确定一个第二数据为所述第一存储数据的第二Key值,其中,所述第二数据与所述第一 Key值不相同; 基于所述第二 Key值,获取所述第一存储数据的第二哈希值。
7.一种分布式存储系统,包括至少两个存储服务器,其特征在于,所述系统包括: 第一获取单元,当基于第一存储数据的第一哈希值从所述至少两个存储服务器中确定的第一存储服务器处于非工作状态时,基于一预设策略,用于获取所述第一存储数据的第二哈希值,其中,所述第二哈希值与所述第一哈希值不相同;服务器确定单元,基于所述第二哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储服务器不同的第二存储服务器; 存储单元,用于将所述第一存储数据存储到所述第二存储服务器中。
8.如权利要求7所述的系统,其特征在于,所述第一获取单元设置有判断单元,通过获取所述第一存储数据的第一哈希值,并基于所述第一哈希值,用于从所述至少两个存储服务器中确定一个与所述第一存储数据对应的第一存储服务器,在所述第一存储数据未存储到所述第一存储服务器时,用于确定所述第一存储服务器处于非工作状态。
9.如权利要求7所述的系统,其特征在于,所述第一获取单元设置有第二哈希值获取单元,通过获取所述第一存储数据的第一 Key值,在基于一预设规则,用于获取所述第一存储数据的第二 Key值,其中,所述第二 Key值与所述第一 Key值不相同,在基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
10.如权利要求9所述的系统,其特征在于,所述第二哈希值获取单元包括第二Key值获取单元,基于所述第一 Key值,用于获取所述第一存储数据的第二 Key值。
11.如权利要求10所述的系统,其特征在于,所述第二Key值获取单元是通过增加或减少所述第一 Key值的位数,获得第一数据,并将所述第一数据作为所述第一存储数据的第二 Key 值。
12.如权利要求7所述的系统,其特征在于,所述第一获取单元设置有第三哈希值获取单元,通过获取所述第一存储数据的数据信息,再基于一预设规则,用于从所述数据信息中确定一个第二储数据为所述第一存储数据的第二 Key值,其中,所述第二数据与所述第一Key值不相同,再基于所述第二 Key值,用于获取所述第一存储数据的第二哈希值。
【文档编号】H04L29/08GK103546522SQ201210247856
【公开日】2014年1月29日 申请日期:2012年7月17日 优先权日:2012年7月17日
【发明者】赵云涛, 何高 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1