说明书
发明名称 : 基于分布式存储系统的数据存储方法、存储节点及介质
[0001]
本申请申明享有2019年4月29日递交的申请号为201910356590.4、名称为“基于分布式存储系统的数据存储方法、存储节点及介质”中国专利申请的优先权,该中国专利申请的整体内容以参考的方式结合在本申请中。
[0002]
本申请属于人工智能技术领域,尤其涉及一种基于分布式存储系统的数据存储方法、存储节点及计算机非易失性可读存储介质。
[0003]
随着移动互联网、物联网等技术的飞速发展,全球数据量呈爆炸式增长。面对大规模的数据量,目前业内通常采用分布式存储系统来对大量数据进行存储。分布式存储系统是为了解决集中式存储系统在容量、性能等方面的瓶颈,通过把数据分散存储在多台存储设备上,为大规模的存储应用提供大容量、高性能、高可用、扩展性好的存储服务。而在对大量数据进行分布式存储时,现有的存储方法通常是由服务器对各个存储节点当前的存储状态进行评估,进而根据各个存储节点当前的存储状态选择合适的存储节点进行数据存储,然而,由于分布式存储系统中的存储节点数目较多,若由服务器依次对每个存储节点的存储状态进行评估,则会占用服务器大量的计算资源,降低了数据存储效率。
[0004]
本申请实施例提供了一种基于分布式存储系统的数据存储方法、存储节点及计算机非易失性可读存储介质,以解决现有的基于分布式存储系统的数据存储方法在存储数据时会占用服务器大量的计算资源,数据存储效率较低的问题。
[0005]
第一方面,提供了一种基于分布式存储系统的数据存储方法,包括:
[0006]
若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据;
[0007]
若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值;
[0008]
基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值;
[0009]
基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[0010]
第二方面,提供了一种存储节点,包括:
[0011]
第一检测单元,用于若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据;
[0012]
第一获取单元,用于若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值;
[0013]
第一确定单元,用于基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值;
[0014]
第二确定单元,用于基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[0015]
第三方面,提供了一种存储节点,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时上述的基于分布式存储系统的数据存储方法的步骤。
[0016]
第四方面,提供了一种计算机非易失性可读存储介质,所述计算机非易失性可读存储介质存储有计算机可读指令,所述计算机可读指令被处理器执行时实现上述的基于分布式存储系统的数据存储方法的步骤。
[0017]
本实施例提供的一种基于分布式存储系统的数据存储方法当服务器需要存储数据时,其只需将数据存储指令发送至分布式存储系统中的其中一个存储节点,若该存储节点当前不满足预设存储条件,则由该存储节点基于各个其他存储节点当前的预设影响因子的值计算各个其他存储节点当前的总存储得分值,并基于各个其他存储节点当前的总存储得分值确定当前适合存储数据的目标存储节点,且将目标存储节点的标识返回至服务器,以使服务器将待存储数据存储至目标存储节点,由于本申请实施例无需服务器对各个存储节点的存储状态进行评估,因此,大大节省了服务器的计算资源,提高了数据存储效率。
[0018]
图1是本申请实施例提供的一种基于分布式存储系统的数据存储方法的实现流程图;
[0019]
图2是本申请实施例提供的一种基于分布式存储系统的数据存储方法中S3的具体实现流程图;
[0020]
图3是本申请实施例提供的一种基于分布式存储系统的数据存储方法中S1的具体实现流程图;
[0021]
图4是本申请实施例提供的一种存储节点的结构框图;
[0022]
图5是本申请另一实施例提供的一种存储节点的结构框图。
[0023]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0024]
请参阅图1,图1是本申请实施例提供的一种基于分布式存储系统的数据存储方法的实现流程图。分布式存储系统通常由客户端、服务器及分布式存储节点组成,客户端负责发送数据读写请求、缓存数据等;服务器负责管理数据及处理客户端的数据读写请求,是整个系统的核心组件;存储节点负责存储数据,保证数据的可用性和完整性。本实施例中,基于分布式存储系统的数据存储方法的执行主体可以是分布式存储系统中的任一存储节点。存储节点可以是智能手机、平板电脑或台式电脑等终端设备。如图1所示的基于分布式存储系统的数据存储方法包括以下步骤:
[0025]
S1:若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据。
[0026]
本申请实施例中,当客户端有数据需要存储时,可以向服务器发送数据写请求,该数据写请求中携带待存储数据。服务器接收到客户端发送的数据写请求时,基于该数据写请求中携带的待存储数据生成数据存储指令,并将该数据存储指令发送至分布式系统中的其中一个存储节点,该存储节点接收到服务器发送的数据存储指令后,检测本存储节点当前是否满足预设存储条件。
[0027]
其中,预设存储条件可以根据实际需求设置。示例性的,假设通过与存储节点的可靠性及忙碌性相关的总存储得分值去评估存储节点的存储能力,且存储节点的可靠性越高、忙碌性越低,总存储得分值越高,那么,此处的预设存储条件可以是:存储节点的总存储得分值大于第一预设得分值阈值。此情况下,存储节点在接收到数据存储指令后,需计算其当前的总存储得分值,并将其当前的总存储得分值与第一预设得分值阈值进行比较,进而检测本存储节点当前是否满足预设存储条件。其中,第一预设得分值阈值可根据实际需求设置。
[0028]
存储节点若检测到其当前满足预设存储条件,则从数据存储指令中提取并存储待存储数据;存储节点若检测到其当前不满足预设存储条件,则执行S2。
[0029]
S2:若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值。
[0030]
需要说明的是,处于同一分布式存储系统中的各个存储节点之间均互相建立了网络连接,即分布式系统中的各个存储节点之间是互联的。本申请实施例中,本存储节点若检测到其当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值。其中,预设影响因子可以为与存储节点的可靠性及忙碌性相关的影响因子。
[0031]
在实际应用中,可以将一天的24小时分为多个时长相等的预设统计周期,每个预设统计周期之间可以间隔预设时间间隔,预设时间间隔的时长可以为0,也可以大于0,具体根据实际需求设置,此处不做限制。分布式存储系统中的各个存储节点会记录其在每个预设统计周期内的预设影响因子的值,且可以在每个预设统计周期对应的结束时刻向外广播其 在当前预设统计周期内的预设影响因子的值。分布式存储系统中的各个存储节点可以接收到其他存储节点广播的其在每一预设统计周期内的预设影响因子的值。分布式存储系统中的各个存储节点接收到其他存储节点广播的每一预设统计周期内的预设影响因子的值后,可以将各个存储节点在每一预设统计周期内的预设影响因子的值分别与各个存储节点的标识关联存储在本地的节点状态信息表中。存储节点的标识可以是存储节点的编号、网际协议(Internet Protocol,IP)地址或媒体访问控制(Media Access Control,MAC)地址等,此处不做限制。
[0032]
作为本申请一实施例,若当前时刻处于某一预设统计周期内,由于该预设统计周期还未结束,因此,本存储节点并未存储其他存储节点在当前时刻所处的预设统计周期内的预设影响因子的值,此情况下,本存储节点可以将当前时刻所处的预设统计周期的上一预设统计周期确定为当前时刻对应的预设统计周期。本存储节点可以从节点状态信息表中获取各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值。
[0033]
S3:基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值。
[0034]
本申请实施例中,本存储节点获取到各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值后,基于各个其他存储节点在当前时刻对应的预设统计周期内的各个预设影响因子的值,计算各个其他存储节点当前的总存储得分值,其中,存储节点的总存储得分值越高,表明其存储能力及存储优先级越高。
[0035]
作为本申请一实施例,预设影响因子可以包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子。其中,用于表征存储节点的可靠性的影响因子可以包括但不限于:在线时长及重启次数等;用于表征存储节点的忙碌性的影响因子可以包括:接收到的数据存储指令的次数。基于此,S3具体可以包括以下步骤:
[0036]
S31:基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:
[0038]
其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1。
[0039]
S32:基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:
[0041]
其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1。
[0042]
S33:基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[0043]
本实施例中,本存储节点得到各个其他存储节点当前的可靠性得分值及忙碌性得分值后,基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[0044]
基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下:
[0045]
TotalScore
else=A
1·Reliability
else+A
2·Busy
else;
[0046]
其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[0047]
在实际应用中,预设可靠性得分值权重及预设忙碌性得分值权重可根据实际需求设置,此处不做限制。
[0048]
S4:基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[0049]
本申请实施例中,本存储节点得到各个其他存储节点当前的总存储得分值后,基于各个存储节点当前的总存储得分值,从所有其他存储节点中确定目标存储节点。
[0050]
作为本申请一实施例,本存储节点可以基于各个其他存储节点当前的总存储得分值,按照总存储得分值从高到低的顺序将所有其他存储节点进行排序,并将排列靠前的预设数目个其他存储节点确定为目标存储节点。其中,预设数目可以根据实际需求设置,例如预设数目可以为1个或2个以上。
[0051]
作为本申请另一实施例,本存储节点可以将总存储得分值大于预设存储得分值阈值的其他存储节点确定为目标存储节点。
[0052]
本申请实施例中,本存储节点确定了目标存储节点后,将目标存储节点的标识返回至服务器,服务器接收到本存储节点返回的目标存储节点的标识后,基于目标存储节点的标识,向目标存储节点发送数据存储指令,以将待存储数据存储至目标存储节点。
[0053]
作为本申请一实施例,当目标存储节点的数目大于1时,服务器可以将待存储数据存储至其中一个目标存储节点中,也可以将待存储数据分片存储至多个不同的目标存储节点中,具体根据实际需求确定,此处不做限制。
[0054]
以上可以看出,本实施例提供的一种基于分布式存储系统的数据存储方法当服务器需要存储数据时,其只需将数据存储指令发送至分布式存储系统中的其中一个存储节点,若该存储节点当前满足预设存储条件,则该存储节点直接间将数据存储指令中携带的待存储数据进行存储,若该存储节点当前不满足预设存储条件,则由该存储节点基于各个其他存储节点当前的预设影响因子的值计算各个其他存储节点当前的总存储得分值,并基于各个其他存储节点当前的总存储得分值确定当前适合存储数据的目标存储节点,且将目标存储节点的标识返回至服务器,以使服务器将待存储数据存储至目标存储节点,由于本申请实施例无需服务器对各个存储节点的存储状态进行评估,因此,大大节省了服务器的计算资源,提高了数据存储效率。
[0055]
请参阅图3,图3是本申请实施例提供的一种基于分布式存储系统的数据存储方法中S1的具体实现流程图。相对于图1对应的实施例,本实施例的S1具体包括:S11~S13,详述如下:
[0056]
S11:若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值。
[0057]
在实际应用中,可以将一天的24小时分为多个时长相等的预设统计周期,每个预设统计周期之间可以间隔预设时间间隔,预设时间间隔的时长可以为0,也可以大于0,具体根据实际需求设置,此处不做限制。分布式存储系统中的各个存储节点会记录并存储其在每个预设统计周期内的预设影响因子的值。
[0058]
本实施例中,本存储节点在接收到服务器发送的数据存储指令时,获取其在当前时刻对应的预设统计周期内的预设影响因子的值。作为本申请一实施例,若当前时刻处于某一预设统计周期内,由于该预设统计周期还未结束,因此,本存储节点并未存储其在当前时刻所处的预设统计周期内的预设影响因子的值,此情况下,本存储节点可以将当前时刻所处的预设统计周期的上一预设统计周期确定为当前时刻对应的预设统计周期。本存储节点可以获取其在当前时刻对应的预设统计周期内的预设影响因子的值。
[0059]
需要说明的是,本实施例中的预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子。其中,用于表征存储节点的可靠性的影响因子可以包括但不限于:在线时长及重启次数等;用于表征存储节点的忙碌性的影响因子可以包括:接收到的数据存储指令的次数。
[0060]
作为本申请一实施例,本存储节点获取到其在当前时刻对应的预设统计周期内的在线时长、重启次数及接收到的数据存储指令的次数后,可以通过第二可靠性得分值计算公式计算其当前的可靠性得分值,并通过第二忙碌性得分值计算公式计算其当前的忙碌性得分值;
[0063]
其中,Reliability
oneself为本存储节点当前的可靠性得分值,t′
online为本存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num'
on为本存储节点在当前时刻对应的预设统计周期内的重启次数,a>1;
[0066]
其中,Busy
oneself为本存储节点当前的忙碌性得分值,Num'
instruction为本存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1。
[0067]
S12:基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值。
[0068]
本存储节点计算出其当前的可靠性得分值及忙碌性得分值后,基于其当前的可靠性得分值及忙碌性得分值计算其当前的总存储得分值。
[0069]
作为本申请一实施例,本存储节点可以采用第二总存储得分值计算公式,计算其当前的总存储得分值;所述第二总存储得分值计算公式如下:
[0070]
TotalScore
oneself=A
1·Reliability
oneself+A
2·Busy
oneself;
[0071]
其中,TotalScore
oneself为本存储节点当前的总存储得分值,Reliability
oneself为本存储节点当前的可靠性得分值,Busy
oneself为本存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[0072]
在实际应用中,预设可靠性得分值权重及预设忙碌性得分值权重可根据实际需求设置,此处不做限制。
[0073]
S13:基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[0074]
本实施例中,本存储节点计算出其当前的总存储得分值后,将其当前的总存储得分值与预设存储得分值阈值进行比较,基于本存储节点当前的总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[0075]
具体的,若本存储节点当前的总存储得分值大于或等于预设存储得分值阈值,则判定其当前满足预设存储条件;若本存储节点当前的总存储得分值小于预设存储得分值阈值,则判定其当前不满足预设存储条件。
[0076]
以上可以看出,本实施例提供的一种基于分布式存储系统的数据存储方法中,存储节点可以基于其在当前时刻对应的预设统计周期内的预设影响因子的值计算其当前的总存储得分值,并基于其当前的总存储得分值确定其当前是否满足预设存储条件,从而无需服务器对各个存储节点的存储状态进行评估,因此,大大节省了服务器的计算资源,提高了数 据存储效率。
[0077]
请参阅图4,图4是本申请实施例提供的一种存储节点的结构框图。本实施例中的存储节点可以是智能手机、平板电脑等存储节点。该存储节点包括的各单元用于执行图1至图3对应的实施例中的各步骤。具体请参阅图1至图3以及图1至图3所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。参见图4,存储节点400包括:第一检测单元41、第一获取单元42、第一确定单元43及第二确定单元44。其中:
[0078]
第一检测单元41用于若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据;
[0079]
第一获取单元42用于若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值;
[0080]
第一确定单元43用于基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值;
[0081]
第二确定单元44用于基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[0082]
作为本申请一实施例,所述预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子;所述用于表征存储节点的可靠性的影响因子包括在线时长及重启次数;所述用于表征存储节点的忙碌性的影响因子包括接收到的数据存储指令的次数;第一确定单元43具体包括:第一计算单元、第二计算单元及第三计算单元。其中:
[0083]
第一计算单元用于基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:
[0085]
其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1;
[0086]
第二计算单元用于基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:
[0088]
其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1;
[0089]
第三计算单元用于基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[0090]
作为本申请一实施例,第三计算单元具体用于:
[0091]
基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下:
[0092]
TotalScore
else=A
1·Reliability
else+A
2·Busy
else;
[0093]
其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[0094]
作为本申请一实施例,第一检测单元41具体包括:第四计算单元、第五计算单元及对比单元。其中:
[0095]
第四计算单元用于若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值。
[0096]
第五计算单元用于基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值。
[0097]
对比单元用于基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[0098]
作为本申请一实施例,对比单元具体用于:
[0099]
若本存储节点当前的所述总存储得分值大于或等于所述预设存储得分值阈值,则判定本存储节点当前满足预设存储条件;
[0100]
若本存储节点当前的所述总存储得分值小于所述预设存储得分值阈值,则判定本存储节点当前不满足预设存储条件。
[0101]
以上可以看出,本申请实施例中,当服务器需要存储数据时,其只需将数据存储指令发送至分布式存储系统中的其中一个存储节点,若该存储节点当前满足预设存储条件,则该存储节点直接间将数据存储指令中携带的待存储数据进行存储,若该存储节点当前不满足预设存储条件,则由该存储节点基于各个其他存储节点当前的预设影响因子的值计算各个其他存储节点当前的总存储得分值,并基于各个其他存储节点当前的总存储得分值确定当前适合存储数据的目标存储节点,且将目标存储节点的标识返回至服务器,以使服务器将待存储数据存储至目标存储节点,由于本申请实施例无需服务器对各个存储节点的存储状态进行评估,因此,大大节省了服务器的计算资源,提高了数据存储效率。
[0102]
图5是本申请另一实施例提供的一种存储节点的结构框图。如图5所示,该实施例的 存储节点5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机可读指令52,例如基于分布式存储系统的数据存储方法的程序。处理器50执行所述计算机可读指令52时实现上述各个基于分布式存储系统的数据存储方法各实施例中的步骤,例如图1所示的S1至S4。或者,所述处理器50执行所述计算机可读指令52时实现上述图4对应的实施例中各单元的功能,例如,图4所示的单元41至44的功能,具体请参阅图4对应的实施例中的相关描述,此处不赘述。
[0103]
示例性的,所述计算机可读指令52可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器51中,并由所述处理器50执行,以完成本申请。所述一个或多个单元可以是能够完成特定功能的一系列计算机可读指令指令段,该指令段用于描述所述计算机可读指令52在所述存储节点5中的执行过程。例如,所述计算机可读指令52可以被分割成第一检测单元、第一获取单元、第一确定单元及第二确定单元,各单元具体功能如上所述。
[0104]
所述存储节点可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是存储节点5的示例,并不构成对存储节点5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述存储节点还可以包括输入输出设备、网络接入设备、总线等。
[0105]
所称处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0106]
所述存储器51可以是所述存储节点5的内部存储单元,例如存储节点5的硬盘或内存。所述存储器51也可以是所述存储节点5的外部存储设备,例如所述存储节点5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括所述存储节点5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机可读指令以及所述存储节点所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
[0107]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能 单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0108]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0109]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0110]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一计算机非易失性可读存储介质中。
[0111]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0112]
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
权利要求书
[权利要求 1]
一种基于分布式存储系统的数据存储方法,其特征在于,包括: 若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据; 若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值; 基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值; 基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[权利要求 2]
根据权利要求1所述的基于分布式存储系统的数据存储方法,其特征在于,所述预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子;所述用于表征存储节点的可靠性的影响因子包括在线时长及重启次数;所述用于表征存储节点的忙碌性的影响因子包括接收到的数据存储指令的次数; 所述基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值,包括: 基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:

