本发明涉及数据缓存技术领域,特别是涉及一种数据缓存方法及装置。
背景技术:
随着互联网的发展,网络中的数据越来越多。
网络中的节点常需要从另一节点(即保存有数据的源节点)中获取数据,当这两个节点距离较远时,则获取数据的过程需要花费较多的时间和系统资源。为了解决这个问题,数据缓存技术应运而生。通过将数据缓存到中间的某个节点,使得节点在可以直接从较近的缓存有该数据的节点中获取数据,相对于从源节点中获取数据,数据缓存技术可以带来不小的收益。
但网络中的节点数量众多,每个节点都有可能发布和请求内容,不同的网络中各节点的距离及节点间的访问路径也各不相同,如何控制各节点对内容进行缓存可以使得数据缓存后的收益最大仍旧是本领域一个亟待解决的技术难题。
技术实现要素:
本发明实施例的目的在于提供一种数据缓存方法及装置,以实现数据缓存收益的最大化。具体技术方案如下:
一种数据缓存方法,包括:
对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;
对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;
对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;
确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子,其中,缓存因子为0或1;
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。
可选的,所述将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存,包括:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,其中,与为1的缓存因子对应的存储概率为第一概率,与为0的缓存因子对应的存储概率为第二概率,其中,所述第一概率大于所述第二概率。
可选的,所述将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,包括:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点在每次接收到该节点组中的内容节点中的至少部分内容时,生成0至1以内的随机数并判断所述随机数是否不大于与存储的缓存因子对应的存储概率,如果是,则对本次接收到的内容进行缓存,否则不进行缓存。
可选的,所述内容节点为vi,所述缓存节点为vj,所述网络节点集合为v,所述单位收益为d(j,i),所述流量为w(i,j),所述缓存因子为
所述确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子,包括:
通过公式
确定各节点组分别对应的缓存因子,其中,所述预设的约束条件包括第一约束条件和第二约束条件,其中,第一约束条件为:
可选的,所述确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,包括:
获得该节点组中的内容节点的最短路径树;
确定该最短路径树中以该节点组中的缓存节点为根节点的子树中的节点数量;
将该节点数量确定为通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数。
一种数据缓存装置,包括:节点确定单元、跳数确定单元、收益获得单元、缓存因子确定单元和缓存因子存储单元,
所述节点确定单元,用于对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;
所述跳数确定单元,用于对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;
所述收益获得单元,用于对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;
所述缓存因子确定单元,用于确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子,其中,缓存因子为0或1;
所述缓存因子存储单元,用于将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。
可选的,所述缓存因子存储单元具体用于:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,其中,与为1的缓存因子对应的存储概率为第一概率,与为0的缓存因子对应的存储概率为第二概率,其中,所述第一概率大于所述第二概率。
可选的,所述缓存因子存储单元具体用于:将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点在每次接收到该节点组中的内容节点中的至少部分内容时,生成0至1以内的随机数并判断所述随机数是否不大于与存储的缓存因子对应的存储概率,如果是,则对本次接收到的内容进行缓存,否则不进行缓存。
可选的,所述内容节点为vi,所述缓存节点为vj,所述网络节点集合为v,所述单位收益为d(j,i),所述流量为w(i,j),所述缓存因子为
所述缓存因子确定单元具体用于:
通过公式
确定各节点组分别对应的缓存因子,其中,所述预设的约束条件包括第一约束条件和第二约束条件,其中,第一约束条件为:
可选的,所述跳数确定单元包括:单位收益确定子单元和流量确定子单元,
所述单位收益确定子单元,用于对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益;
所述流量确定子单元,用于对每个节点组:获得该节点组中的内容节点的最短路径树;确定该最短路径树中以该节点组中的缓存节点为根节点的子树中的节点数量;将该节点数量确定为通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量。
本发明实施例提供的一种数据缓存方法及装置,可以对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子;将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。本发明提供了一种在缓存收益最大的情况下的节点缓存方案,可以有效提高网络利用率,减小网络负担。
当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据缓存方法的流程示意图;
图2为本发明实施例提供的单位收益示意图;
图3为本发明实施例提供的一种数据缓存装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的一种数据缓存方法,可以包括:
s100、对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;
其中,内容节点可以为vi,所述缓存节点可以为vj,所述网络节点集合可以为v。
假设网络节点集合中包含三个节点,分别为节点v1、v2和v3,则对于节点v1,将其确定为内容节点,将节点v2和v3确定为缓存节点,则可以获得两个节点组:(v1,v2)、(v1,v3);
同理,对于节点v2,将其确定为内容节点,将节点v1和v3确定为缓存节点,则可以获得两个节点组:(v2,v1)、(v2,v3);对于节点v3,将其确定为内容节点,将节点v1和v2确定为缓存节点,则可以获得两个节点组:(v3,v1)、(v3,v2)。
综上,上述举例中可以得到六个节点组。
s200、对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;
其中,单位收益可以为d(j,i),所述流量可以为w(i,j)。
下面对单位收益进行举例说明,如图2所示,节点vi为存储有第一内容的源节点,节点vj为缓存有第一内容的节点,节点v1为需要获取第一内容的节点。节点vj在节点v1到节点vi的最短路径上,在节点vj未缓存有第一内容时,节点v1需要到节点vi中获取第一内容,需要经过的距离为节点v1到节点vi的距离。而节点vj缓存有第一内容时,节点v1只需要到节点vj中获取第一内容,需要经过的距离为节点v1到节点vj的距离。因此,可以看出,在节点vj缓存有第一内容且在其他节点到节点vi的最短路径上时,每一个其他节点通过节点vj获取第一内容都可以节省节点vj到节点vi的距离,而这个节省的距离即为单位收益。
其中,所述确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,可以包括:
获得该节点组中的内容节点的最短路径树;
确定该最短路径树中以该节点组中的缓存节点为根节点的子树中的节点数量;
将该节点数量确定为通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数。
具体的,本发明可以基于迪杰斯特拉(dijkstra)计算方法得到某个节点分别到其他节点的最短路径,并通过开放式最短路径优先(openshortestpathfirst,ospf)报文交换路由状态信息,从而得到该某个节点的以该某个节点为根节点的最短路径树。
可以理解的是,在最短路径树中,以某子节点为根节点的子树中各其他节点都通过该子节点与该最短路径树的根节点进行通信,因此,某子节点为根节点的子树中各其他节点的个数即为通过该子节点访问该最短路径树的根节点的其他节点的个数。每个该其他节点通过该子节点访问该最短路径树的根节点都会有上述单位收益,因此本发明可以将该其他节点的个数与单位收益相乘,从而得到该子节点缓存该最短路径树的根节点的内容时带来的收益并根据该收益确定该子节点是否需要缓存根节点的内容。
s300、对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;
其中,所述缓存因子可以为
s400、确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子,其中,缓存因子为0或1;
具体的,步骤s400可以具体包括:
通过公式
确定各节点组分别对应的缓存因子,其中,所述预设的约束条件包括第一约束条件和第二约束条件,其中,第一约束条件为:
其中,所述k可以大于0.6且小于0.8。
s500、将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。
在实际应用中,步骤s500还可以对每个节点组:将该节点组中内容节点的标识信息和缓存因子对应存储在该节点组中的缓存节点中。这样,当缓存节点接收内容时即可判断内容发送方的标识信息是否与所存储的至少一个标识信息相同,如果是,则根据与内容发送方的标识信息对应的缓存因子对接收的内容进行缓存。
其中,步骤s500可以具体包括:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,其中,与为1的缓存因子对应的存储概率为第一概率,与为0的缓存因子对应的存储概率为第二概率,其中,所述第一概率大于所述第二概率。
具体的,所述将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,可以包括:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点在每次接收到该节点组中的内容节点中的至少部分内容时,生成0至1以内的随机数并判断所述随机数是否不大于与存储的缓存因子对应的存储概率,如果是,则对本次接收到的内容进行缓存,否则不进行缓存。
这样,该节点组中的内容节点中的内容传输至缓存节点的次数越多,则该缓存节点缓存该内容节点中的内容的可能性越大。
本发明实施例提供的一种数据缓存方法,对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子;将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。本发明提供了一种在缓存收益最大的情况下的节点缓存方案,可以有效提高网络利用率,减小网络负担。
与上述方法实施例相对应,本发明还提供了一种数据缓存装置。
如图3所示,本发明实施例提供的一种数据缓存装置,可以包括:节点确定单元100、跳数确定单元200、收益获得单元300、缓存因子确定单元400和缓存因子存储单元500,
所述节点确定单元100,用于对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;
其中,内容节点可以为vi,所述缓存节点可以为vj,所述网络节点集合可以为v。
所述跳数确定单元200,用于对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;
其中,单位收益可以为d(j,i),所述流量可以为w(i,j)。
其中,所述跳数确定单元200可以包括:单位收益确定子单元和流量确定子单元,
所述单位收益确定子单元,用于对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益;
所述流量确定子单元,用于对每个节点组:获得该节点组中的内容节点的最短路径树;确定该最短路径树中以该节点组中的缓存节点为根节点的子树中的节点数量;将该节点数量确定为通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量。
具体的,本发明可以基于迪杰斯特拉(dijkstra)计算方法得到某个节点分别到其他节点的最短路径,并通过开放式最短路径优先(openshortestpathfirst,ospf)报文交换路由状态信息,从而得到该某个节点的以该某个节点为根节点的最短路径树。
可以理解的是,在最短路径树中,以某子节点为根节点的子树中各其他节点都通过该子节点与该最短路径树的根节点进行通信,因此,某子节点为根节点的子树中各其他节点的个数即为通过该子节点访问该最短路径树的根节点的其他节点的个数。每个该其他节点通过该子节点访问该最短路径树的根节点都会有上述单位收益,因此本发明可以将该其他节点的个数与单位收益相乘,从而得到该子节点缓存该最短路径树的根节点的内容时带来的收益并根据该收益确定该子节点是否需要缓存根节点的内容。
所述收益获得单元300,用于对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;
其中,所述缓存因子可以为
所述缓存因子确定单元400,用于确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子,其中,缓存因子为0或1;
其中,所述内容节点可以为vi,所述缓存节点可以为vj,所述网络节点集合可以为v,所述单位收益可以为d(j,i),所述流量可以为w(i,j),所述缓存因子可以为
其中,缓存因子确定单元400可以具体用于:
通过公式
确定各节点组分别对应的缓存因子,其中,所述预设的约束条件包括第一约束条件和第二约束条件,其中,第一约束条件为:
所述缓存因子存储单元500,用于将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。
在实际应用中,缓存因子存储单元500还可以对每个节点组:将该节点组中内容节点的标识信息和缓存因子对应存储在该节点组中的缓存节点中。这样,当缓存节点接收内容时即可判断内容发送方的标识信息是否与所存储的至少一个标识信息相同,如果是,则根据与内容发送方的标识信息对应的缓存因子对接收的内容进行缓存。
其中,所述缓存因子存储单元500可以具体用于:
将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据与存储的缓存因子对应的存储概率对该节点组中的内容节点中的至少部分内容进行缓存,其中,与为1的缓存因子对应的存储概率为第一概率,与为0的缓存因子对应的存储概率为第二概率,其中,所述第一概率大于所述第二概率。
进一步,所述缓存因子存储单元500可以具体用于:将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点在每次接收到该节点组中的内容节点中的至少部分内容时,生成0至1以内的随机数并判断所述随机数是否不大于与存储的缓存因子对应的存储概率,如果是,则对本次接收到的内容进行缓存,否则不进行缓存。
这样,该节点组中的内容节点中的内容传输至缓存节点的次数越多,则该缓存节点缓存该内容节点中的内容的可能性越大。
本发明实施例提供的一种数据缓存装置,对网络节点集合中的每个网络节点:将该网络节点确定为内容节点,将所述网络节点集合中除该网络节点外的其他所有网络节点确定为缓存节点,对每一个缓存节点,将所述内容节点和该缓存节点确定为一个节点组;对每个节点组:获得该节点组中内容节点到缓存节点之间的最短跳数,将获得的最短跳数确定为该节点组的单位收益,确定通过该节点组中的缓存节点访问该节点组中的内容节点的其他节点的个数,将确定的个数作为该节点组的流量;对每个节点组:将该节点组的单位收益、该节点组的流量和缓存因子相乘,获得该节点组的缓存收益;确定在满足预设的约束条件的前提下、在各节点组的缓存收益之和最大时的各节点组分别对应的缓存因子;将各缓存因子存储至对应的节点组中的缓存节点中,以使节点组中的缓存节点根据存储的缓存因子对该节点组中的内容节点中的至少部分内容进行缓存。本发明提供了一种在缓存收益最大的情况下的节点缓存方案,可以有效提高网络利用率,减小网络负担。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。