一种分布式缓存的方法、装置和系统
技术领域
本发明涉及计算机技术领域,特别涉及一种分布式缓存的方法、装置和系统。
背景技术
随着互联网技术的发展,越来越多的互联网应用需要分布式存储系统存储海量数据,而为了减少对分布式存储系统中海量数据的访问压力,常常通过分布式缓存的方式作为缓冲。
目前分布式缓存的主要方式是,利用SSD硬盘作为缓存,其与机械式硬盘混插在同一服务器中,该SSD硬盘仅对其所在服务器中的数据进行缓存,例如:分布式存储中,服务器1中的SSD硬盘1仅对服务器1中的数据进行缓存,服务器2中的SSD硬盘2仅对服务器2中的数据进行缓存,由于每个服务器中的缓存SSD硬盘仅对本地数据进行缓存,那么,每个服务器中的缓存SSD硬盘中缓存的数据量可能存在较大差异,造成分布式缓存负载不均衡。
发明内容
本发明实施例提供了一种分布式缓存的方法、装置和系统,实现了分布式缓存均衡。
一种分布式缓存的方法,构建各个缓存介质之间的关联关系,并为所述各个缓存介质设置转移条件,还包括:
在所述各个缓存介质中,为目标缓存对象确定根缓存介质;
判断所述根缓存介质是否满足所述转移条件,如果是,则为所述根缓存介质确定待转移对象,计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率,根据所述概率,确定目标缓存介质,根据所述关联关系,将所述待转移对象缓存到所述目标缓存介质;否则,直接将所述目标缓存对象缓存到所述根缓存介质。
优选地,上述方法进一步包括:为各个缓存介质分配守护进程,通过所述守护进程确定所述各个缓存介质中缓存对象的价值以及任意两个缓存介质之间的距离;
所述计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率,包括:
根据所述任意两个缓存介质之间的距离,确定所述根缓存介质到所述每一个缓存介质的距离;
根据下述计算公式(1),计算所述每一个缓存介质的价值;
其中,Vj表征缓存介质j的价值;vi表征缓存介质j中缓存的缓存对象i的价值,ci表征缓存介质j中缓存的缓存对象i的数据量大小;Cj表征缓存介质j的缓存容量;
根据下述计算公式(2),计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率;
其中,θmn表征根缓存介质m的待转移对象转移到缓存介质n的概率;Dmn表征根缓存介质m到缓存介质n的距离;a表征转移系数;Vm表征根缓存介质m的价值;Vn表征缓存介质n的价值。
优选地,所述确定所述各个缓存介质中任意两个缓存介质之间的距离,包括:
统计所述各个缓存介质中任意两个缓存介质之间交换机的个数;
根据下述计算公式(3),计算所述任意两个缓存介质之间的距离:
Dkw=βNkw (3)
其中,Dkw表征缓存介质k和缓存介质w之间的距离;β表征距离常数;Nkw表征缓存介质k和缓存介质w之间交换机的个数。
优选地,上述方法进一步包括:设置(0,1)区间内的等概率随机函数rand();
所述根据所述概率,确定目标缓存介质,包括:
将所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率转化为(0,1)区间内的各个线段长度比;
根据所述各个线段长度比,将所述(0,1)区间划分为至少两个子区间;
利用所述随机函数rand(),计算出一个数值;
确定所述数值属于的目标子区间,并根据所述目标子区间,确定目标概率对应的目标缓存介质。
优选地,所述根据所述概率,确定目标缓存介质,包括:
在所述待转移对象转移到每一个缓存介质的概率中确定出最大概率;
确定所述最大概率对应的缓存介质为目标缓存介质。
优选地,在所述为所述根缓存介质确定待转移对象之后,在所述计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率之前,进一步包括:
判断各个缓存介质是否全部满足所述转移条件,如果是,则将所述待转移对象直接存储到本地存储硬盘,否则,执行所述计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率。
优选地,上述方法进一步包括:构建专用缓存集群,并设置价值阈值;
在判断出各个缓存介质全部满足所述转移条件之后,在所述将所述待转移对象直接存储到本地存储硬盘之前,进一步包括:
确定所述待转移对象的价值,并判断所述待转移对象的价值是否大于等于所述价值阈值,如果是,则将所述待转移对象溢出到所述专用缓存集群;否则,执行所述将所述待转移对象直接存储到本地存储硬盘。
一种分布式缓存的装置,包括:
构建设置单元,用于构建外设的各个缓存介质之间的关联关系,并为所述外设的各个缓存介质设置转移条件;
确定单元,用于在外设的各个缓存介质中,为目标缓存对象确定根缓存介质;
计算转移缓存单元,用于判断所述确定单元确定的根缓存介质是否满足所述构建设置单元设置的转移条件,如果是,则为所述确定单元确定的根缓存介质确定待转移对象,计算所述待转移对象转移到所述外设的各个缓存介质中每一个缓存介质的概率,根据所述概率,确定目标缓存介质,根据所述构建设置单元构建的关联关系,将所述待转移对象缓存到所述目标缓存介质;否则,直接将所述目标缓存对象缓存到所述确定单元确定的根缓存介质。
优选地,所述计算转移缓存单元,包括:计算距离子单元、计算价值子单元和计算概率子单元,其中,
所述计算距离子单元,用于接收外设的监控设备发送的任意两个外设的缓存介质之间交换机的个数,根据下述计算公式(3),计算所述任意两个缓存介质之间的距离:
Dkw=βNkw (3)
其中,Dkw表征缓存介质k和缓存介质w之间的距离;β表征距离常数;Nkw表征缓存介质k和缓存介质w之间交换机的个数;并根据所述任意两个外设的缓存介质之间的距离,确定所述根缓存介质到所述每一个缓存介质的距离;
所述计算价值子单元,用于为各个缓存介质分配守护进程,通过所述守护进程确定所述外设的各个缓存介质中缓存对象的价值,根据下述计算公式(1)和所述计算距离子单元确定的根缓存介质到所述每一个缓存介质的距离,计算外设的每一个缓存介质的价值;
其中,Vj表征缓存介质j的价值;vi表征缓存介质j中缓存的缓存对象i的价值,Ci表征缓存介质j中缓存的缓存对象i的数据量大小;
所述计算概率子单元,用于根据下述计算公式(2)和所述计算价值子单元计算的外设的每一个缓存介质的价值,计算所述待转移对象转移到所述各个缓存介质中每一个缓存介质的概率;
其中,θmn表征根缓存介质m的待转移对象转移到缓存介质n的概率;Dmn表征根缓存介质m到缓存介质n的距离;a表征转移系数;Vm表征根缓存介质m的价值;Vn表征缓存介质n的价值。
优选地,所述计算转移缓存单元,包括:设置子单元、转化划分子单元和计算确定子单元,其中,
所述设置子单元,用于设置(0,1)区间内的等概率随机函数rand();
所述转化划分子单元,用于将所述待转移对象转移到所述外设的各个缓存介质中每一个缓存介质的概率转化为(0,1)区间内的各个线段长度比;根据所述各个线段长度比,将所述(0,1)区间划分为至少两个子区间;
所述计算确定子单元,用于利用所述设置子单元设置的随机函数rand(),计算出一个数值,确定所述数值属于的所述转化划分子单元划分出的目标子区间,并根据所述目标子区间,确定目标概率对应的目标缓存介质。
优选地,所述计算转移缓存单元,包括:第一判断子单元、第二判断子单元、计算概率子单元和溢出子单元,其中,
所述第一判断子单元,用于判断各个缓存介质是否全部满足所述转移条件,如果是,则触发所述第二判断子单元,否则,触发所述计算概率子单元;
所述第二判断子单元,用于设置价值阈值,在接收到所述第一判断子单元的触发时,判断所述待转移对象的价值是否大于等于所述价值阈值,如果是,则触发所述溢出子单元;否则,将所述待转移对象直接发送给外设的本地存储硬盘;
所述计算概率子单元,用于在接收到所述第一判断子单元的触发时,计算所述待转移对象转移到所述外设的各个缓存介质中每一个缓存介质的概率;
所述溢出子单元,用于在接收到所述第二判断单元的触发时,将所述待转移对象溢出到外设的专用缓存集群。
一种分布式缓存的系统,包括:至少两个虚块设备、至少一个交换机、奇数个监控设备、上述任一所述的分布式缓存的装置及专用缓存集群,其中,
所述至少两个虚块设备中,每一个虚块设备包括:一个缓存介质和与所述缓存介质相连的至少一个存储硬盘;
所述至少一个交换机,用于连通所述至少两个虚块设备;
所述奇数个监控设备中,每一个监控设备,用于连接至少一个虚块设备,监控连接的虚块设备中缓存介质的容量和连接的虚块设备间交换机的个数,并将所述缓存介质的容量和交换机的个数发送给所述分布式缓存的装置;
所述分布式缓存的装置,用于为每一个缓存介质分配守护进程,并触发所述守护进程,并接收所述奇数个监控设备中任意监控设备发送的缓存介质的容量和交换机的个数,并获取每一个缓存介质的守护进程生成的缓存对象的价值;
每一个缓存介质的守护进程,用于在接收到所述分布式缓存的装置的触发时,记录缓存对象的访问信息和缓存对象的位置,根据所述缓存对象的位置,为所在的缓存介质与所述至少一个存储硬盘之间传输缓存对象,并为所在的缓存介质与所述专用缓存集群之间传输缓存对象,并为每一个缓存对象生成对应的价值。
本发明实施例提供了一种分布式缓存的方法、装置和系统,该方法通过构建各个缓存介质之间的关联关系,并为各个缓存介质设置转移条件,在各个缓存介质中,为目标缓存对象确定根缓存介质;判断根缓存介质是否满足转移条件,如果是,则为根缓存介质确定待转移对象,计算待转移对象转移到各个缓存介质中每一个缓存介质的概率,根据概率,确定目标缓存介质,根据关联关系,将待转移对象缓存到目标缓存介质;否则,直接将目标缓存对象缓存到根缓存介质,通过上述过程使得缓存介质满足转移条件如达到一定存储率等,在缓存介质中确定出待转移对象,从而避免某一缓存介质负载过大,实现了分布式缓存均衡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种分布式缓存的方法的流程图;
图2是本发明另一个实施例提供的一种分布式缓存的方法的流程图;
图3是本发明实施例提供的分布式缓存的装置所在架构的结构示意图;
图4是本发明一个实施例提供的一种分布式缓存的装置的结构示意图;
图5是本发明另一个实施例提供的一种分布式缓存的装置的结构示意图;
图6是本发明又一个实施例提供的一种分布式缓存的装置的结构示意图;
图7是本发明另一个实施例提供的一种分布式缓存的装置的结构示意图;
图8是本发明一个实施例提供的一种分布式缓存的系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种分布式缓存的方法,该方法可以包括以下步骤:
步骤101:构建各个缓存介质之间的关联关系,并为各个缓存介质设置转移条件;
步骤102:在各个缓存介质中,为目标缓存对象确定根缓存介质;
步骤103:判断根缓存介质是否满足转移条件,如果是,则执行步骤104;否则,执行步骤108;
步骤104:为根缓存介质确定待转移对象;
步骤105:计算待转移对象转移到各个缓存介质中每一个缓存介质的概率;
步骤106:根据概率,确定目标缓存介质;
步骤107:根据关联关系,将待转移对象缓存到目标缓存介质,并结束当前流程;
步骤108:直接将目标缓存对象缓存到根缓存介质。
在图1所示的实施例中,通过构建各个缓存介质之间的关联关系,并为各个缓存介质设置转移条件,在各个缓存介质中,为目标缓存对象确定根缓存介质;判断根缓存介质是否满足转移条件,如果是,则为根缓存介质确定待转移对象,计算待转移对象转移到各个缓存介质中每一个缓存介质的概率,根据概率,确定目标缓存介质,根据关联关系,将待转移对象缓存到目标缓存介质;否则,直接将目标缓存对象缓存到根缓存介质,通过上述过程使得缓存介质满足转移条件如达到一定存储率等,在缓存介质中确定出待转移对象,从而避免某一缓存介质负载过大,实现了分布式缓存均衡。
在本发明一个实施例中,为了进一步提高缓存均衡,同时保证转移的效率,设计缓存介质的概率与其自身的价值和距离根缓存介质的大小有关,上述方法进一步包括:为各个缓存介质分配守护进程,通过所述守护进程确定所述各个缓存介质中缓存对象的价值以及任意两个缓存介质之间的距离;步骤105的具体实施方式,包括:根据任意两个缓存介质之间的距离,确定根缓存介质到每一个缓存介质的距离;
根据下述计算公式(1),计算每一个缓存介质的价值;
其中,Vj表征缓存介质j的价值;vi表征缓存介质j中缓存的缓存对象i的价值,Ci表征缓存介质j中缓存的缓存对象i的数据量大小;
根据下述计算公式(2),计算待转移对象转移到各个缓存介质中每一个缓存介质的概率;
其中,θmn表征根缓存介质m的待转移对象转移到缓存介质n的概率;Dmn表征根缓存介质m到缓存介质n的距离;a表征转移系数;Vm表征根缓存介质m的价值;Vn表征缓存介质n的价值。例如:缓存介质1需要转移其缓存的待转移对象a,假设缓存介质1到缓存介质2的距离为1,到缓存介质3的距离为2等等,同时通过计算公式(1)计算得到的缓存介质1的价值为V1,缓存介质2的价值和缓存介质3的价值相等即V2=V3,那么,V1-V2=V1-V3,通过公式(2)可知,待转移对象a转移到缓存介质2的概率为a(V1-V2),待转移对象a转移到缓存介质3的概率为[a(V1-V2)]/2,即待转移对象转移到缓存介质2的概率大于待转移对象转移到缓存介质3的概率,另外,当缓存介质间距离相同时,缓存介质间价值差越大,概率越高,即概率与缓存介质间距离成反比,与缓存介质间的价值差成正比,通过该过程能够选择比较合适的缓存介质接收待转移对象,从而进一步实现分布式缓存均衡。
在本发明一个实施例中,为了保障缓存对象的转移效率,并使概率计算更加准确,确定各个缓存介质中任意两个缓存介质之间的距离的具体实施方式,包括:统计各个缓存介质中任意两个缓存介质之间交换机的个数,根据下述计算公式(3),计算任意两个缓存介质之间的距离:
Dkw=βNkw (3)
其中,Dkw表征缓存介质k和缓存介质w之间的距离;β表征距离常数;Nkw表征缓存介质k和缓存介质w之间交换机的个数,由于分布式缓存系统中,对于同一个服务器中的缓存介质能够直接相连,而对于不同的服务器中的缓存介质往往通过交换机转移缓存对象,而交换机的个数将直接影响缓存对象的专利速率,因此,本发明实施例以缓存介质间交换机的个数来表征缓存介质间的距离,并将其作为计算概率的一个参数,能够保证待转移对象的转移效率的同时,实现缓存均衡。
在本发明一个实施例中,为了使缓存对象转移更加合理,保证各个缓存介质负载均衡,上述方法进一步包括:设置(0,1)区间内的等概率随机函数rand();步骤106的具体实施方式,包括:将待转移对象转移到各个缓存介质中每一个缓存介质的概率转化为(0,1)区间内的各个线段长度比,根据各个线段长度比,将(0,1)区间划分为至少两个子区间,利用随机函数rand(),计算出一个数值,确定数值属于的目标子区间,并根据目标子区间,确定目标概率对应的目标缓存介质;或者,在待转移对象转移到每一个缓存介质的概率中确定出最大概率,确定最大概率对应的缓存介质为目标缓存介质。例如:缓存介质1中待转移对象a转移到缓存介质2中的概率为0.5,转移到缓存介质3中的概率为0.1,转移到缓存介质4中的概率为0.3,转移到缓存介质5中的概率为0.1,将这些概率值转换为对应的线段长度比,即线段分别为0-0.5、0.5-0.6、0.6-0.9、0.9-1;其组成0-1的线段,通过等概率随机函数rand()计算一个数值,该数值如果落到0-0.5,则将待转移对象a转移到缓存介质2;如果该数值落到0.5-0.6,则将待转移对象a转移到缓存介质3等等,其中,等概率随机函数rand()可以根据当前时间或者是硬件属性等等得到一个数值。
在本发明一个实施例中,为了避免任意一个缓存介质超负载,在步骤104之后,在步骤105之前,进一步包括:判断各个缓存介质是否全部满足转移条件,如果是,则将待转移对象直接存储到本地存储硬盘,否则,执行步骤105。为了避免分布式缓存中任意缓存介质超负载,在进行转移之前,还需要判断各个缓存介质是否全部满足转移条件,例如:缓存介质2中待转移对象b的本地缓存为缓存介质1,那么,当各个缓存介质均被存满,则将待转移对象b存储到缓存介质1对应的硬盘中。
在本发明一个实施例中,为了提高缓存率,实现缓存扩展,上述方法进一步包括:构建专用缓存集群,并设置价值阈值;在判断出各个缓存介质全部满足转移条件之后,在将待转移对象直接存储到本地存储硬盘之前,进一步包括:确定待转移对象的价值,并判断待转移对象的价值是否大于等于价值阈值,如果是,则将待转移对象溢出到专用缓存集群;否则,执行将待转移对象直接存储到本地存储硬盘,当待转移对象价值大于价值阈值说明该待转移对象被访问频率或者最后一次访问时间离当前时间较近,如果直接将该价值高于价值阈值的待转移对象直接存储到本地硬盘,则可能导致访问该待转移对象的效率降低,因此,本发明将其转移到专用的缓存集群中,另外该专用的缓存集群独立存在于一个或多个服务器中,能够通过增加缓存介质扩展缓存容量。
在本发明一个实施例中,转移条件包括:为各个缓存介质设置存储率阈值,缓存介质当前的存储率达到存储率阈值;或者,设置缓存介质间的价值差阈值,缓存介质间价值差大于设置的价值差阈值。例如:设置存储率阈值为缓存介质存储容量的70%,则当缓存介质1的存储率达到70%,则该缓存介质1达到了转移条件,当该缓存介质1再接收到目标缓存对象时,则需要为该缓存介质1确定转移对象,将转移对象转移,以确保缓存介质1的存储率在70%以内。又比如:设置缓存介质1和缓存介质2间的价值差阈值为10,而且当缓存介质间的距离增大,该价值差阈值也应该调大,即当缓存介质1和缓存介质2的价值差达到10时,则需要将存储率高的缓存介质中的部分缓存对象进行转移,以保证缓存介质间的均衡,同时避免微小的不平衡而导致频繁进行缓存转移而降低效率。
在本发明一个实施例中,缓存介质包括:固态硬盘(SSD)或机械式硬盘中的任意一种或多种。
在本发明一个实施例中,确定待转移对象的价值的具体实施方式,包括:确定当前时间及目标缓存对象和根缓存介质中每一个缓存对象的最后一次访问的访问时间戳;
根据下述计算公式(4),计算目标缓存对象和所述根缓存介质中每一个缓存对象的价值;
vi=|ti-t| (4)
其中,vi表征缓存对象i的缓存价值;ti表征缓存对象i最后一次访问的访问时间戳;t表征当前时间;
将目标缓存对象及根缓存介质中每一个缓存对象之间进行对比,确定价值最小的缓存对象为待转移对象;通过该发明实施例计算得到的缓存对象价值主要与访问时间有关,最后一次访问缓存对象时间越靠近当前时间,缓存对象的价值越高。
在本发明一个实施例中,确定待转移对象的价值的具体实施方式,包括:确定目标缓存对象和所述根缓存介质中每一个缓存对象的访问频率;根据下述计算公式(5),计算目标缓存对象和根缓存介质中每一个缓存对象的价值;
vi=αpi (5)
其中,vi表征缓存对象i的缓存价值;α表征价值常数;pi表征缓存对象i的访问频率;
将目标缓存对象及根缓存介质中每一个缓存对象之间进行对比,确定价值最小的缓存对象为待转移对象。通过该发明实施例计算得到的缓存对象价值主要与访问频率有关,访问频率越高的缓存对象,价值越高。
下面以固态硬盘(SSD)作为缓存介质,展开说明分布式缓存的方法,如图2所示,该方法可以包括以下步骤:
步骤200:为各个SSD分配守护进程;
步骤201:设置(0,1)区间内的等概率随机函数rand(),构建专用缓存集群,并设置价值阈值;
该等概率随机函数rand()可以根据当前时间或者是硬件属性等等得到一个数值,使得得到的数值落到(0,1)区间中任意一点的概率相等,该专用缓存集群主要是为了缓存当各个SSD均被存满或达到转移条件时,转移出的大于价值阈值的缓存对象。
步骤202:构建各个SSD之间的关联关系,并为各个SSD设置转移条件;
在该步骤中,各个SSD之间主要通过交换机关联,该步骤设置的转移条件包括:为各个缓存介质设置存储率阈值,缓存介质当前的存储率达到存储率阈值;或者,设置缓存介质间的价值差阈值,缓存介质间价值差大于设置的价值差阈值。以当存储率达到存储阈值为例说明转移条件,例如:设置存储率阈值为缓存介质存储容量的70%,则当缓存介质1的存储率达到70%,则该缓存介质1达到了转移条件,当该缓存介质1再接收到目标缓存对象时,则需要为该缓存介质1确定转移对象,将转移对象转移,以确保缓存介质1的存储率在70%以内。
步骤203:通过守护进程实时确定各个SSD中缓存对象的价值以及任意两个SSD之间的距离;
在该步骤中,确定各个SSD中缓存对象的价值的方式主要有两种,其中,
方式一:统计缓存对象最后一次访问时间,通过下述计算公式(4),计算得到每一个缓存对象的价值;
vi=|ti-t| (4)
其中,vi表征缓存对象i的缓存价值;ti表征缓存对象i最后一次访问的访问时间戳;t表征当前时间;
方式二:统计缓存对象的访问频率,通过下述计算公式(5),计算得到每一个缓存对象的价值;
vi=αpi (5)
其中,vi表征缓存对象i的缓存价值;α表征价值常数;pi表征缓存对象i的访问频率。
同时确定缓存对象的价值越高,其被保留在本地缓存的概率越高,反之,缓存对象的价值较低,其被转移的概率越高。
该任意两个SSD之间的距离可以通过下述计算公式(3)得到,
Dkw=βNkw (3)
其中,Dkw表征缓存介质k和缓存介质w之间的距离;β表征距离常数;Nkw表征缓存介质k和缓存介质w之间交换机的个数,由于分布式缓存系统中,对于同一个服务器中的缓存介质能够直接相连,而对于不同的服务器中的缓存介质往往通过交换机转移缓存对象,而交换机的个数将直接影响缓存对象的专利速率,因此,本发明实施例以缓存介质间交换机的个数来表征缓存介质间的距离,并将其作为计算概率的一个参数,能够保证待转移对象的转移效率的同时,实现缓存均衡。
步骤204:在各个SSD中,为目标缓存对象确定根SSD;
在本发明实施例中,设置一个SSD与几个存储硬盘相连,作为该几个存储硬盘的缓存,则该SSD即为该几个存储硬盘的根SSD,例如:在服务器1中,SSD1与存储硬盘1、存储硬盘2和存储硬盘3相连,SSD2与存储硬盘4、存储硬盘5和存储硬盘6相连,则SSD1为存储硬盘1、存储硬盘2和存储硬盘3的根SSD;SSD2为存储硬盘4、存储硬盘5和存储硬盘6的根SSD;在该步骤中,通过确定目标缓存对象对应的存储硬盘,即可确定根SSD,如:访问存储硬盘1中的数据,则该数据对应的缓存对象的根根SSD即为SSD1。
步骤205:判断根SSD是否满足转移条件,如果是,则执行步骤206;否则,执行步骤222;
以转移条件为存储率大于存储量的70%为例,该步骤通过判断根SSD的存储率是否大于等于70%,来确定是否转移对象或者直接存储目标缓存对象。
步骤206:为根SSD确定待转移对象;
该步骤主要根据步骤203确定的根SSD中当前各个缓存对象的价值来确定,即选择价值最低的缓存对象为待转移对象。例如:步骤204确定的根SSD缓存有缓存对象1、缓存对象2、缓存对象3、……、缓存对象N,外加待缓存对象,其中,缓存对象3的价值最低,则确定待转移对象为缓存对象3。通过该过程表明缓存对象的价值越高越应该被保留在根SSD中,价值低的被转移到其他SSD中,甚至转移到专用缓存集群或者本地存储硬盘中,实现全局缓存资源的利用最大化。
步骤207:判断各个SSD是否全部满足转移条件,如果是,则执行步骤步骤208,否则,执行步骤213;
仍以转移条件为存储率大于存储量的70%为例,该步骤通过判断分布式缓存中所有的SSD的存储率是否全部大于等于70%,来确定待转移对象的转移方向。
步骤208:判断待转移对象的价值是否大于等于价值阈值,如果是,则执行步骤209,否则,执行步骤211;
当待转移对象的价值大于等于价值阈值时,说明该待转移对象访问还比较频繁,则将该待转移对象缓存到专用缓存集群中,以方便访问。
步骤209:将待转移对象溢出到专用缓存集群;
步骤210:确定专用缓存集群中价值小于价值阈值的缓存对象,将价值小于价值阈值的缓存对象作为待转移对象,执行步骤204;
步骤211:将待转移对象直接存储到本地存储硬盘;
例如:SSD2中待转移对象b的本地缓存为SSD1,那么,当各个SSD均被存满,且待缓存对象的价值小于价值阈值,则将待转移对象b存储到SSD1对应的硬盘中。
步骤212:确定本地硬盘中价值升高的对象,将价值升高的对象作为待转移对象,执行步骤204;
在该步骤中,当本地存储硬盘中存储的对象的价值升高,如访问频率增加,可能大于SSD中缓存的某一个或多个缓存对象的价值,那么需要将该对象作为目标缓存对象。
步骤213:根据任意两个SSD之间的距离,确定根SSD到每一个SSD的距离;
在该步骤中,通过步骤203中的计算公式(3)计算的任意两个SSD之间的距离,确定根SSD到每一个SSD的距离。
步骤214:确定各个SSD中缓存对象数据量和各个SSD的缓存容量;
该确定的过程可以通过监控设备获得。
步骤215:根据各个SSD中缓存对象的价值、缓存对象数据量和各个SSD的缓存容量,计算每一个SSD的价值;
在该步骤中,根据下述计算公式(1),计算每一个SSD的价值;
其中,Vj表征SSD j的价值;vi表征SSD j中缓存的缓存对象i的价值,ci表征SSD j中缓存的缓存对象i的数据量大小;Cj表征SSD j的缓存容量;
步骤216:根据各个SSD的价值和根SSD到每一个缓存介质的距离,计算待转移对象转移到各个SSD中每一个缓存介质的概率;
在该步骤中,通过热传导方程(6),在温度固定,定常压下,换算出热流计算公式(7),通过将此热流公式中的温度T替换为SSD盘的价值,热传导系数a替换为转移系数a,则得到计算公式(2)。
其中,θmn表征根缓存介质m的待转移对象转移到缓存介质n的概率;Dmn表征根缓存介质m到缓存介质n的距离;a表征转移系数;Vm表征根缓存介质m的价值;Vn表征缓存介质n的价值。
根据计算公式(2),计算待转移对象转移到各个缓存介质中每一个缓存介质的概率。
例如:缓存介质1需要转移其缓存的待转移对象a,假设缓存介质1到缓存介质2的距离为1,到缓存介质3的距离为2等等,同时通过计算公式(1)计算得到的缓存介质1的价值为V1,缓存介质2的价值和缓存介质3的价值相等即V2=V3,那么,V1-V2=V1-V3,通过公式(2)可知,待转移对象a转移到缓存介质2的概率为a(V1-V2),待转移对象a转移到缓存介质3的概率为[a(V1-V2)]/2,即待转移对象转移到缓存介质2的概率大于待转移对象转移到缓存介质3的概率,另外,当缓存介质间距离相同时,缓存介质间价值差越大,概率越高,即概率与缓存介质间距离成反比,与缓存介质间的价值差成正比,通过该过程能够选择比较合适的缓存介质接收待转移对象,从而进一步实现分布式缓存均衡。
步骤217:将概率转化为(0,1)区间内的各个线段长度比;
步骤218:根据各个线段长度比,将(0,1)区间划分为至少两个子区间;
步骤219:利用随机函数rand(),计算出一个数值;
步骤220:确定数值属于的目标子区间,并根据目标子区间,确定目标概率对应的目标SSD;
步骤217至步骤220的具体过程:如缓存介质1中待转移对象a转移到缓存介质2中的概率为0.5,转移到缓存介质3中的概率为0.1,转移到缓存介质4中的概率为0.3,转移到缓存介质5中的概率为0.1,将这些概率值转换为对应的线段长度比,即线段分别为0-0.5、0.5-0.6、0.6-0.9、0.9-1;其组成0-1的线段,通过等概率随机函数rand()计算一个数值,该数值如果落到0-0.5,则将待转移对象a转移到缓存介质2;如果该数值落到0.5-0.6,则将待转移对象a转移到缓存介质3等等,其中,等概率随机函数rand()可以根据当前时间或者是硬件属性等等得到一个数值。
另外,步骤217至步骤220还可以通过在待转移对象转移到每一个SSD的概率中确定出最大概率;确定最大概率对应的SSD为目标缓存介质,确定目标缓存介质。
步骤221:根据关联关系,将待转移对象缓存到目标SSD,并结束当前流程;
步骤222:直接将目标缓存对象缓存到根SSD。
通过对本发明实施例提供的方案进行测试发现,4K随机读和写的性能比现有的缓存方案有20%以上的提升,从而进一步表明本发明提供的方案具有优良的读写性能。
值得说明的是,为各个SSD分配的守护进程能够定位各个缓存对象的位置和转移对象转移的位置,以便后续访问。
另外,本发明实施例提及的目标缓存对象主要分为以下几种:
第一种为:新的待缓存对象;
第二种为:设置缓存介质间的价值差阈值,缓存介质间价值差大于设置的价值差阈值时,存储率高的缓存介质中待转移的缓存对象为目标缓存对象,例如:设置缓存介质1和缓存介质2间的价值差阈值为10,而且当缓存介质间的距离增大,该价值差阈值也应该调大,即当缓存介质1和缓存介质2的价值差达到10时,则需要将存储率高的缓存介质中的部分缓存对象进行转移,那么,该缓存介质1中待转移的缓存对象即为目标缓存对象。
第三种为:专用缓存集群中,价值小于价值阈值的缓存对象;
第四种为:本地存储硬盘中,价值升高的存储对象等等。
如图3、图4所示,本发明实施例提供了一种分布式缓存的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的分布式缓存的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种分布式缓存的装置,包括:
构建设置单元401,用于构建外设的各个缓存介质之间的关联关系,并为外设的各个缓存介质设置转移条件;
确定单元402,用于在外设的各个缓存介质中,为目标缓存对象确定根缓存介质;
计算转移缓存单元403,用于判断确定单元402确定的根缓存介质是否满足构建设置单元401设置的转移条件,如果是,则为确定单元402确定的根缓存介质确定待转移对象,计算待转移对象转移到外设的各个缓存介质中每一个缓存介质的概率,根据概率,确定目标缓存介质,根据构建设置单元401构建的关联关系,将待转移对象缓存到目标缓存介质;否则,直接将目标缓存对象缓存到确定单元402确定的根缓存介质。
如图5所示,在本发明另一实施例中,计算转移缓存单元403,包括:计算距离子单元501、计算价值子单元502和计算概率子单元503,其中,
计算距离子单元501,用于接收外设的监控设备发送的任意两个外设的缓存介质之间交换机的个数,根据下述计算公式(3),计算任意两个缓存介质之间的距离:
Dkw=βNkw (3)
其中,Dkw表征缓存介质k和缓存介质w之间的距离;β表征距离常数;Nkw表征缓存介质k和缓存介质w之间交换机的个数;并根据所述任意两个外设的缓存介质之间的距离,确定所述根缓存介质到所述每一个缓存介质的距离;
计算价值子单元502,用于为各个缓存介质分配守护进程,通过守护进程确定外设的各个缓存介质中缓存对象的价值,根据下述计算公式(1)和计算距离子单元501确定的根缓存介质到每一个缓存介质的距离,计算外设的每一个缓存介质的价值;
其中,Vj表征缓存介质j的价值;vi表征缓存介质j中缓存的缓存对象i的价值,Ci表征缓存介质j中缓存的缓存对象i的数据量大小;
计算概率子单元503,用于根据下述计算公式(2)和计算价值子单元502计算的外设的每一个缓存介质的价值,计算待转移对象转移到各个缓存介质中每一个缓存介质的概率;
其中,θmn表征根缓存介质m的待转移对象转移到缓存介质n的概率;Dmn表征根缓存介质m到缓存介质n的距离;a表征转移系数;Vm表征根缓存介质m的价值;Vn表征缓存介质n的价值。
如图6所示,在本发明又一实施例中,计算转移缓存单元403,包括:设置子单元601、转化划分子单元602和计算确定子单元603,其中,
设置子单元601,用于设置(0,1)区间内的等概率随机函数rand();
转化划分子单元602,用于将待转移对象转移到外设的各个缓存介质中每一个缓存介质的概率转化为(0,1)区间内的各个线段长度比;根据各个线段长度比,将(0,1)区间划分为至少两个子区间;
计算确定子单元603,用于利用设置子单元601设置的随机函数rand(),计算出一个数值,确定数值属于的转化划分子单元602划分出的目标子区间,并根据目标子区间,确定目标概率对应的目标缓存介质。
如图7所示,在本发明另一实施例中,计算转移缓存单元403,包括:第一判断子单元701、第二判断子单元702、计算概率子单元703和溢出子单元704,其中,
第一判断子单元701,用于判断各个缓存介质是否全部满足转移条件,如果是,则触发第二判断子单元702,否则,触发计算概率子单元703;
第二判断子单元702,用于设置价值阈值,在接收到第一判断子单元701的触发时,判断待转移对象的价值是否大于等于价值阈值,如果是,则触发溢出子单元704;否则,将待转移对象直接发送给外设的本地存储硬盘;
计算概率子单元703,用于在接收到第一判断子单元701的触发时,计算待转移对象转移到外设的各个缓存介质中每一个缓存介质的概率;
溢出子单元704,用于在接收到第二判断单元702的触发时,将待转移对象溢出到外设的专用缓存集群。
本发明实施例通过分布式缓存装置自动进行,其相对于上层的应用来说是透明的。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
如图8所示,本发明实施例提供一种分布式缓存的系统,包括:至少两个虚块设备801、至少一个交换机802、奇数个监控设备803、上述任意一种分布式缓存的装置804及专用缓存集群805,其中,
至少两个虚块设备801中,每一个虚块设备801包括:一个缓存介质8011和与缓存介质8011相连的至少一个存储硬盘8012;
至少一个交换机802,用于连通至少两个虚块设备801,另外,位于同一服务器中的虚块设备801之间可以直接相连;
奇数个监控设备803中,每一个监控设备803,用于连接至少一个虚块设备801,监控连接的虚块设备801中缓存介质的容量和连接的虚块设备801间交换机的个数,并将缓存介质的容量和交换机的个数发送给分布式缓存的装置804;
分布式缓存的装置804,用于为每一个缓存介质8011分配守护进程,并触发守护进程,并接收奇数个监控设备803中任意监控设备发送的缓存介质的容量和交换机的个数,并获取每一个缓存介质的守护进程生成的缓存对象的价值;
每一个缓存介质8011的守护进程,用于在接收到分布式缓存的装置804的触发时,记录缓存对象的访问信息和缓存对象的位置,根据缓存对象的位置,为所在的缓存介质8011与至少一个存储硬盘8012之间传输缓存对象,并为所在的缓存介质8011与专用缓存集群805之间传输缓存对象,并为每一个缓存对象生成对应的价值。
值得说明的是,在专用缓存集群805中设置代理进程,通过该代理进程实现缓存对象的溢出和回流到缓存介质中,另外,奇数个监控设备803之间可以相互通信,以保证监控信息完整性和准确性。
根据上述方案,本发明的各实施例,至少具有如下有益效果:
1.通过构建各个缓存介质之间的关联关系,并为各个缓存介质设置转移条件,在各个缓存介质中,为目标缓存对象确定根缓存介质;判断根缓存介质是否满足转移条件,如果是,则为根缓存介质确定待转移对象,计算待转移对象转移到各个缓存介质中每一个缓存介质的概率,根据概率,确定目标缓存介质,根据关联关系,将待转移对象缓存到目标缓存介质;否则,直接将目标缓存对象缓存到根缓存介质,通过上述过程使得缓存介质满足转移条件如达到一定存储率等,在缓存介质中确定出待转移对象,从而避免某一缓存介质负载过大,实现了分布式缓存均衡。
2.在整个缓存过程中,首先为目标缓存对象确定根缓存介质,只有当根缓存介质达到转移条件时,才确定待转移对象,并对待转移对象进行转移,即缓存对象首先选择的是根缓存介质,由于根缓存介质与本地存储硬盘直接相连,根缓存介质与本地存储硬盘之间无需网络传输缓存对象,能够降低分布式缓存中网络压力,同时保证高效的性能。
3.通过计算待转移对象转移到各个缓存介质的概率,并根据概率,确定目标缓存介质,由于概率与根缓存介质与各个缓存介质间的价值差和距离相关,其中,与根缓存介质的价值差越大,距离越短的缓存介质的概率越大,即接收待转移对象的概率越大,在保证缓存均衡的同时,避免缓存效率过低。
4.通过设置专用缓存集群,当缓存介质达到缓存瓶颈时,可以通过扩展专用缓存集群来实现扩展缓存,从而实现了缓存容量的扩展。
5.本发明实施例主要通过缓存对象的价值确定待转移缓存对象,即缓存对象的价值越高越应该被保留在根SSD中,价值低的被转移到其他SSD中,甚至转移到专用缓存集群或者本地存储硬盘中,实现全局缓存资源的利用最大化。
6.在本发明实施例中,设置价值差阈值,当缓存介质间价值差大于设置的价值差阈值,需要将存储率高的缓存介质中的部分缓存对象进行转移,以保证缓存介质间的均衡,同时避免微小的不平衡而导致频繁进行缓存转移而降低效率。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。