其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1; 基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:

其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1; 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[权利要求 3]
根据权利要求2所述的基于分布式存储系统的数据存储方法,其特征在于,所述基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值,包括: 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下: TotalScore
else=A
1·Reliability
else+A
2·Busy
else; 其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[权利要求 4]
根据权利要求1至3任一项所述的基于分布式存储系统的数据存储方法,其特征在于,所述若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件,包括: 若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值; 基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值; 基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[权利要求 5]
根据权利要求4所述的基于分布式存储系统的数据存储方法,其特征在于,所述基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件,包括: 若本存储节点当前的所述总存储得分值大于或等于所述预设存储得分值阈值,则判定本存储节点当前满足预设存储条件; 若本存储节点当前的所述总存储得分值小于所述预设存储得分值阈值,则判定本存储节点当前不满足预设存储条件。
[权利要求 6]
一种存储节点,其特征在于,包括: 第一检测单元,用于若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据; 第一获取单元,用于若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值; 第一确定单元,用于基于所述其他存储节点在当前时刻对应的预设统计周期内的所述 预设影响因子的值,确定所述其他存储节点当前的总存储得分值; 第二确定单元,用于基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[权利要求 7]
根据权利要求6所述的存储节点,其特征在于,所述预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子;所述用于表征存储节点的可靠性的影响因子包括在线时长及重启次数;所述用于表征存储节点的忙碌性的影响因子包括接收到的数据存储指令的次数;所述第一确定单元具体包括: 第一计算单元,用于基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:

