具体实施方式
为了在分布式KV存储系统的存储容量增加后,既要保证根据路由信息进行数据迁移后的负载分布情况比较均衡,又不能增大分布式KV存储系统的负担,发明人在对现有技术提供的路由算法进行了研究与分析的基础上,进一步做了下述研究:
如图2a所示,假设分布式KV存储系统中包含存储服务器PN1和PN2,而PN1和PN2分别对应6个虚拟节点。其中,PN1对应于虚拟节点vn1、vn3、vn5、vn7、vn9、vn11;PN2对应于虚拟节点vn2、vn4、vn6、vn8、vn10、vn12。存储有key的客户端路由到PN1和PN2的路由如图2a中带箭头的线条所示。
当分布式KV存储系统中新增了存储服务器PN3,则在不改变虚拟节点个数的情况下,需要从PN1、PN2所分别对应的6个虚拟节点中各选取2个虚拟节点,并建立选取的共4个虚拟节点与新增加的PN3的对应关系,同时取消PN1、PN2与选取的该些虚拟节点的对应关系。在完成上述操作后,PN1、PN2、PN3与虚拟节点的对应关系如图2b所示。由图2a所示的存储服务器与虚拟节点的对应关系变换为如图2b所示的该对应关系的过程中,PN1和PN2中相当于是各有三分之一的数据需要迁移到PN3,并且显然迁移后的数据分布是均衡的,且在满足数据分布均衡性要求的前提下,按照如图2b所示的映射关系所迁移的数据量是也最小的。
当分布式KV存储系统中的存储服务器个数由图2b中的三个变成四个时(新增PN4),需要从PN1、PN2、PN3所分别对应的4虚拟节点中各选一个虚拟节点调整为与PN4相对应,并取消PN1、PN2、PN3与选取的虚拟节点的对应关系。虚拟节点和PN1~PN4之间的对应关系示意图如图2c所示。由图2b所示的存储服务器与虚拟节点的对应关系变换为如图2c所示的该对应关系的过程中,图2b中的PN1、PN2、PN3相当于是各有四分之一的数据迁移到PN4,显然迁移后的数据分布是均衡的,且在满足数据分布均衡性要求的前提下,按照如图2c所示的映射关系所迁移的数据量是也最小的。
发明人根据上述分析归纳一般情况,得出:假设存储服务器由M个调整成M+X个,且扩容前的分布式KV存储系统包含N个虚拟节点,则在扩容后的分布式KV存储系统中,需要从每个存储服务器所对应的虚拟节点中分别选取出“(X*N)/(M+X)”个虚拟节点与新增加的X个存储服务器建立起对应关系,并取消选取出的虚拟节点与扩容前的分布式KV存储系统包含的存储服务器的对应关系。可见,新增加的存储服务器所对应的虚拟节点的个数与分布式KV存储系统包含的虚拟节点总个数N和存储服务器总个数M+X有关。
根据上述研究,本申请实施例提出了一种路由信息更新方案,基于该方案确定的路由信息,能够在引起的数据迁移尽可能的少的前提下,保证存储服务器的负载分布的均衡性。
以下结合附图,对本申请实施例提供的该方案进行详细说明。
首先,本申请实施例提供一种路由信息更新方法,该方法的具体流程示意图如图3所示,包括以下步骤:
步骤31,在分布式存储系统中增加存储服务器后,确定分布式存储系统包含的存储服务器的第一个数、包含的虚拟节点的第二个数;
步骤32,根据按照增加了存储服务器后的分布式存储系统包含的所有存储服务器的排列位置,而为存储服务器分配的第一排列序号的顺序(一般为由小至大的顺序),依次针对每个存储服务器,执行根据第一个数、第二个数、为该存储服务器分配的所述第一排列序号、在分布式存储系统中增加存储服务器后已分配给存储服务器的虚拟节点的总个数,确定分配给该存储服务器的虚拟节点的第三个数;
以一个具体的实施例为例,假设分布式KV存储系统中包含12个虚拟节点n1~n12,3个存储服务器PN1、PN2、PN3,其中,PN3为分布式KV存储系统中新增的存储服务器。那么,可以确定出第一个数为3、第二个数则为12。
按照上述步骤32的描述,针对存储服务器PN3而言,若需要确定分配给该存储器的虚拟节点的第三个数,则还需要进一步确定按照存储服务器PN3在该分布式KV存储系统所包含的3个存储服务器PN1、PN2、PN3中的排列位置而为其分配的第一排列序号。在本实施例中,若假设存储服务器PN1、PN2、PN3被分配的第一排列序号分别为1、2、3,则可以确定存储服务器PN1的第一排列序号为1。由于存储服务器PN1的排列序号最小,因此,可以按照排列序号由小至大的顺序,在为存储服务器PN1分配虚拟节点之前,分布式KV存储系统中包含的虚拟节点还没有被分配给任一存储服务器,即步骤32中所述的“在分布式存储系统中增加存储服务器后已分配给存储服务器的虚拟节点的总个数”当前为0。具体地,确定分配给存储服务器PN1的虚拟节点的第三个数的公式如下式[1]:
其中,M表示第一个数、N表示第二个数,
表示“在分布式存储系统中增加存储服务器后已分配给存储服务器的虚拟节点的总个数”,Y
0=0。假设第x个存储服务器m
x所对应的虚拟节点为{n
x1,n
x2,...n
xy}(其中,y≤Y
x,Y
x为存储服务器m
x所对应的虚拟节点的个数Y
x(即上述第三个数))。符号“[]”表示对该符号内的值执行向下取整的操作。
针对存储服务器PN
1而言,已知参数有:N=12,M=3,x=1,
则将该些参数代入[1],可计算出分配给存储服务器PN
1的虚拟节点的第三个数Y
1=[(12-0)/(3+1-1)]=4。
在确定出分配给存储服务器PN1的虚拟节点的第三个数为4后,类似地,针对存储服务器PN2而言,已知参数有:N=12,M=3,x=2,则将该些参数代入[1],可计算出分配给存储服务器PN2的虚拟节点的第三个数Y2=[(12-4)/(3+1-2)]=4。
类似地,可以计算出分配给存储服务器PN3的虚拟节点的第三个数Y3=[(12-8)/(3+1-3)]=4。
步骤33,根据第三个数和预定的存储服务器与虚拟节点对应关系确定规则,分别确定各个存储服务器与虚拟节点的对应关系;
在本申请实施例中,可以但不限于采用下述两种方式来确定各个存储服务器与虚拟节点的对应关系。
第一种方式的实现步骤如下:
首先,根据上述第三个数来确定存储服务器,其中,确定的存储服务器满足:其在分布式存储系统增加存储服务器前所对应的虚拟节点的第四个数大于其在分布式存储系统增加存储服务器后所对应的虚拟节点的第三个数。比如,若某存储服务器在分布式存储系统增加存储服务器前所对应的虚拟节点的第四个数为5,而其在分布式存储系统增加存储服务器后所对应的虚拟节点的第三个数为4,则该存储服务器即为满足上述条件的存储服务器。又比如,某存储服务器在分布式存储系统增加存储服务器前所对应的虚拟节点的第四个数为4,而其在分布式存储系统增加存储服务器后所对应的虚拟节点的第三个数为2,则该存储服务器也为满足上述条件的存储服务器。
一般地,满足上述条件的存储服务器可能有多个。针对确定出的满足上述条件的各个存储服务器,进一步分别确定对应于确定出的各个存储服务器的第四个数和第三个数的个数差。比如,针对上述第四个数“5”和第三个数“4”所对应的存储服务器,可以确定出该个数差为1;而针对上述第四个数“4”和第三个数“2”所对应的存储服务器,可以确定出该个数差为2。
然后,根据预定的虚拟节点选取规则,从上述确定出的各个存储服务器在分布式存储系统增加存储服务器前分别对应的虚拟节点中,分别选取数目与相应的个数差一致的虚拟节点。比如,针对上述个数差为1的情况,可以从该存储服务器在所述分布式存储系统增加存储服务器前对应的虚拟节点中,选取1个虚拟节点;而针对上述个数差为2的情况,可以从该存储服务器在所述分布式存储系统增加存储服务器前对应的虚拟节点中,选取2个虚拟节点。其中,虚拟节点的选取规则可以是按照虚拟节点的序号由大至小的顺序进行依次选取,也可以是按照虚拟节点的序号由小至大的顺序进行依次选取。
最后,确定选取的虚拟节点与增加的存储服务器的对应关系,并取消选取的虚拟节点与增加存储服务器前的分布式存储系统包含的存储服务器的对应关系。
上述第一种方式相当于是从在分布式存储系统中增加存储服务器前就与存储服务器建立了对应关系的虚拟节点中选取一部分虚拟节点,然后建立选取的该部分虚拟节点与增加的存储服务器的对应关系。
第二种方式的实现步骤如下:
首先,根据上述第二个数、按照增加了存储服务器后的分布式存储系统包含的所有存储服务器的排列位置而为存储服务器分配的第一排列序号、不大于第三个数的第二排列序号,分别确定各个存储服务器所对应的虚拟节点的第三排列序号;
比如,可以按照下述公式[2]确定虚拟节点的第三排列序号z:
其中,与公式[1]类似的,N表示上述第二个数,x为按照存储服务器的排列位置而为排列在第x位的存储服务器分配的第一排列序号,y为第二排列序号,其满足:y≤Y
x,Y
x为排列在第x位的存储服务器m
x被分配的虚拟节点的个数,即前文所述的第三个数。此外,
表示执行对N除以x的结果向下取整的操作,而“%”则表示执行求取
除以N所得余数的操作。
然后,从按照在分布式存储系统包含的所有虚拟节点中的排列位置而被分配了排列序号的虚拟节点中,确定具备的排列序号与所述第三排列序号匹配一致的虚拟节点,并确定各个存储服务器与确定的虚拟节点的对应关系。
步骤34,根据确定的对应关系更新用于指示虚拟节点与存储服务器之间的路由的路由信息。具体地,更新路由信息的具体过程可以为:首先,针对增加存储服务器前的分布式存储系统存储的路由信息,执行删除与增加的存储服务器对应的虚拟节点相关的路由信息;然后,再添加用于指示增加的存储服务器对应的虚拟节点与增加的存储服务器之间的路由的路由信息。
可选的,本申请实施例中,在更新路由信息后,可以将与增加的存储服务器对应的虚拟节点相绑定的数据迁移到增加的存储服务器中。
可选的,图3中所述的分布式存储系统可以为分布式KV存储系统,也可以为其他类型的分布式存储系统。
此外,本申请实施例还提供一种路由信息更新方法,该方法的具体流程示意图如图4所示,包括以下步骤:
步骤41,在分布式存储系统中增加存储服务器后,确定分布式存储系统包含的存储服务器的第一个数,其中,第一个数满足:其为分布式存储系统中各存储服务器分别对应的虚拟节点的个数的公约数;
步骤42,按照选取具备能被第一个数整除的排列序号的虚拟节点的选取规则,从除增加的存储服务器外的每个存储服务器所对应的虚拟节点中,选取虚拟节点,其中,这里的排列序号是根据虚拟节点在对应于同一存储服务器的所有虚拟节点中的排列位置分配的;
步骤43,删除用于指示选取的虚拟节点与相应的存储服务器之间的路由的路由信息,并确定用于指示选取的虚拟节点与增加的存储服务器之间的路由的路由信息。
图4与图3所示的方法的相似之处在于,均是在不改变分布式存储系统所包含的虚拟节点个数的前提下,实现对路由信息的更新。此外,在图4所示的方法中,是选取具备能被第一个数整除的排列序号的虚拟节点作为与增加的存储服务器对应的虚拟节点,因此,选取虚拟节点的规则也是与分布式存储系统包含的存储服务器的第一个数和除增加的存储服务器外的其他存储服务器分别对应的虚拟节点的个数有关的。
以下结合实际,详细说明本申请实施例提供的上述方法在实际中的应用流程。
实施例1
假设如图2a所示的分布式KV存储系统中当前有12个虚拟节点n1~n12,2个存储服务器PN1、PN2。为了便于描述,以下将此种状态称为状态一。
此时若用一个线性表来保存虚拟节点与存储服务器的映射关系,则如下表1所示:
表1:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
PN1 |
PN2 |
PN1 |
PN2 |
PN1 |
PN2 |
PN1 |
PN2 |
PN1 |
PN2 |
PN1 |
PN2 |
表1中的第一行中的数字代表虚拟节点n1~n12的编号(虚拟节点的编号也可以理解为虚拟节点的数字标识)而第二行中的数字则代表与虚拟节点相对应的存储服务器的编号(存储服务器的编号也可以理解为存储服务器的数字标识)。
此外,还可以设置两个链表来保存存储服务器所对应的虚拟节点的编号,如下表2所示,表2中的一行代表一个链表:
表2:
PN1 |
1(1) |
3(2) |
5(3) |
7(4) |
9(5) |
11(6) |
PN2 |
2(1) |
4(2) |
6(3) |
8(4) |
10(5) |
12(6) |
表2中的第一行第一列存储的是存储服务器的标号PN1,第一行的其他列中存储的是与PN1对应的虚拟节点的编号,其中,括号内的数字是虚拟节点在链表中的顺序号下标,括号外的数字则是虚拟节点的编号。第二列的存储情况与上述情况类似,不再赘述。
状态二:
与状态一相比,状态二下是在分布式KV存储系统中增加一个存储服务器PN3,即存储服务器个数由2变成3。此时,可以遍历表2所示的链表中的虚拟节点的顺序号下标,确定除以存储服务器当前的个数“3”后所得余数为0的顺序号下标,从而建立确定出的顺序号下标所标志的虚拟节点与新增的PN3的对应关系,同时取消该些虚拟节点与PN1、PN2的对应关系。
根据上述处理结果,表2所示的链表被修改为下表3:
表3:
PN1 |
1(1) |
3(2) |
7(3) |
9(4) |
PN2 |
2(1) |
4(2) |
8(3) |
10(4) |
PN3 |
5(1) |
11(2) |
6(3) |
12(4) |
而表1所示的线性表则被修改为下表4:
表4:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
PN1 |
PN2 |
PN1 |
PN2 |
PN3 |
PN3 |
PN1 |
PN2 |
PN1 |
PN2 |
PN3 |
PN3 |
状态三:
与状态二相比,状态三下的分布式KV存储系统中又增加一个存储服务器PN4,即存储服务器个数由3变成4。此时,可以遍历表3所示的链表中的虚拟节点的顺序号下标,确定除以存储服务器当前的个数“4”后所得余数为0的顺序号下标,从而建立确定出的顺序号下标所标志的虚拟节点与新增的PN3的对应关系,同时取消该些虚拟节点与PN1、PN2、PN3的对应关系。
根据上述处理结果,表3所示的链表被修改为下表5:
表5:
PN2 |
2(1) |
4(2) |
8(3) |
PN3 |
5(1) |
11(2) |
6(3) |
PN4 |
9(1) |
10(2) |
12(3) |
根据上述处理结果,表1所示的线性表则被修改为下表6:
表6:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
PN1 |
PN2 |
PN1 |
PN2 |
PN3 |
PN3 |
PN1 |
PN2 |
PN4 |
PN4 |
PN3 |
PN4 |
实施例2
实施例2中提供一种确定存储服务器对应的虚拟节点的个数的方案。当有N个虚拟节点{n1,n2,n3,n4...nN}映射到M个存储服务器{m1,m2,...mM}时,若假设第x个存储服务器mx所对应的虚拟节点为{nx1,nx2,...nxy}(其中,y≤Yx,Yx为存储服务器mx所对应的虚拟节点的个数Yx),则Yx的计算公式如前文所述的式[1]所示:
式[1]中的符号“[]”表示对该符号内的值执行向下取整的操作,Y0=0。
为了便于区分描述,本申请实施例中将虚拟节点的下标xy称为第一下标。
针对上述N个虚拟节点中的第z个虚拟节点nz,可以根据前文所述的公式[2],确定nz的下标z与虚拟节点nxy的下标中的x、y的对应关系:
其中,表示执行对N除以x的结果向下取整的操作,而“%”则表示执行求取除以N所得余数的操作。
为了便于区分描述,本申请实施例中将虚拟节点的下标z称为第二下标。
在根据第一下标中x、y的值,经由上式[2]计算出第二下标z以后,根据nxy与nz的对应关系,就能确定经由虚拟节点nz路由到mx的路由信息。
上述方案在实际中的一个具体应用如下:
假设分布式KV存储系统中当前有12个虚拟节点,分别为{n1,n2,n3,n4...n12},并且有2个存储服务器{m1,m2},则确定路由信息的过程如下:
首先,根据公式[1],计算存储服务器m1所对应的虚拟节点的个数Y1,如下式[3]所示:
因此,m1所对应的虚拟节点个数为6个,分别为{n11,n12,n13,n14,n15,n16}
进一步地,根据公式[2],分别计算虚拟节点{n11,n12,n13,n14,n15,n16}的第一下标所对应的第二下标。比如,针对虚拟节点n11,有如下式[4]所示的第二下标计算公式:
针对虚拟节点n12,有如下式[5]所示的第二下标计算公式:
同理,针对其他虚拟节点n13,n14,n15,n16,可以分别计算出相应的第二下标,最终得到如下表7所示的计算结果:
表7:
具备第一下标的虚拟节点 |
n11 |
n12 |
n13 |
n14 |
n15 |
n16 |
具备第二下标的虚拟节点 |
n1 |
n2 |
n3 |
n4 |
n5 |
n6 |
同理,存储服务器m2所对应的具备第一、第二下标的虚拟节点如下表8所示:
表8:
具备第一下标的虚拟节点 |
n21 |
n22 |
n23 |
n24 |
n25 |
n26 |
具备第二下标的虚拟节点 |
n7 |
n8 |
n9 |
n10 |
n11 |
n12 |
在实施例2中,若在分布式KV存储系统中增加一个存储服务器m3,即存储服务器数由2变成3,则将相关参数代入上述公式[1]、[2],有如下表9所示的对应关系:
表9:
m1对应的虚拟节点 |
m11(n1) |
m12(n2) |
m13(n3) |
m14(n4) |
m2对应的虚拟节点 |
n21(n7) |
n22(n8) |
n23(n9) |
m24(n10) |
m3对应的虚拟节点 |
n31(n5) |
n32(n6) |
n33(n11) |
m34(n12) |
实施例3
实施例3与实施例2在确定存储服务器所对应的虚拟节点的个数时采用的技术手段是一样的,即根据上述公式[1]来确定该个数。但与实施2不同的是,当分布式KV存储系统中增加存储服务器时,实施例3中是按照不同于公式[2]这样的虚拟节点选取规则来选取虚拟节点的。
比如,当分布式KV存储系统中包含12个虚拟节点和一个存储服务器PN1时,PN1与虚拟节点的映射关系如下表10所示,即PN1与所有的虚拟节点n1~n12相对应。
表10:
PN1 |
n1 |
n2 |
n3 |
n4 |
n5 |
n6 |
n7 |
n8 |
n9 |
n10 |
n11 |
n12 |
当分布式KV存储系统中新增存储服务器PN2后,如公式[3]所示,可以确定出PN1所对应的虚拟节点个数Y1=6,类似地,也可以确定出Y2=6,此时,可以确定需要从PN1对应的12个虚拟节点中选取6个虚拟节点。因此,根据“按照虚拟节点的序号由大至小的顺序依次选取虚拟节点”的选取规则,从PN1对应的12个虚拟节点中选取6个虚拟节点,即选取虚拟节点n7、n8、n9、n10、n11、n12。
进一步地,建立选取的虚拟节点与新增的存储服务器PN2的对应关系,并取消选取的虚拟节点与存储服务器PN1的对应关系,从而使得存储服务器PN1和PN2与虚拟节点的对应关系满足下表11:
表11:
PN1 |
n1 |
n2 |
n3 |
n4 |
n5 |
n6 |
PN2 |
n7 |
n8 |
n9 |
n10 |
n11 |
n12 |
需要说明的是,在实际应用中,还可以根据“按照虚拟节点的序号由小至大的顺序依次选取虚拟节点”的选取规则来选取虚拟节点。
当分布式KV存储系统中新增存储服务器PN3后,根据上述公式[1]可以确定出Y1=4,Y2=4,Y3=4。根据“按照虚拟节点的序号由大至小的顺序依次选取虚拟节点”的选取规则,从PN1、PN2分别对应的各虚拟节点中选取2个虚拟节点。
进一步地,建立选取的虚拟节点与新增的存储服务器PN3的对应关系,并取消选取的虚拟节点与存储服务器PN1、PN2的对应关系,从而使得存储服务器PN1、PN2、PN3与虚拟节点的对应关系满足下表12:
表12:
PN1 |
n1 |
n2 |
n3 |
n4 |
PN2 |
n7 |
n8 |
n9 |
n10 |
PN3 |
n5 |
n6 |
n11 |
n12 |
当分布式KV存储系统中新增存储服务器PN4后,根据上述公式[1]可以确定出Y1=3,Y2=3,Y3=3,Y4=3。根据“按照虚拟节点的序号由大至小的顺序依次选取虚拟节点”的选取规则,从PN1、PN2、PN3分别对应的各虚拟节点中选取1个虚拟节点。
进一步地,建立选取的虚拟节点与新增的存储服务器PN4的对应关系,并取消选取的虚拟节点与存储服务器PN1、PN2、PN3的对应关系,从而使得存储服务器PN1、PN2、PN3、PN4与虚拟节点的对应关系满足下表13:
表13:
PN1 |
n1 |
n2 |
n3 |
PN2 |
n7 |
n8 |
n9 |
PN3 |
n5 |
n6 |
n11 |
PN4 |
n4 |
n10 |
n12 |
当分布式KV存储系统中新增存储服务器PN5后,根据上述公式[1]可以确定出Y1=2,Y2=2,Y3=2,Y4=3,Y5=3。根据“按照虚拟节点的序号由大至小的顺序依次选取虚拟节点”的选取规则,从PN1、PN2、PN3分别对应的各虚拟节点中选取1个虚拟节点(由于此时表13中所示的PN4所对应的虚拟节点个数已满足Y4=3,因此,无需从PN4所对应的虚拟节点中选取虚拟节点)。
进一步地,建立选取的虚拟节点与新增的存储服务器PN5的对应关系,并取消选取的虚拟节点与存储服务器PN1、PN2、PN3的对应关系,从而使得存储服务器PN1、PN2、PN3、PN4、PN5与虚拟节点的对应关系满足下表14:
表14:
对应于本申请实施例提供的路由信息更新方法,本申请实施例还提供一种路由信息更新装置,该装置的具体结构示意图如图5所示,包括以下功能单元:
第一确定单元51,用于在分布式存储系统中增加存储服务器后,确定该分布式存储系统包含的存储服务器的第一个数、包含的虚拟节点的第二个数;
第二确定单元52,用于按照增加了存储服务器后的分布式存储系统包含的所有存储服务器的排列位置,而为存储服务器分配的第一排列序号的顺序,依次针对每个存储服务器,执行根据第一确定单元51确定的第一个数、第二个数、为该存储服务器分配的上述第一排列序号、在分布式存储系统中增加存储服务器后已分配给存储服务器的虚拟节点的总个数,确定分配给该存储服务器的虚拟节点的第三个数;
对应关系确定单元53,用于根据第二确定单元52确定的第三个数和预定的存储服务器与虚拟节点对应关系确定规则,分别确定各个存储服务器与虚拟节点的对应关系;
路由信息更新单元54,用于根据对应关系确定单元53确定的对应关系,更新用于指示虚拟节点与存储服务器之间的路由的路由信息。
可选的,本申请实施例提供的上述装置还可以进一步包括数据迁移单元。该数据迁移单元可以用于在路由信息更新单元54更新路由信息后,将与增加的存储服务器对应的虚拟节点相绑定的数据迁移到增加的存储服务器中。
可选的,对应于上述对应关系确定单元53功能的一种实现方式,本申请实施例中可以将对应关系确定单元53具体划分为以下功能模块:
存储服务器确定模块,用于根据第三个数确定存储服务器,其中,确定的存储服务器满足:其在分布式存储系统增加存储服务器前所对应的虚拟节点的第四个数大于其在分布式存储系统增加存储服务器后所对应的虚拟节点的第三个数;
选取模块,用于分别确定对应于存储服务器确定模块确定出的各个存储服务器的第四个数和第三个数的个数差,并根据预定的虚拟节点选取规则,从确定的存储服务器在分布式存储系统增加存储服务器前分别对应的虚拟节点中,分别选取个数与相应的该个数差一致的虚拟节点,其中,选取规则为:按照虚拟节点的序号由大至小或由小至大的顺序依次选取虚拟节点;
对应关系处理模块,用于确定选取模块选取的虚拟节点与增加的存储服务器的对应关系,并取消选取模块选取的虚拟节点与增加存储服务器前的分布式存储系统包含的存储服务器的对应关系。
可选的,对应于对应关系确定单元53功能的另一种实现方式,还可以将其划分为以下功能模块:
排列序号确定模块,用于根据第二个数、第一排列序号、第三个数不大于第三个数的第二排列序号,分别确定各个存储服务器所对应的虚拟节点的第三排列序号;
对应关系确定模块,用于从按照在分布式存储系统包含的所有虚拟节点中的排列位置而被分配了排列序号的虚拟节点中,确定具备的排列序号与排列序号确定模块确定的第三排列序号匹配一致的虚拟节点,并分别确定各个存储服务器与确定的虚拟节点的对应关系。
可选的,路由信息更新单元54也可以进一步划分为以下功能模块:
路由信息删除模块,用于针对增加存储服务器前的分布式存储系统存储的路由信息,执行删除与增加的存储服务器对应的虚拟节点相关的路由信息;
路由信息添加模块,用于添加用于指示增加的存储服务器对应的虚拟节点与增加的存储服务器之间的路由的路由信息。
此外,本申请实施例还提供另一种路由信息更新装置,该装置的具体结构示意图如图6所示,包括以下功能单元:
第一个数确定单元61,用于在分布式存储系统中增加存储服务器后,确定分布式存储系统包含的存储服务器的第一个数,其中,第一个数满足:其为分布式存储系统中各存储服务器分别对应的虚拟节点的个数的公约数;
选取单元62,用于按照选取具备能被第一个数确定单元61确定的第一个数整除的排列序号的虚拟节点的选取规则,从除增加的存储服务器外的每个存储服务器所对应的虚拟节点中选取虚拟节点,其中,该排列序号是根据虚拟节点在对应于同一存储服务器的所有虚拟节点中的排列位置分配的;
路由信息处理单元63,用于删除用于指示选取单元62选取的虚拟节点与相应的存储服务器之间的路由的路由信息,并确定用于指示选取单元选取的虚拟节点与增加的存储服务器之间的路由的路由信息。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。