一种分布式缓存库数据重均衡方法和系统与流程

文档序号:25347471发布日期:2021-06-08 12:27阅读:60来源:国知局
一种分布式缓存库数据重均衡方法和系统与流程

1.本发明涉及分布式缓存库领域,具体涉及一种分布式缓存库数据重均衡方法和系统。


背景技术:

2.在现有电力调度技术领域中,要实现对实时数据的访问,需要对模型的长整型关键字进行解析,然后根据预先配置定位到数据节点访问数据;如果节点数量或者节点和应用的配置关系发生了改变,就需要依据人为经验来改变原来已经定义好的数据库节点和应用的配置关系。这一过程不利于系统的日常维护,无法动态扩展,总体上不利于系统的稳定性和可靠性。


技术实现要素:

3.为克服上述现有技术的不足,本发明提出一种分布式缓存库数据重均衡方法,包括:
4.当分布式缓存库的数量改变时,基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行划分;
5.将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上;
6.其中,所述每个环形地址空间均对应一个桶,每个桶中均与数据相对应。
7.优选的,所述环形地址空间的建立,包括:
8.采用哈希算法将分布式缓存库节点的ip地址哈希到一个具有多个桶的地址空间中;
9.将所述地址空间中所有桶的地址的数字头尾相连,形成环形地址空间。
10.优选的,所述基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行划分,包括:
11.对变化分布式节点进行哈希计算,得出哈希值;
12.对与变化的分布式缓存库节点相邻的分布式缓存库节点相应环形地址范围进行重新划分,得出新的所述相邻的分布式缓存库节点的地址范围。
13.优选的,所述将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上,包括:
14.根据哈希值相邻的分布式节点对应的环形地址空间的地址范围的变化,将变化前地址范围内的数据移动到变化后的地址范围内。
15.优选的,所述将变化前地址范围内的数据移动到变化后的地址范围内,包括:
16.当增加一个分布式节点时,采用哈希函数计算出新分布式节点的哈希值,并加入所述环形地址空间,并重新计算出与所述增加的分布式节点相邻分布式节点的地址范围,将与所述增加的分布式节点相邻分布式节点的地址范围内的数据移动到所述增加的分布
式节点上;
17.当减少一个分布式节点时,采用哈希算法重新计算出与所述减少的分布式节点相邻分布式节点的地址范围,将所述减少的分布式节点的地址范围内的数据移动到与所述减少的分布式节点相邻的分布式节点上。
18.基于同一发明构思,本发明还提供了一种分布式缓存库数据重均衡系统,其改进之处在于,包括:划分模块和数据迁移模块;
19.所述划分模块,用于基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行重新划分;
20.所述数据迁移模块,用于将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上;
21.其中,所述每个环形地址空间均对应一个桶,每个桶中均与数据相对应。
22.优选的,还包括:建立模块;
23.所述建立模块,用于通过哈希算法形成环形地址空间。
24.优选的,所述建立模块,包括:算法单元和数字相连单元;
25.算法单元,用于采用哈希算法来将分布式缓存库节点的ip地址标志哈希到一个具有多个桶的环形地址空间中;
26.所述数字相连单元,用于将所述地址空间中所有桶的地址的数字头尾相连,形成环形地址空间。
27.优选的,所述划分模块,包括:计算单元和重划分单元;
28.所述计算单元,用于对变化分布式节点进行哈希计算,得出哈希值;
29.所述重划分单元,用于对与变化的分布式缓存库节点相邻的分布式缓存库节点相应环形地址范围进行重新划分,得出新的所述相邻的分布式缓存库节点的地址范围。
30.优选的,所述数据迁移模块包括:节点增加单元和节点减少单元;
31.节点增加单元,用于当增加一个分布式节点时,采用哈希函数计算出新分布式节点的哈希值,并加入所述环形地址空间,并重新计算出与所述增加的分布式节点相邻分布式节点的地址范围,将与所述增加的分布式节点相邻分布式节点的地址范围内的数据移动到所述增加的分布式节点上;
32.节点减少单元,用于当减少一个分布式节点时,采用哈希算法重新计算出与所述减少的分布式节点相邻分布式节点的地址范围,将所述减少的分布式节点的地址范围内的数据移动到与所述减少的分布式节点相邻的分布式节点上。
33.与最接近的现有技术相比,本发明具有的有益效果如下
34.本申请提供了一种分布式缓存库数据重均衡方法,包括:当分布式缓存库的数量改变时,基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行划分;将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上;其中,所述每个环形地址空间均对应一个桶,每个桶中均与数据相对应。在分布式环境中,可以灵活的实现节点变化,调节计算资源,实现数据的迁移,能够实现数据的重新均衡,从而提升系统的稳定性和计算效率。
附图说明
35.图1为一种分布式缓存库数据重均衡方法流程图;
36.图2为哈希值地址空间的定义示意图;
37.图3为分布式节点对哈希值地址空间的划分示意图;
38.图4为增减节点时重新划分哈希地址空间示意图;
39.图5为一种分布式缓存库数据重均衡系统结构图。
具体实施方式
40.通过本发明中介绍的技术,在分布式环境中当分布式节点发生变化时,能够将减少节点的数据重新迁移到其他分布式节点,或者将已有节点的数据迁移到增加节点上,从而实现了在节点变动的情况下的数据的重新负载。通过该方法,可以实现分布式节点存储容量的灵活动态配置。
41.本发明可以解决分布式缓存库中节点变化时,数据重新负载的问题,在不需要修改现有逻辑规则的情况下,实现数据的重新迁移与负载,在分布式节点数量比较大的情况下,在一定程度上是负载均衡的。通过哈希算法将分布式缓存库中的节点标志进行哈希计算,得到不同的散列值,并且这些散列值落到一个有限的地址空间上。通过对有限的地址空间进行划分,并且将划分的地址空间作为一个数据库的存储空间,那么就实现了数据的多机分布式存储。在分布式节点发生变化的时候,计算出变化节点的哈希值,并将该散列值落到环形空间上,此时哈希值相邻的节点对应的环形空间地址范围将会有所变化,记录下变化的起止地址,并将地址内的数据进行相应的移动,就可以实现数据的重新均衡。
42.环形哈希地址空间:按照常用的hash算法来将对应的key哈希到一个具有2^32次方个桶的空间中,即0~(2^32)-1的数字空间中。现在我们可以将这些数字头尾相连,形成一个闭合的环形。如图2所示:
43.分布式节点哈希映射:将分布式节点通过hash算法映射到环上,采用哈希算法将分布式集群中所有节点加入到环形地址空间,哈希计算的输入参数是分布式节点的ip或者唯一标识。假设现在有node_ip1,node_ip2,node_ip3三台机器,通过hash算法得到对应的key键值,映射到地址环形空间中。如图3所示:
44.hash(node_ip1)=node1;
45.hash(node_ip2)=node2;
46.hash(node_ip3)=node3;分布式节点地址范围计算:如图3所示,节点node1的地址范围为(n1~~n2),节点node2的地址范围为(n2~~n3),节点node3的地址范围为(n3~~n1),在数据存取上可以依据数据的哈希值将数据存储到对应的地址空间上。节点的地址空间如下所示:
47.node1:n1~~n2
48.node2:n2~~n3
49.node3:n3~~n1
50.节点变动(增加)时的数据迁移:当分布式节点增加node4时,如图4所示,那么节点的地址空间变化为:
51.node1:n1~~n4
52.node4:n4~~n2
53.node2:n2~~n3
54.node3:n3~~n1
55.此时,数据需要迁移的空间地址为n4~~n2,将该地址空间的数据迁移到node4节点即可。
56.节点变动(减少)时的数据迁移:当分布式节点去掉node4时,那么节点的地址空间变化为:
57.node1:n1~~n2
58.node2:n2~~n3
59.node3:n3~~n1
60.此时,数据需要迁移的空间地址为n4~~n2,将该地址空间的数据迁移到node1节点即可。
61.具体应用的最佳实施例1
62.本发明方法主要是实现分布式缓存库在节点变化时,快速进行数据的迁移。基于该方法能够利用哈希算法快速定位到分布式数据节点存储的数据范围,从而快速实现数据的迁移。本发明的实践方式,是利用多个d5000实时库组件的分布式系统进行实施的。
63.一种分布式缓存库数据重均衡方法流程图如图1所示,包括:
64.当分布式缓存库的数量改变时,基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行划分;
65.将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上;
66.其中,所述每个环形地址空间均对应一个桶,每个桶中均与数据相对应。
67.具体的,一种分布式缓存库数据重均衡方法包括:
68.首先定义出实时库记录的哈希地址空间,如图2所示;然后引入了三个d5000实时库,并将其ip通过如下的hash算法计算出对应的哈希值,从而将地址空间进行了如图3所示的划分。在分布式缓存库节点发生变化的时候,通过哈希计算建立与应用的映射关系,通过图4所示的方法计算出节点的哈希值,并对地址空间进行重新划分,然后基于节点地址范围进行数据迁移。
[0069][0070][0071]
具体应用的最佳实施例2
[0072]
假设系统已有三个节点a1、a2、a3,通过附录所示的哈希算法(该算法最小的哈希值为0,最大的哈希值为(2^32)-1),计算出其哈希值分别为v1、v2、v3,将其插入0~(2^32)-1的环形空间中,其划分的地址空间如下:a1(v3-(2^32-1)),0-v1),a2(v1-v2),a2(v2—v3),在改进后的方法中当节点数量变化时:
[0073]
当新增数据库节点a:依据哈希算法计算出a的哈希值v,并和已有节点a1、a2、a3的
哈希值v1、v2、v3进行大小对比并按照顺序插入,假设插入后的排序哈希值为v1、v、v2、v3,此时节点a的地址空间为v—v2。此时需要将将节点a1上已经存在的v—v2上的数据迁移到节点a上,此时就实现了数据的负载迁移。
[0074]
当减少数据库节点a1:此时a2的地址空间为(0-v2,v3-(2^32-1)),a3的地址空间为(v2-v3),在数据迁移中,只需将原来a1上的数据迁移到a2上即可。
[0075]
在后续的数据访问中,假设访问数据的标志位为k,首先会计算出其哈希值d,并比较d和排序好的各个节点哈希地址的起止大小,如果d位于某个节点的哈希地址范围,就直接去该节点进行数据访问。
[0076]
具体应用的最佳实施例3
[0077]
基于同一发明构思,本发明还提供了一种分布式缓存库数据重均衡系统,由于这些设备解决技术问题的原理与一种分布式缓存库数据重均衡方法相似,重复之处不再赘述。
[0078]
一种分布式缓存库数据重均衡系统,基本结构如图5所示,包括:
[0079]
所述划分模块,用于基于预先建立的环形地址空间,对与发生变化的分布式缓存库节点相邻的分布式缓存库节点的地址范围在环形地址空间上进行重新划分;
[0080]
所述数据迁移模块,用于将发生变化的分布式缓存库节点的地址空间对应的数据迁移到变化后的分布式缓存库节点上;
[0081]
其中,所述每个环形地址空间均对应一个桶,每个桶中均与数据相对应。
[0082]
优选的,还包括:建立模块;
[0083]
所述建立模块,用于通过哈希算法形成环形地址空间。
[0084]
优选的,所述建立模块,包括:算法单元和数字相连单元;
[0085]
算法单元,用于采用哈希算法来将分布式缓存库节点的ip地址标志哈希到一个具有多个桶的环形地址空间中;
[0086]
所述数字相连单元,用于将所述地址空间中所有桶的地址的数字头尾相连,形成环形地址空间。
[0087]
优选的,所述划分模块,包括:计算单元和重划分单元;
[0088]
所述计算单元,用于对变化分布式节点进行哈希计算,得出哈希值;
[0089]
所述重划分单元,用于对与变化的分布式缓存库节点相邻的分布式缓存库节点相应环形地址范围进行重新划分,得出新的所述相邻的分布式缓存库节点的地址范围。
[0090]
优选的,所述数据迁移模块包括:节点增加单元和节点减少单元;
[0091]
节点增加单元,用于当增加一个分布式节点时,采用哈希函数计算出新分布式节点的哈希值,并加入所述环形地址空间,并重新计算出与所述增加的分布式节点相邻分布式节点的地址范围,将与所述增加的分布式节点相邻分布式节点的地址范围内的数据移动到所述增加的分布式节点上;
[0092]
节点减少单元,用于当减少一个分布式节点时,采用哈希算法重新计算出与所述减少的分布式节点相邻分布式节点的地址范围,将所述减少的分布式节点的地址范围内的数据移动到与所述减少的分布式节点相邻的分布式节点上。
[0093]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0094]
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0095]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0096]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0097]
最后应当说明的是:以上实施例仅用于说明本申请的技术方案而非对其保护范围的限制,尽管参照上述实施例对本申请进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本申请后依然可对申请的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在申请待批的权利要求保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1