其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1; 第二计算单元,用于基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:

其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1; 第三计算单元,用于基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[权利要求 8]
根据权利要求7所述的存储节点,其特征在于,所述第三计算单元具体用于: 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下: TotalScore
else=A
1·Reliability
else+A
2·Busy
else; 其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[权利要求 9]
根据权利要求6至8任一项所述的存储节点,其特征在于,所述第一检测单元具体 包括: 第四计算单元,用于若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值; 第五计算单元,用于基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值; 对比单元,用于基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[权利要求 10]
根据权利要求9所述的存储节点,其特征在于,所述对比单元具体用于: 若本存储节点当前的所述总存储得分值大于或等于所述预设存储得分值阈值,则判定本存储节点当前满足预设存储条件; 若本存储节点当前的所述总存储得分值小于所述预设存储得分值阈值,则判定本存储节点当前不满足预设存储条件。
[权利要求 11]
一种存储节点,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时实现如下步骤: 若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据; 若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值; 基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值; 基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[权利要求 12]
根据权利要求11所述的存储节点,其特征在于,所述预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子;所述用于表征存储节点的可靠性的影响因子包括在线时长及重启次数;所述用于表征存储节点的忙碌性的影响因子包括接收到的数据存储指令的次数; 所述基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值,包括: 基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:

