一种数据分布方法、装置、设备及存储介质与流程
未命名
08-26
阅读:102
评论:0

1.本公开属于计算机技术领域,具体涉及一种数据分布方法、装置、设备及存储介质。
背景技术:
2.分布式存储用于通过存储节点集群存储大量数据,均衡性和稳定性是评价分布式存储性能的因素。其中,均衡性是指存储节点集群中各存储节点负载均衡。在存储节点集群发生变更(如增加或减少存储节点)的情况下,针对变更后的存储节点集群,需要重新进行数据分布的存储节点的数量越少,可以表征该分布式存储的稳定性越好。
3.一种将均衡性和稳定性均维持在相对较好状态的数据分布方案可以实现为:将待存储的数据根据若干虚拟节点的数量,均衡的映射到该若干虚拟节点上,再基于一致性哈希算法将该若干虚拟节点与存储节点集群建立映射关系。
4.随着存储节点集群所包含存储节点的数量不断增多,若想要对应存储节点集群均匀的分布待存储数据,需要对应增设虚拟节点。而若增设虚拟节点,将会大规模的增加需要管理的数据,不仅会增加开销,而且会增加数据处理的复杂程度。而若不增设虚拟节点,基于一致性哈希算法将虚拟节点映射到存储节点集群,则会影响存储节点集群的均衡性。
技术实现要素:
5.本公开提出一种数据分布方法、装置、设备及存储介质,在虚拟节点集群中虚拟节点总数保持不变的情况下,若存储节点集群中的存储节点总数产生变化,可以确定变更后的存储节点集群与虚拟节点集群的映射关系,进而,对变更后的存储节点集群与虚拟节点集群的映射关系,对存储节点与虚拟节点的映射关系进行再分布,以优化变更后的存储节点集群的均衡性,从而能够在虚拟节点总数保持不变的情况下,将分布式存储系统的稳定性和均衡均维持在相对较佳的程度。
6.本公开第一方面实施例提出了一种数据分布方法,应用于分布式存储系统,所述分布式存储系统包括第一存储节点集群和虚拟节点集群,包括:
7.响应于存储节点变更信息,获取所述第一存储节点集群变更后的第二存储节点集群;
8.生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;
9.基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。
10.在本公开实施例中,所述执行再分布以得到所述目标映射关系的方法为:
11.根据所述初始映射关系映射到各个存储节点的虚拟节点的数量,获取第一存储节点、所述第一存储节点对应的第一虚拟节点数量、第二存储节点和所述第二存储节点对应的第二虚拟节点数量,所述第一虚拟节点数量是指所述初始映射关系中所映射的最多的虚
拟节点数量,所述第二虚拟节点数量是指所述初始映射关系中所映射的最少的虚拟节点数量;
12.若所述第一虚拟节点数量与所述第二虚拟节点数量的差值未满足所述预设条件,对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,再分布之后的映射关系为新的初始映射关系;
13.若所述第一虚拟节点数量与所述第二虚拟节点数量的差值满足所述预设条件,所述初始映射关系为所述目标映射关系。
14.在本公开实施例中,所述对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,包括:
15.将所述第一存储节点映射到的虚拟节点中的一部分,迁移到所述第二存储节点,以使迁移后所述第一存储节点与所述第二存储节点映射到的虚拟节点的数量差满足所述预设条件。
16.在本公开实施例中,所述预设条件包括所述差值与所述第二虚拟节点数量的比值不大于预设值。
17.在本公开实施例中,所述生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,包括:
18.计算所述第二存储节点集群中每个存储节点的哈希值,以及所述虚拟节点集群中每个虚拟节点的哈希值;
19.将所述每个存储节点的哈希值和所述每个虚拟节点的哈希值映射到预配置的哈希环上;
20.根据所述每个存储节点的哈希值与所述每个虚拟节点的哈希值在所述哈希环上的位置关系,生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,所述初始映射关系包括所述每个存储节点映射到的虚拟节点的数量。
21.在本公开实施例中,获取所述第一存储节点集群变更后的第二存储节点集群,包括:
22.在所述第一存储节点集群的基础上增加大于或等于预设数量的存储节点,增加存储节点后的存储节点集群为所述第二存储节点集群。
23.在本公开实施例中,所述方法还包括:
24.将所述第二存储节点集群的拓扑信息以及所述目标映射关系发送到客户端,以使所述客户端根据所述拓扑信息以及所述目标映射关系与所述第二存储节点集群传输数据。
25.本公开第二方面的实施例提供了一种数据分布装置,应用于分布式存储系统,所述分布式存储系统包括第一存储节点集群和虚拟节点集群,所述装置包括:
26.获取模块,用于响应于存储节点变更信息,获取所述第一存储节点集群变更后的第二存储节点集群;
27.生成模块,用于生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;
28.分布模块,用于基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。
29.在本公开实施例中,所述获取模块,还用于根据所述初始映射关系中各个存储节点映射到的虚拟节点的数量,获取第一存储节点、所述第一存储节点对应的第一虚拟节点数量、第二存储节点和所述第二存储节点对应的第二虚拟节点数量,所述第一虚拟节点数量是指所述初始映射关系中所映射的最多的虚拟节点数量,所述第二虚拟节点数量是指所述初始映射关系中所映射的最少的虚拟节点数量;
30.所述分布模块,还用于若所述第一虚拟节点数量与所述第二虚拟节点数量的差值未满足所述预设条件,对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,再分布之后的映射关系为新的初始映射关系。
31.在本公开实施例中,所述分布模块,还用于将所述第一存储节点映射到的虚拟节点中的一部分,迁移到所述第二存储节点,以使迁移后所述第一存储节点与所述第二存储节点映射到的虚拟节点的数量差值满足所述预设条件。
32.在本公开实施例中,所述生成模块,还用于计算所述第二存储节点集群中每个存储节点的哈希值,以及所述虚拟节点集群中每个虚拟节点的哈希值;将所述每个存储节点的哈希值和所述每个虚拟节点的哈希值映射到预配置的哈希环上;以及根据所述每个存储节点的哈希值与所述每个虚拟节点的哈希值在所述哈希环上的位置关系,生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,所述初始映射关系包括所述每个存储节点映射到的虚拟节点的数量。
33.在本公开实施例中,所述获取模块,还用于在所述第一存储节点集群的基础上增加大于或等于预设数量的存储节点,增加存储节点后的存储节点集群为所述第二存储节点集群。
34.在本公开实施例中,所述数据分布装置还包括发送模块,所述发送模块,用于将所述第二存储节点集群的拓扑信息以及所述目标映射关系发送到客户端,以使所述客户端根据所述拓扑信息以及所述目标映射关系与所述第二存储节点集群传输数据。
35.本公开第三方面的实施例提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序以实现上述第一方面所述的方法。
36.本公开第四方面的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现上述第一方面所述的方法。
37.本公开实施例中提供的技术方案,至少具有如下技术效果或优点:
38.若分布式存储系统的第一存储节点集群变更为第二存储节点集群,本公开实施例可以在虚拟节点集群不变的情况下,基于变更后的第二存储节点集群与虚拟节点集群的映射关系,对所映射的虚拟节点数量差不满足预设条件的存储节点对应的虚拟节点执行再分布,从而使得变更后的存储节点集群的均衡性维持在较佳的程度。这样,采用本公开实施例的技术方案,即使在第一存储节点集群的基础上增加存储节点变更为第二存储节点集群,也无需增设虚拟节点,从而不会额外增加分布式存储系统管理的数据和开销,进而,不会额外增加分布式存储系统复杂程度。进一步的,在虚拟节点数量不变的情况下,随着存储节点的增加调整存储节点集群与虚拟节点集群的映射关系,可以在分布式存储系统的稳定性维持在相对较佳的程度的基础上,对各个存储节点对应的虚拟节点进行均衡,从而优化变更后存储节点集群的均衡性。
39.本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本公开的实践了解到。
附图说明
40.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
41.在附图中:
42.图1示出了本公开一实施例所提供的一种一致性哈希(consistent hash)算法的模拟场景示意图;
43.图2示出了本公开一实施例所提供的一种数据分布方法的流程示意图;
44.图3示出了本公开一实施例所提供的一种再分布方法的流程示意图;
45.图4示出了本公开一实施例所提供的一种数据分布装置的结构示意图;
46.图5示出了本公开一实施例所提供的一种电子设备的结构示意图;
47.图6示出了本公开一实施例所提供的一种存储介质的示意图。
具体实施方式
48.下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
49.需要注意的是,除非另有说明,本公开使用的技术术语或者科学术语应当为本公开所属领域技术人员所理解的通常意义。
50.以下对本公开实施例涉及的技术进行说明。
51.一致性哈希算法:配置首尾相连的hash环,以定向分配数据以及迁移数据。
52.结合图1所示,基于一致性哈希算法的分布式存储中,将存储节点集群中的每个存储节点以及待存储数据的键(key)分别映射到该hash环的上,例如,图1中的矩形块a、矩形块b、矩形块c和矩形块d表示映射到hash环的存储节点,圆形表示映射到hash环的待存储数据的key1。针对每个键,例如可以定向将该键映射到hash环上的位置顺时针方向相邻的存储节点,用作存储该键对应的待存储数据的存储节点,例如键1标识的待存储数据可以存储在矩形块b指示的存储节点中。若出现增加存储节点或者删除存储节点的情况,将变更的存储节点映射到hash环上,进而可以将顺时针方向与该存储节点相邻的键的数据迁移到该存储节点,例如,若删除图1中的矩形块b指示的存储节点,那么可以将键1对应的待存储数据迁移到矩形块c指示的存储节点中。
53.有鉴于此,采用一致性哈希算法进行数据分布,若存储节点变更,需重新分布的待存储数据可以限制在发生更改的存储节点所映射位置,至相应位置顺时针相邻位置之间的待存储数据,从而有利于维持分布式存储的稳定性。
54.虚拟节点:每个虚拟节点可以逻辑等效为一个虚拟hash环的一部分,各个虚拟节点的大小可以相同。本公开实施例中,例如可以通过hash算法将待存储数据的key均衡的映
射到该多个虚拟节点,进而,可以通过一致性hash算法建立该多个虚拟节点与存储节点集群的映射关系。这样,通过虚拟节点与待存储数据的映射可以维持均衡性,通过一致性hash算法以及以虚拟节点为单位迁移数据可以维持稳定性。
55.一般的,若分布式存储系统中存储节点的数量增长规模较大,而并不对应增设虚拟节点,那么,针对数量增长后的存储节点基于一致性hash算法进行虚拟节点迁移之后,会造成各个存储节点上的虚拟节点分布不均衡的问题,而由于虚拟节点与待存储数据之间相互映射,进而,造成各个存储节点负载不均衡的问题。
56.有鉴于此,本公开提出一种数据分布方法,在虚拟节点集群中虚拟节点总数保持不变的情况下,若存储节点集群中的存储节点总数产生变化,可以在确定变更后的存储节点集群与虚拟节点集群的映射关系后,对变更后的存储节点集群与虚拟节点集群的映射关系,对存储节点与虚拟节点的映射关系进行再分布,从而优化变更后的存储节点集群的均衡性。
57.下面结合示例来描述根据本公开实施例提出的一种数据分布方法、装置、设备及存储介质。
58.如图2所示,图2示意了一种数据分布方法,该数据分布方法可以应用于分布式存储系统,该分布式存储系统例如可以包括第一存储节点集群和虚拟节点集群,该分布式存储系统中待存储数据、虚拟节点集群和第一存储节点集群的映射关系,以及生成映射关系的算法可以如上述实施例所述,此处不再赘述。
59.其中,执行图2所示数据分布方法的可以是分布式存储系统中的服务器,例如监控服务器(monitor service)。
60.本公开实施例所述的数据分布方法可以包括如下步骤:
61.在步骤s11中,响应于存储节点变更信息,获取第一存储节点集群变更后的第二存储节点集群。
62.一些实现方式中,存储节点变更信息可以是在第一存储节点集群中增加存储节点的信息,相应的,本实现方式中,可以在第一存储节点集群中增加存储节点,增设存储节点后的存储节点集群为第二存储节点集群。
63.示例性的,服务器可以在第一存储节点集群的基础上增加大于或等于预设数量的存储节点。预设数量可以根据实际实施场景灵活设置,本公开实施例此处不限制。预设数量例如是24,第一存储节点集群例如包括12个存储节点,若增加24个存储节点,得到的第二存储节点集群可以包括36个存储节点。
64.另一些实现方式中,存储节点变更信息可以是在第一存储节点集群中删除存储节点的信息,相应的,本实现方式中,服务器可以在第一存储节点集群中删除存储节点,删除存储节点后的存储节点集群为第二存储节点集群。
65.示例性的,服务器获取第二存储节点集群可以包括获取第二存储节点集群中所包含的存储节点的总数,以及第二存储节点集群的拓扑信息。
66.在步骤s12中,生成第二存储节点集群与虚拟节点集群的初始映射关系。
67.其中,初始映射关系中可以包括每个存储节点所映射的虚拟节点的数量。第二存储节点集群与虚拟节点集群的初始映射关系,可以是服务器根据第二存储节点集群的拓扑信息按照一致性hash算法所生成。
68.示例性,服务器可以计算第二存储节点集群中每个存储节点的哈希值,以及虚拟节点集群中每个虚拟节点的哈希值,进而将每个存储节点的哈希值和每个虚拟节点的哈希值映射到预配置的哈希环上,该哈希环可以是服务器根据第二存储节点集群的拓扑信息预先构建。进一步的,服务器可以根据每个存储节点的哈希值与每个虚拟节点的哈希值在哈希环上的位置关系,生成第二存储节点集群与虚拟节点集群的初始映射关系。
69.在步骤s13中,基于初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到第二存储节点集群与虚拟节点集群的目标映射关系。
70.需要指出的是,本公开实施例示意的分布式存储系统中,虚拟节点集群未发生变更,也即虚拟节点的总数量保持不变。根据前述对虚拟节点集群与待存储数据的映射关系的描述可知,待存储数据在虚拟节点集群中的映射保持均衡,虚拟节点集群维持不变,那么,可以认为待存储数据与虚拟节点集群的映射关系保持不变。由于第二存储节点集群的拓扑关系相对于第一存储节点集群的拓扑关系发生变化,使得第二存储节点集群与虚拟节点集群的初始映射关系中,映射的虚拟节点数最多的存储节点对应的虚拟节点数,与映射的虚拟节点数最少的存储节点对应的虚拟节点数,虚拟节点数的数量差相对较大,从而导致存储节点间的负载均衡被破坏。
71.有鉴于此,本公开实施例涉及的再分布,可以是调整不同存储节点所映射的虚拟节点的数量。相应的,第二存储节点集群与虚拟节点集群的目标映射关系中,映射的虚拟节点数最多的存储节点对应的虚拟节点数,与映射的虚拟节点数最少的存储节点对应的虚拟节点数,虚拟节点数的数量差达到预设条件。
72.需要指出的是,第二存储节点集群与虚拟节点集群的映射关系中,虚拟节点数的数量差最大的是映射的虚拟节点数最多的存储节点对应的虚拟节点数,与映射的虚拟节点数最少的存储节点对应的虚拟节点数的差值。有鉴于此,一些实现方式中,服务器可以采用图3示意的再分布方法,经至少一次再分布得到第二存储节点集群与虚拟节点集群的目标映射关系。
73.参见图3,图3示意了本公开一实施例所提供的一种再分布方法的流程示意图,该再分布方法可以包括如下步骤:
74.步骤s301,根据初始映射关系映射到各个存储节点的虚拟节点的数量,获取第一存储节点、第一存储节点对应的第一虚拟节点数量、第二存储节点和第二存储节点对应的第二虚拟节点数量。
75.其中,第一虚拟节点数量是指初始映射关系中所映射的最多的虚拟节点数量,第二虚拟节点数量是指初始映射关系中所映射的最少的虚拟节点数量。
76.步骤s302,判断第一虚拟节点数量与第二虚拟节点数量的差值是否满足预设条件,若第一虚拟节点数量与第二虚拟节点数量的差值未满足预设条件,执行步骤s303;若第一虚拟节点数量与第二虚拟节点数量的差值满足预设条件,执行步骤s304。
77.需要指出的是,不同实施场景中,第二存储节点集群、第一虚拟节点数量和第二虚拟节点数量等的数据可以不同,且第一存储节点和第二存储节点是否均衡根据第一虚拟节点数量和第二虚拟节点数量相比较得到。
78.基于此,可选的,预设条件例如包括差值与第二虚拟节点数量的比值不大于预设
值,若差值与第二虚拟节点数量的比值大于预设值,可以认为第一虚拟节点数量和第二虚拟节点数量相差较大,造成第一存储节点和第二存储节点之间不均衡;若差值与第二虚拟节点数量的比值小于或者等于预设值,可以认为第一虚拟节点数量和第二虚拟节点数量之间的差值,使得第一存储节点和第二存储节点处于均衡的范围内。
79.预设值例如可以是10%。一个可选示例中,第一虚拟节点数量例如为150,第二虚拟节点数量例如为100,第一虚拟节点数量与第二虚拟节点数量的差值是50,该差值占第二虚拟节点数量的50%,可以认为第一存储节点和第二存储节点之间不均衡。另一个可选示例中,第一虚拟节点数量例如为350,第二虚拟节点数量例如为330,第一虚拟节点数量与第二虚拟节点数量的差值是20,该差值占第二虚拟节点数量的6%,可以认为第一存储节点和第二存储节点之间相对均衡。
80.步骤s303,对第一存储节点和第二存储节点映射的虚拟节点再分布。
81.示例性的,服务器可以将第一存储节点映射到的虚拟节点中的一部分迁移到第二存储节点,以使迁移后第一存储节点与第二存储节点映射到的虚拟节点的数量差满足所述预设条件,从而提高第一存储节点与第二存储节点的均衡性。
82.应理解,所迁移的虚拟节点的数量取决于第一虚拟节点数量与第二虚拟节点数量的差值,差值越大,需要迁移的虚拟节点数量相对越多,差值越小,需要迁移的虚拟节点数量相对越少。例如,第一虚拟节点数量例如为300,第二虚拟节点数量例如为100,第一虚拟节点数量与第二虚拟节点数量的差值是200,所迁移的虚拟节点数量例如可以是80。再如,第一虚拟节点数量例如为120,第二虚拟节点数量例如为100,第一虚拟节点数量与第二虚拟节点数量的差值是20,所迁移的虚拟节点数量例如可以是11。
83.进一步的,示例性的,再分布之后的映射关系为新的初始映射关系,针对新的初始映射关系,再次执行步骤s301。
84.步骤s304,初始映射关系为目标映射关系。
85.应理解,图3所示的实现方式是再分布的一种示意性实现方式,对本公开实施例的再分布方法不构成限制。在其他一些实现方式中,针对每个初始映射关系,服务器例如可以按照虚拟节点数从高到底的顺序顺次选择至少两个存储节点,以及按照虚拟节点数从底到高的顺序顺次选择至少两个存储节点,进而按照实际场景,对该多个存储节点的虚拟节点进行再分布,从而能够提高再分布的效率。
86.进一步的,在获得目标映射关系之后,服务器可以将第二存储节点集群的拓扑信息以及目标映射关系发送到客户端,以使客户端根据拓扑信息以及目标映射关系与第二存储节点集群传输数据。
87.可见,采用本公开实施例提供的数据分布方法,若分布式存储系统的第一存储节点集群变更为第二存储节点集群,本公开实施例可以在虚拟节点集群不变的情况下,基于变更后的第二存储节点集群与虚拟节点集群的映射关系,对所映射的虚拟节点数量差不满足预设条件的存储节点对应的虚拟节点执行再分布,从而使得变更后的存储节点集群的均衡性维持在较佳的程度。这样,采用本公开实施例的技术方案,即使在第一存储节点集群的基础上增加存储节点变更为第二存储节点集群,也无需增设虚拟节点,从而不会额外增加分布式存储系统管理的数据和开销,进而,不会额外增加分布式存储系统复杂程度。进一步的,在虚拟节点数量不变的情况下,随着存储节点的增加调整存储节点集群与虚拟节点集
群的映射关系,可以在分布式存储系统的稳定性维持在相对较佳的程度的基础上,对各个存储节点对应的虚拟节点进行均衡,从而优化变更后存储节点集群的均衡性。
88.本公开实施例还提供了一种数据分布装置,该数据分布装置可以应用于上述分布式存储系统,用于执行上述图2和图3示意的任一实施例所述的数据分布方法。如图4所示,该数据分布装置包括:
89.获取模块401,用于响应于存储节点变更信息,获取所述第一存储节点集群变更后的第二存储节点集群;
90.生成模块402,用于生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;
91.分布模块403,用于基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。
92.在本公开实施例中,所述获取模块401,还用于根据所述初始映射关系中各个存储节点映射到的虚拟节点的数量,获取第一存储节点、所述第一存储节点对应的第一虚拟节点数量、第二存储节点和所述第二存储节点对应的第二虚拟节点数量,所述第一虚拟节点数量是指所述初始映射关系中所映射的最多的虚拟节点数量,所述第二虚拟节点数量是指所述初始映射关系中所映射的最少的虚拟节点数量;所述分布模块403,还用于若所述第一虚拟节点数量与所述第二虚拟节点数量的差值未满足所述预设条件,对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,再分布之后的映射关系为新的初始映射关系。
93.在本公开实施例中,所述分布模块403,还用于:将所述第一存储节点映射到的虚拟节点中的一部分,迁移到所述第二存储节点,以使迁移后所述第一存储节点与所述第二存储节点映射到的虚拟节点的数量差满足所述预设条件。
94.在本公开实施例中,所述预设条件包括所述差值与所述第二虚拟节点数量的比值不大于预设值。
95.在本公开实施例中,生成模块402,还用于计算所述第二存储节点集群中每个存储节点的哈希值,以及所述虚拟节点集群中每个虚拟节点的哈希值;将所述每个存储节点的哈希值和所述每个虚拟节点的哈希值映射到预配置的哈希环上;以及根据所述每个存储节点的哈希值与所述每个虚拟节点的哈希值在所述哈希环上的位置关系,生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,所述初始映射关系包括所述每个存储节点映射到的虚拟节点的数量。
96.在本公开实施例中,获取模块401,还用于在所述第一存储节点集群的基础上增加大于或等于预设数量的存储节点,增加存储节点后的存储节点集群为所述第二存储节点集群。
97.在本公开实施例中,所述数据分布装置还包括发送模块,用于将所述第二存储节点集群的拓扑信息以及所述目标映射关系发送到客户端,以使所述客户端根据所述拓扑信息以及所述目标映射关系与所述第二存储节点集群传输数据。
98.本公开的上述实施例提供的数据分布装置与本公开实施例提供的数据分布方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效
果。
99.本公开实施方式还提供一种电子设备,以执行上述分布式存储系统中部署的数据分布方法,该电子设备中可以部署上述分布式存储系统以及上述服务器。请参考图5,其示出了本公开的一些实施方式所提供的一种电子设备的示意图。如图5所示,电子设备5包括:处理器500,存储器501,总线502和通信接口503,所述处理器500、通信接口503和存储器501通过总线502连接;所述存储器501中存储有可在所述处理器500上运行的计算机程序,所述处理器500运行所述计算机程序时执行本公开前述图2和图3示意的任一实施方式所提供的数据分布方法。
100.其中,存储器501可能包含高速随机存取存储器(ram:random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口503(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网、广域网、本地网、城域网等。
101.总线502可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。其中,存储器501用于存储程序,所述处理器500在接收到执行指令后,执行所述程序,前述图2和图3示意的任一实施方式揭示的数据分布方法可以应用于处理器500中,或者由处理器500实现。
102.处理器500可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器500中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器500可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本公开实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器501,处理器500读取存储器501中的信息,结合其硬件完成上述方法的步骤。
103.本公开实施例提供的电子设备与本公开实施例提供的数据分布方法出于相同的发明构思,具有与其采用、运行或实现的方法相同的有益效果。
104.本公开实施方式还提供一种与前述实施方式所提供的数据分布方法对应的计算机可读存储介质,请参考图6,其示出的计算机可读存储介质为光盘30,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会执行前述任意实施方式所提供的数据分布方法。
105.需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
106.本公开的上述实施例提供的计算机可读存储介质与本公开实施例提供的数据分
布方法出于相同的发明构思,具有与其存储的应用程序所采用、运行或实现的方法相同的有益效果。
107.需要说明的是:
108.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的结构和技术,以便不模糊对本说明书的理解。
109.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本公开的示例性实施例的描述中,本公开的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下示意图:即所要求保护的本公开要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本公开的单独实施例。
110.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
111.以上所述,仅为本公开较佳的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种数据分布方法,其特征在于,应用于分布式存储系统,所述分布式存储系统包括第一存储节点集群和虚拟节点集群,所述方法包括:响应于存储节点变更信息,获取所述第一存储节点集群变更后的第二存储节点集群;生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。2.根据权利要求1所述的方法,其特征在于,所述执行再分布以得到所述目标映射关系的方法为:根据所述初始映射关系映射到各个存储节点的虚拟节点的数量,获取第一存储节点、所述第一存储节点对应的第一虚拟节点数量、第二存储节点和所述第二存储节点对应的第二虚拟节点数量,所述第一虚拟节点数量是指所述初始映射关系中所映射的最多的虚拟节点数量,所述第二虚拟节点数量是指所述初始映射关系中所映射的最少的虚拟节点数量;若所述第一虚拟节点数量与所述第二虚拟节点数量的差值未满足所述预设条件,对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,再分布之后的映射关系为新的初始映射关系;若所述第一虚拟节点数量与所述第二虚拟节点数量的差值满足所述预设条件,所述初始映射关系为所述目标映射关系。3.根据权利要求2所述的方法,其特征在于,所述对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,包括:将所述第一存储节点映射到的虚拟节点中的一部分,迁移到所述第二存储节点,以使迁移后所述第一存储节点与所述第二存储节点映射到的虚拟节点的数量差值满足所述预设条件。4.根据权利要求2所述的方法,其特征在于,所述预设条件包括所述差值与所述第二虚拟节点数量的比值不大于预设值。5.根据权利要求1所述的方法,其特征在于,所述生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,包括:计算所述第二存储节点集群中每个存储节点的哈希值,以及所述虚拟节点集群中每个虚拟节点的哈希值;将所述每个存储节点的哈希值和所述每个虚拟节点的哈希值映射到预配置的哈希环上;根据所述每个存储节点的哈希值与所述每个虚拟节点的哈希值在所述哈希环上的位置关系,生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,所述初始映射关系包括所述每个存储节点映射到的虚拟节点的数量。6.根据权利要求1所述的方法,其特征在于,获取所述第一存储节点集群变更后的第二存储节点集群,包括:在所述第一存储节点集群的基础上增加大于或等于预设数量的存储节点,增加存储节点后的存储节点集群为所述第二存储节点集群。7.根据权利要求1所述的方法,其特征在于,还包括:
将所述第二存储节点集群的拓扑信息以及所述目标映射关系发送到客户端,以使所述客户端根据所述拓扑信息以及所述目标映射关系与所述第二存储节点集群传输数据。8.一种数据分布装置,其特征在于,应用于分布式存储系统,所述分布式存储系统包括第一存储节点集群和虚拟节点集群,所述装置包括:获取模块,用于响应于存储节点变更信息,获取所述第一存储节点集群变更后的第二存储节点集群;生成模块,用于生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;分布模块,用于基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。9.根据权利要求8所述的装置,其特征在于,所述获取模块,还用于根据所述初始映射关系中各个存储节点映射到的虚拟节点的数量,获取第一存储节点、所述第一存储节点对应的第一虚拟节点数量、第二存储节点和所述第二存储节点对应的第二虚拟节点数量,所述第一虚拟节点数量是指所述初始映射关系中所映射的最多的虚拟节点数量,所述第二虚拟节点数量是指所述初始映射关系中所映射的最少的虚拟节点数量;所述分布模块,还用于若所述第一虚拟节点数量与所述第二虚拟节点数量的差值未满足所述预设条件,对所述第一存储节点和所述第二存储节点映射的虚拟节点再分布,再分布之后的映射关系为新的初始映射关系。10.根据权利要求8所述的装置,其特征在于,所述分布模块,还用于将所述第一存储节点映射到的虚拟节点中的一部分,迁移到所述第二存储节点,以使迁移后所述第一存储节点与所述第二存储节点映射到的虚拟节点的数量差值满足所述预设条件。11.根据权利要求8所述的装置,其特征在于,所述生成模块,还用于计算所述第二存储节点集群中每个存储节点的哈希值,以及所述虚拟节点集群中每个虚拟节点的哈希值;将所述每个存储节点的哈希值和所述每个虚拟节点的哈希值映射到预配置的哈希环上;以及根据所述每个存储节点的哈希值与所述每个虚拟节点的哈希值在所述哈希环上的位置关系,生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系,所述初始映射关系包括所述每个存储节点映射到的虚拟节点的数量。12.根据权利要求8所述的装置,其特征在于,所述获取模块,还用于在所述第一存储节点集群的基础上增加大于或等于预设数量的存储节点,增加存储节点后的存储节点集群为所述第二存储节点集群。13.根据权利要求8所述的装置,其特征在于,所述数据分布装置还包括发送模块,所述发送模块,用于将所述第二存储节点集群的拓扑信息以及所述目标映射关系发送到客户端,以使所述客户端根据所述拓扑信息以及所述目标映射关系与所述第二存储节点集群传输数据。14.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序以实现如权利要求1-7任一
项所述的方法。15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行实现如权利要求1-7中任一项所述的方法。
技术总结
本公开提出一种数据分布方法、装置、设备及存储介质,该方法应用于分布式存储系统,所述分布式存储系统包括第一存储节点集群和虚拟节点集群,包括:获取所述第一存储节点集群变更后的第二存储节点集群;生成所述第二存储节点集群与所述虚拟节点集群的初始映射关系;基于所述初始映射关系,对所映射的虚拟节点的数量差未达到预设条件的至少两个存储节点的虚拟节点执行再分布,以得到所述第二存储节点集群与所述虚拟节点集群的目标映射关系。本公开实施例在第一存储节点集群变更为第二存储节点集群的情况下,能够在分布式存储系统的稳定性维持在相对较佳的程度的基础上,优化变更后存储节点集群的均衡性。后存储节点集群的均衡性。后存储节点集群的均衡性。
技术研发人员:贺庆
受保护的技术使用者:新华三云计算技术有限公司
技术研发日:2023.06.09
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/