具体实施方式
参考图1,为一个分布式存储系统实施方式的网络结构图,该系统包括中央服务器,与中央服务器相连的多个副本节点。该中央服务器用于将其存储的内容划分为大小相等的数据块,或者该内容划分为多个数据分段后,对每个数据分段分别划分为大小相等的数据块,向选择的副本节点发送由该副本节点对所述内容进行存储的指示,该对内容进行存储的指示携带有该内容的信息。一般的,根据分布式存储的工作原理,中央存储器选择多个副本节点对多个内容进行存储。
该副本节点用于在接收该由该副本节点对内容进行存储的指示后,根据该内容的信息和该副本节点上的可用存储空间为该内容分配存储空间;计算该内容在该副本节点上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定;以1/K的概率从中央服务器随机下载并存储该由该内容划分而成的数据块。
在实际应用的过程中,该系统还包括与该多个副本节点相连的服务客户端,该服务客户端用于向该多个副本节点请求该内容,并接收该多个副本节点发送的数据块,将该数据块进行解码后获得该内容;该副本节点进一步用于当该服务客户端向该副本节点请求该内容时,对该存储的该内容的数据块进行随机线性网络编码后发送给服务客户端。
需要说明的是,前述的内容可以是任何可以存储的数据,一般为大文件,较常见的为多媒体内容,例如各类视频、各类音频、各类图片等。
上述分布式存储系统,通过计算存储系数并按照该存储系数确定的存储概率进行数据块的存储,使得该内容的数据块可以划分得更小,系统中能用来进行存储的副本节点更多(例如客户端本身可以作为副本节点),从而,在内容占用相同存储大小的前提下,客户端可以和更多的副本节点连接获得更好的下载速度。这样,在内容进行传输时,由于各副本节点可以直接将其存储的该内容的所有数据块采用随机线性网络编码的传输方式发送出去,客户端不需要知道更多存储的细节(例如存储的具体数据块的所在的位置),从而减轻了客户端搜索调度的复杂性和降低了网络开销。
相应的,提供了与图1所示的系统的工作原理一致的一个分布式存储的方法。当中央服务器上发布了新的内容时,中央服务器可以从系统中选择多个副本节点进行分布式存储,如果中央服务器确定目前选择的副本节点没有足够的资源满足客户服务端的下载需求,可以动态增加新的副本节点。参考图2,该分布式存储方法包括:
201、副本节点接收中央服务器发送的由该副本节点对内容进行存储的指示,该对内容进行存储的指示携带有该内容的信息。
该对内容进行存储的指示携带有该内容的信息包括:该内容的大小等。
在201之前,该方法还包括中央服务器将内容化分成相同大小的数据块,或者,将该内容划分成数据段后,在对各数据段分别化分成相同大小的数据块,向选择的多个副本节点发送该由该副本节点对该内容进行存储的指示。
202、该副本节点根据所述内容的信息和该副本节点上的可用存储空间为该内容分配存储空间。
203、该副本节点计算该内容在该副本节点上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定。
204、该副本节点以1/K的概率从中央服务器随机下载并存储由该内容划分而成的数据块。
可选的,该具体实施方式中,还可以根据实际的情况,205、重新为该内容分配存储空间。例如,当所述副本节点根据所述内容的信息或者所述副本节点上的可用存储空间发生变化时,或者,所述副本节点上的可用存储空间不够存储新的内容时,都可以为该内容重新分配存储空间。其具体的标准可以为系统预先设定。在为该内容重新分配存储空间之后,该副本节点可以采取不同的方法对该内容进行处理:
例如,当为所述第一内容重新分配的存储空间小于原来为所述第一内容分配的存储空间时,可以随机删除所述内容的数据块,所述被删除的数据块的数量=原来为所述第一内容分配的存储空间与为所述第一内容重新分配的存储空间的差值/数据块的大小。
又例如,当为所述第一内容重新分配的存储空间大于原来为所述第一内容分配的存储空间时,可以随机从所述中央服务器增加下载所述内容的数据块,所述被增加下载的数据块的数量=为所述第一内容重新分配的存储空间与原来为所述第一内容分配的存储空间的差值/数据块的大小。
还可以采取下面的方法:删除所述副本节点上已经存储的该内容的所有数据块,根据为所述内容重新分配存储空间的大小计算新的存储系数K’,并按照新的概率1/K’下载并存储该内容的数据块。
上述分布式存储方法,通过计算存储系数并按照该存储系数确定的存储概率进行数据块的存储,使得该内容的数据块可以划分得更小,系统中能用来进行存储的副本节点更多(例如客户端本身可以作为副本节点),从而,在内容占用相同存储大小的前提下,客户端可以和更多的副本节点连接获得更好的下载速度。这样,在内容进行传输时,由于各副本节点可以直接将其存储的该内容的所有数据块采用随机线性网络编码的传输方式发送出去,客户端不需要知道更多存储的细节(例如存储的具体数据块的所在的位置),从而减轻了客户端搜索调度的复杂性和降低了网络开销。其中,还可以根据实际的情况重新为该内容分配存储空间的方案使得系统中的副本节点对内容的存储根据情况进行调整,进一步提高了内容存储的灵活度、存储的效率和内容下载的速度。
参考图3为另一个分布式存储方式,与图2所示的方法不同的是,该方法在为内容分配存储空间的时候,根据该内容的优先级进行分配存储空间。该方法包括:
301、副本节点接收中央服务器发送的由该副本节点对内容进行存储的指示,该对内容进行存储的指示携带有该内容的信息。该对内容进行存储的指示携带有该内容的信息包括:该内容的大小等。
302、获得该内容的优先级。
具体的,内容的优先级是根据不同的请求频率和/或带宽消耗对内容进行的分级,这里定义为请求频率高和/或带宽消耗多的内容的优先级高。例如,热门电影的优先级较高,非热门电影的优先级低。中央服务器开始注入内容时,可以人为设定优先级。例如中央服务器要注入两个电影文件,一个是电影《007》,一个是文艺片,那么可以将电影《007》的优先级设的高一点。
可以采用不同的方式获得该内容优先级:例如,中央服务器根据自身存储的内容的优先级信息,在向副本节点发送前述的由该副本节点对内容进行存储的指示时,直接将该内容的优先级信息包含在该指示中发送给该副本节点。又例如,副本节点在收到由该副本节点对内容进行存储的指示后,向中央服务器发送请求,中央服务器根据该请求向该服务器发送该内容的优先级信息。
303、该副本节点根据所述内容优先级以及其它信息和该副本节点上可用存储空间为该内容分配存储空间,其中在同样的条件下为高优先级的内容分配的存储空间多于为低优先级的内容分配的存储空间。该同样的条件主要指内容的大小相同或者近似。
可以采用不同的计算方法实现上述为为高优先级的内容多分配存储空间的方案。
例如:一种优化的方式按照优先级的高低进行按照比例的存储,具体的根据公式 计算副本节点j上分配给内容i的存储空间大小,其中,Sij表示副本节点j分配给内容i的存储空间大小,Gi表示内容i的优先级,Ci表示内容i的大小,Dj表示副本节点j上可以利用的存储空间大小,Ij表示副本节点j上存储的内容的集合。
304、该副本节点计算该内容在该副本节点上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定。
例如,可以利用如下公式计算存储系数
Kij表示副本节点j上内容i的存储系数,Ci表示内容i的大小,Sij表示副本节点j分配给内容i的存储空间大小。
305、该副本节点以1/K的概率从中央服务器随机下载并存储由该内容划分而成的数据块。
在实际应用过程中,一个实施方式中,央服务器上存储的内容的优先级信息可以是静态的,那么可以仅一次性执行步骤301~305,为一种静态的根据内容的优先级为该内容分配存储空间,然后进行存储的方法。
在另一个实施方式中,央服务器上存储的内容的优先级信息可以是动态的,那么,可以在步骤305之后,可以循环执行所述步骤302~305,即,根据内容的优先级的变化,调整副本节点上为该内容分配的存储空间,根据调整后的存储空间计算存储系数及概率后进行下载和存储该内容。该优先级的动态变化一般与该内容的请求频率和/或带宽消耗(或者称热度)有关,包括不同的情形:内容的热度逐渐降低甚至消失的,可以采用指数衰减法处理内容的优先级。内容的热度根据时间阶段性变化的,可以设定累计时间权数对内容优先级进行调整,等等。
上述根据内容的优先级进行存储的方法,客户节点可以进一步的和更多的节点连接获得更好的下载速度,尤其对于优先级高的内容,存储的概率更高,下载的速度因而更快。
在实际的应用过程中,一般中央服务器上存储有大量不同的内容,一个副本节点上也可能需要存储不同的内容。当收到对内容进行存储的指示的时候,该副本节点上的可用存储空间可能足够存储该内容,也可能不够存储该内容,为了进一步提高存储的效率,在一个实施方式中,可以增加对副本节点上可用存储空间是否足够存储待存储的内容的判断:当确定副本节点上的可用存储空间足够存储该内容时,直接进行前述的存储空间分配、计算存储系数并根据由存储系数确定的概率下载并存储数据块。当确定副本节点上的可用存储空间不够存储该内容时,可以采取如下不同的方式进行处理:
第一种处理方式:该副本节点向中央服务器返回消息,可以携带该副本节点不够存储该内容,也可以是简单的存储失败消息,以便于中央服务器进行协调,例如将存储该内容的指示发给其它副本节点,或者,增加副本节点后将存储该内容的指示发给该增加的副本节点。
第二种处理方式:该副本节点删除部分已经存储在该副本节点上的其它内容的数据块,以便于在可用空间足够时,进行该内容的存储。
参考图4,为一个具体的分布式存储的实施方式,该实施方式中,增加了对副本节点上可用存储空间是否足够存储待存储的内容的判断,并且,在确定副本节点上的可用存储空间不够存储该内容时采用了上述第二种处理方式。该方法以该副本节点之前没有存储任何内容,在本方法中需要先后存储第一内容、第二内容情况为例进行介绍,包括:
在400,副本节点接收对第一内容进行存储的指示。
具体的,该消息携带该第一内容的信息,例如该第一内容的标识、该第一内容的大小,还可以包括该第一内容的名称,优先级参数等。
在401,确认该副本节点的可用存储空间是否足够存储该第一内容,本方法以确认该副本节点的可用存储空间足够存储该第一内容为例。
具体的,该副本节点将自身可用的存储空间大小和前述第一内容的大小进行比较,当该副本节点将自身可用的存储空间大小大于等于前述第一内容的大小时,为确认该副本节点的可用存储空间足够存储该第一内容。进入步骤402。
当然,如果该副本节点将自身可用的存储空间大小小于前述第一内容的大小时,可以向中央服务器返回信息,该信息可以包含该副本节点的可用存储空间不够存储该第一内容的说明,也可以是简单的存储失败消息。
在402,为该第一内容分配存储空间。
一般来说,为该第一内容分配的存储空间的大小小于该第一内容的大小。较优的,该第一内容的大小是为该第一内容分配的存储空间的大小的整数倍。较优的,可以根据图3所示的根据第一内容的优先级情况进行存储空间分配。具体的,也可以不考虑优先级的情况,根据该第一内容的大小随机或者定量的分配一些存储空间给该第一内容。
在403,计算该第一内容在该副本节点上的存储系数K1。
具体的,该存储系数K1由该第一内容的大小和为该第一内容分配的存储空间的大小确定。具体可以采用不同的公式进行。
在404,以1/K1的概率从中央服务器下载并存储由该第一内容划分而成的数据块。
参考图4b,为步骤402-404的一个具体的例子:该第一内容在中央服务器上被分成数据分段1和数据分段2,每个数据分段12个大小相等的数据块。该402-404具体为:为该第一内容分配6个数据块大小的存储空间,计算该第一内容的存储系数K1=24/6=4,以1/4的概率从中央服务器下载数据块并存储在该副本节点上。
在405,该副本节点接收到对第二内容进行存储的指示。
具体的,该指示包括该第二内容的标识和该第二内容的大小。还可以包括该第二内容的优先级。
在406,确认该副本节点上现在的可用存储空间是否足够存储该第二内容,具体的,本实施方式以确认该副本节点上现在的可用存储空间不够存储该第二内容为例。
在407,重新为该第一内容分配存储空间。
具体的,重新为该第一内容分配的存储空间应该少于之前该第一内容在该副本节点上的存储空间。在步骤408,随机删除该第一内容的部分数据块。
具体的,该被删除的该第一内容的数据块的数量=原为第一内容分配的存储容量与重新为该第一内容分配的存储容量的差值/数据块的大小。
在实际的应用过程中,该副本节点上可能存储了多个内容,对于这些已经存储的内容,可以部分或者全部的采用上述对于第一内容采用的方法进行处理,即删除部分已经存储的数据块,以从使该副本节点的可用存储空间足够存储该待存储的第二内容。
在步骤409,当该副本节点的可用存储空间足够存储所述第二内容时,为该第二内容分配存储空间。
具体的,为该第二内容分配的存储空间一般小于该第二内容的大小。较优的,该第二内容的大小是为该第二内容分配的存储空间的整数倍。较优的,可以根据图3所示的根据第一内容的优先级情况进行存储空间分配。当然,也可以不考虑优先级的情况,根据该第一内容的大小随机或者定量的分配一些存储空间给该第一内容。
在步骤410,计算该第二内容在该副本节点上的存储系数K2。
具体的,该存储系数K2由该第二内容的大小和为该第二内容分配的存储空间的大小确定。具体可以采用不同的公式。
在步骤411,以1/K2的概率从中央服务器下载并存储由该第二内容划分而成的数据块。
通过上述实施方式,存储节点可以调节分配给各个内容的存储空间大小,使得节点可以存储多个内容,从而进一步提高了内容分布式存储的效率。
对于前述的不同的实施方式,较优的,可以设定一个内容存储的限值,例如不允许一个内容的存储系数大于Km,该Km可以为10,9,8......5等不同的自然数。当某一个内容的存储系数大于Km时,可以彻底删除该内容,或者不接收新的内容。
相应的,参考图5a,为一种与图1中所示的副本节点类似或者一致的分布式存储装置的结构示意图。该分布式存储装置包括接收单元501,分配单元502,存储单元503。
该接收单元501,用于接收中央服务器发送的由该分布式存储装置(副本节点1、2或者3)对内容进行存储的指示,该对内容进行存储的指示携带有该内容的信息。具体的该指示能携带该内容的标识、该内容的大小等信息。
该分配单元502,用于根据所述内容的信息和该分布式存储装置上的可用存储空间为该内容分配存储空间,计算该内容在该分布式存储装置上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定。具体的,为该内容分配的存储空间一般小于该内容的大小,可以是根据经验值,可以是在一定大小范围内随机分配的,也可以是按照一定的原则比例分配的,例如根据优先级来分配。
该存储单元503,用于以1/K的概率从中央服务器随机下载并存储由该内容划分而成的数据块。
具体的,该图5a所示的分布式存储装置的工作原理可以参考前述图2所述的方法流程,在此不赘述。上述分布式存储装置,通过计算存储系数并按照该存储系数确定的存储概率进行数据块的存储,使得该内容的数据块可以划分得更小,系统中能用来进行存储的副本节点更多(例如客户端本身可以作为副本节点),从而,在内容占用相同存储大小的前提下,客户端可以和更多的副本节点连接获得更好的下载速度。这样,在内容进行传输时,由于各副本节点可以直接将其存储的该内容的所有数据块采用随机线性网络编码的传输方式发送出去,客户端不需要知道更多存储的细节(例如存储的具体数据块的所在的位置),从而减轻了客户端搜索调度的复杂性和降低了网络开销。
参考图5b,在一个较优的实施方式中,该分布式存储装置中的分配单元502可以进一步包括优先级模块5021和分配模块5022。
该优先级模块5021用于获得该内容的优先级。一般的,可以由中央服务器将该内容的优先级信息携带在前述对内容进行存储的指示中发送给该分布式存储装置,也可以是该分布式存储装置向中央服务器请求后收到该中央服务器发送的该内容的优先级信息。
该分配模块5022用于根据所述内容的优先级为所述内容分配存储空间,其中为高优先级的内容分配的存储空间大于为低优先级的内容分配的存储空间,计算该内容在该分布式存储装置上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定。
具体的,图5b所示的分布式存储装置的工作原理可以参考图3所示的方法,在此不赘述。该根据内容优先级进行分配存储空间并存储的方案,进一步提高了存储的效率。
参考图6a,为另一个分布式存储装置的结构示意图,其中,该装置包括接收单元601,分配单元602,存储单元603,删除单元604。该装置应用于该分布式存储装置上存储有多个不同的内容的情况。
该接收单元601,用于接收中央服务器发送的由该分布式存储装置对内容进行存储的指示,该对内容进行存储的指示携带有该内容的信息。
分配单元602,用于当接收到对内容进行存储的指示后,判断该分布式存储装置的可用存储空间是否足够存储该内容;当可用存储空间足够存储该内容,则触发所述分配单元根据所述内容的信息和该分布式存储装置上的可用存储空间为该内容分配存储空间,计算该内容在该分布式存储装置上的存储系数K,该存储系数K由该内容的大小和为该内容分配的存储空间的大小确定;当可用存储空间不够存储该内容,则为前述存储单元603上已经存储的内容重新分配存储空间,并触发删除单元604。
存储单元603,用于存储单元,用于以1/K的概率从中央服务器随机下载并存储由该内容划分而成的数据块。
删除单元604a,用于被分配单元603触发后,随机删除所述存储单元中所述已经存储的内容的数据块,该被删除的数据块的数量=原来为所述内容分配的存储空间与为所述已经存储的内容重新分配的存储空间的差值/数据块的大小。
具体的,前述分配单元602可以由不同的模块组成。该分配单元602包括:
分配模块6023,用于为所述内容分配存储空间。
存储空间判断模块6021a,用于当接收到对内容进行存储的指示后,判断该分布式存储装置的可用存储空间是否足够存储该内容;当可用存储空间足够存储该内容,则触发所述分配模块6023对该内容进行前述分配、计算处理;当可用存储空间不够存储所述内容时,则触发所述分配模块6023为所述存储单元603上已经存储的内容重新分配存储空间,并触发删除单元。
可选的,该分配单元602还可以包括优先级模块6022。在这个实施方式中,优先级模块6022、分配模块6023分别与图5所示的优先级模块5021、分配模块5022的功能和工作原理类似,此处不赘述。
上述实施方式中,是以可用存储空间不够存储该内容时,为已经存储的内容重新分配存储空间并根据重新分配的存储空间删除部分已经存储的数据块的情况为例的。显然,可替换的,参考图6b,该存储空间判断模块6021a可以替换为存储条件变化判断单元6021b,该删除单元604a可以替换为数据块处理模块604b。该存储条件变化判断单元6021b用于当所述副本节点根据已经存储的内容的信息或者副本节点上的可用存储空间发生变化时,触发分配模块6023为该已经存储的内容重新分配存储空间,并触发数据块处理模块604b进行相应的处理。该数据块处理模块604b用于当为所述第一内容重新分配的存储空间小于原来为所述第一内容分配的存储空间时,可以随机删除所述内容的数据块,所述被删除的数据块的数量=原来为所述第一内容分配的存储空间与为所述第一内容重新分配的存储空间的差值/数据块的大小;或者,当为所述第一内容重新分配的存储空间大于原来为所述第一内容分配的存储空间时,可以随机从所述中央服务器增加下载所述内容的数据块,所述被增加下载的数据块的数量=为所述第一内容重新分配的存储空间与原来为所述第一内容分配的存储空间的差值/数据块的大小;或者,删除所述副本节点上已经存储的该内容的所有数据块,根据为所述内容重新分配存储空间的大小触发该分配模块6023,以便于该分配模块6023计算新的存储系数K’,并由存储单元603按照新的概率1/K’下载并存储该内容的数据块。
以上各分布式存储装置,在实际应用过程中,还可以包括编码发送单元,用于当服务客户端请求其上存储的内容时,对该存储的内容的数据块进行随机线性网络编码后发送给服务客户端;以便于服务客户端同时接收到从不同的分布式存储装置发送的所述内容的数据块后,进行解码以获得所述内容。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
通过上述分布式存储装置,实现了对内容的分布式随机存储。存储节点可以按一定的存储系数随机下载存储内容,客户端下载内容时可以任意链接存储有该内容的多个存储节点,可以采用二进制随机线性网络编码传输方式进行下载。这种存储方式提高了存储效率,在相应的传输过程中,也提高了内容传输的效率。
以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。