其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1; 基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:

其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1; 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[权利要求 13]
根据权利要求12所述的存储节点,其特征在于,所述基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值,包括: 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下: TotalScore
else=A
1·Reliability
else+A
2·Busy
else; 其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[权利要求 14]
根据权利要求11至13任一项所述的存储节点,其特征在于所述若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件,包括: 若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值; 基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值; 基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[权利要求 15]
根据权利要求14所述的存储节点,其特征在于,所述基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件,包括: 若本存储节点当前的所述总存储得分值大于或等于所述预设存储得分值阈值,则判定本存储节点当前满足预设存储条件; 若本存储节点当前的所述总存储得分值小于所述预设存储得分值阈值,则判定本存储节点当前不满足预设存储条件。
[权利要求 16]
一种计算机非易失性可读存储介质,所述计算机非易失性可读存储介质存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时实现如下步骤: 若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件;所述数据存储指令中携带待存储数据; 若本存储节点当前不满足预设存储条件,则获取与本存储节点处于同一分布式存储系统中的各个其他存储节点在当前时刻对应的预设统计周期内的预设影响因子的值; 基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值; 基于各个所述其他存储节点当前的所述总存储得分值,从所有所述其他存储节点中确定目标存储节点,将所述目标存储节点的标识返回至所述服务器,以使所述服务器将所述待存储数据存储至所述目标存储节点中。
[权利要求 17]
根据权利要求16所述的计算机非易失性可读存储介质,其特征在于,所述预设影响因子包括用于表征存储节点的可靠性的影响因子及用于表征存储节点的忙碌性的影响因子;所述用于表征存储节点的可靠性的影响因子包括在线时长及重启次数;所述用于表征存储节点的忙碌性的影响因子包括接收到的数据存储指令的次数; 所述基于所述其他存储节点在当前时刻对应的预设统计周期内的所述预设影响因子的值,确定所述其他存储节点当前的总存储得分值,包括: 基于所述其他存储节点在当前时刻对应的预设统计周期内的在线时长及重启次数,通过第一可靠性得分值计算公式,计算各个其他存储节点当前的可靠性得分值;所述第一可靠性得分值计算公式如下:

其中,Reliability
else为其他存储节点当前的可靠性得分值,t
online为其他存储节点在当前时刻对应的预设统计周期内的在线时长,T为预设统计周期的时长,Num
on为其他存储节点在当前时刻对应的预设统计周期内的重启次数,a>1; 基于所述其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,通过第一忙碌性得分值计算公式,计算各个其他存储节点当前的忙碌性得分值;所述第一忙碌性得分值计算公式如下:

其中,Busy
else为其他存储节点当前的忙碌性得分值,Num
instruction为其他存储节点在当前时刻对应的预设统计周期内接收到的数据存储指令的次数,0<b<1; 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值。
[权利要求 18]
根据权利要求17所述的计算机非易失性可读存储介质,其特征在于,所述基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,确定各个其他存储节点当前的总存储得分值,包括: 基于各个其他存储节点当前的可靠性得分值及忙碌性得分值,采用第一总存储得分值计算公式,计算各个其他存储节点的总存储得分值;所述第一总存储得分值计算公式如下: TotalScore
else=A
1·Reliability
else+A
2·Busy
else; 其中,TotalScore
else为其他存储节点当前的总存储得分值,Reliability
else为其他存储节点当前的可靠性得分值,Busy
else为其他存储节点当前的忙碌性得分值,A
1和A
2分别为预设可靠性得分值权重及预设忙碌性得分值权重。
[权利要求 19]
根据权利要求16至18任一项所述的计算机非易失性可读存储介质,其特征在于,所述若接收到服务器发送的数据存储指令,则检测本存储节点当前是否满足预设存储条件,包括: 若接收到服务器发送的数据存储指令,则基于本存储节点在当前时刻对应的预设统计周期内的预设影响因子的值,计算本存储节点当前的可靠性得分值及忙碌性得分值; 基于本存储节点当前的所述可靠性得分值及所述忙碌性得分值,计算本存储节点当前的总存储得分值; 基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件。
[权利要求 20]
根据权利要求19所述的计算机非易失性可读存储介质,其特征在于,所述基于本存储节点当前的所述总存储得分值与预设存储得分值阈值之间的大小关系,检测本存储节点当前是否满足预设存储条件,包括: 若本存储节点当前的所述总存储得分值大于或等于所述预设存储得分值阈值,则判定本存储节点当前满足预设存储条件; 若本存储节点当前的所述总存储得分值小于所述预设存储得分值阈值,则判定本存储节点当前不满足预设存储条件。
附图