一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

存储集群的管理方法、装置、电子设备及存储介质与流程

2022-07-30 13:21:27 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,更具体地,涉及一种存储集群的管理方法、一种存储集群的管理装置、一种电子设备及存储介质。


背景技术:

2.现有技术中,为了将机器映射到哈希环上,具体方式为:先计算机器的哈希值,例如可以计算机器的ip地址的哈希值作为机器的哈希值,并通过机器的哈希值来将机器映射到哈希环上,即,其是通过机器的哈希值来切分哈希环,然而,由于机器的哈希值不容易修改,导致对于哈希环和机器的管理不够灵活,不方便运维。


技术实现要素:

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.第一获取模块,用于获取哈希区域的信息,所述哈希区域为哈希环上划分出的区
域,所述哈希区域的信息包括所述哈希区域的起始点的哈希值和结束点的哈希值;
43.第二获取模块,用于获取哈希区域和存储节点之间的映射关系;
44.建立模块,用于根据所述映射关系建立哈希区域和存储节点之间的映射;
45.所述建立模块,具体用于向存储节点下发其映射的哈希区域的信息,以使得存储节点将所述信息存储为元数据并且创建所述哈希区域的副本,所述哈希区域的副本用于存储所述哈希区域对应的数据。
46.根据本公开实施例的第五方面,提供了一种存储集群的数据存储装置,所述存储集群包括存储节点和至少一个管理节点,所述管理节点用于管理所述存储集群中的存储节点,所述装置应用于所述存储节点,所述装置包括:
47.第三获取模块,用于从所述管理节点处获取对应的哈希区域的信息,存储为元数据并且创建副本;
48.接收模块,用于接收待存储的数据,根据所述元数据确定是否为所述哈希区域的数据;
49.存储模块,用于在为所述哈希区域的数据的情况下,将所述待存储的数据加入对应的所述副本中。
50.根据本公开实施例的第六方面,提供了一种存储集群的数据存储装置,所述存储集群包括多个存储节点和至少一个管理节点,所述管理节点用于管理所述存储集群中的存储节点,所述装置应用于所述存储集群外的客户端,所述装置包括:
51.第四获取模块,用于从所述管理节点获取哈希区域的信息和映射关系;
52.第一确定模块,用于根据数据的标识的哈希值,确定与所述数据对应的哈希区域;
53.第二确定模块,用于根据所述映射关系确定所述哈希区域所映射的存储节点;
54.发送模块,用于发送所述数据至所述存储节点进行所述存储。
55.根据本公开实施例的第七方面,提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机指令,所述处理器用于从所述存储器中调用所述计算机指令,以执行如以上第一方面、第二方面和第三方面所述的方法。
56.根据本公开实施例的第八方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现根据以上第一方面、第二方面和第三方面所述的方法。
57.根据本公开实施例的存储集群的管理方法、装置、电子设备及存储介质,其由存储集群中的管理节点获取哈希区域的信息、及哈希区域和存储节点间的映射关系,进而根据该映射关系建立哈希区域和存储节点之间的映射,即,本公开实施例是通过逻辑哈希区域来映射存储节点的,这种映射关系灵活,便于维护和修改。
58.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
59.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
60.图1是可用于实现本公开实施例的电子设备的硬件配置的框图;
61.图2是根据本公开实施例的存储集群的管理方法的示意性流程图;
62.图3是根据本公开实施例的存储集群的结构示意图;
63.图4是根据本公开实施例的哈希环的结构示意图;
64.图5是根据本公开另一实施例的哈希环的结构示意图;
65.图6是根据本公开第三实施例的哈希环的结构示意图;
66.图7是根据本公开实施例的存储集群的数据存储方法的示意性流程图;
67.图8是根据本公开另一实施例的存储集群的数据存储方法的示意性流程图;
68.图9是根据本公开实施例的存储集群的管理装置的原理框图;
69.图10是根据本公开实施例的存储集群的数据存储装置的原理框图;
70.图11是根据本公开另一实施例的存储集群的数据存储装置的原理框图;
71.图12是根据本公开实施例的电子设备的原理框图。
具体实施方式
72.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
73.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
74.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
75.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
76.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
77.《硬件配置》
78.图1示出了可用于实现本公开的实施例的电子设备1000的硬件配置。
79.在一个例子中,该电子设备1000可以是存储集群中的节点,例如可以是存储集群中的管理节点,也可以是存储集群中的存储节点。另外,该节点通常为服务器。其中,服务器可以是虚拟机或物理机。
80.在另一个例子中,该电子设备1000也可以是存储集群外的客户端。
81.如图1所示,电子设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800,等等。其中,处理器1100可以是中央处理器cpu、微处理器mcu等。存储器1200例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括usb接口、耳机接口等。通信装置1400例如能够进行有线或无线通信。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
82.尽管在图1中对电子设备1000均示出了多个装置,但是,本公开可以仅涉及其中的部分装置,例如,电子设备1000只涉及存储器1200和处理器1100。
83.应用于本公开的实施例中,电子设备1000的存储器1200用于存储指令,该指令用于控制处理器1100执行本公开实施例提供的方法。
84.在上述描述中,技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
85.在本公开实施例中,存储集群可以包括若干个节点(服务器节点),其中,若干节点中包括有多个存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,而除管理节点外的其他节点是存储节点。
86.《方法实施例1》
87.本实施例提供了一种存储集群的管理方法,例如由存储集群中的管理节点实施。
88.本实施例中,存储集群可以是服务器集群,存储集群中包括多个存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点。另外,本实施例提供的存储集群的结构可以如图3所示,包括一个管理节点和四个存储节点,当然,还可以是如图4所示,包括三个管理节点,其中,该存储集群的管理方法可以由三个管理节点中的任意一个管理节点实施,该作为实施主体的管理节点可以由该三个管理节点投票选举出来,该作为实施主体的管理节点和其他两个管理节点之间可以进行数据备份,以避免在作为实施主体的管理节点宕机后,可以由其他两个管理节点重新选举出作为实施主体的管理节点,并由选举出的管理节点继续执行该存储集群的管理方法。
89.图2是根据本公开实施例的存储集群的管理方法的流程示意图,如图2所示,该方法可以包括如下步骤s2100~s2300:
90.步骤s2100,获取哈希区域的信息。
91.哈希区域通常为哈希环上划分出的区域,哈希区域的信息包括哈希区域的起始点的哈希值和结束点的哈希值。该哈希值是通过一定的哈希算法计算出来的数值,该哈希算法例如但不限于包括md5消息摘要算法、数字签名算法(digital signature algorithm,dsa)和pbkdf2算法。
92.哈希环可以是一致性哈希环,该一致性哈希环是利用一致性哈希算法将整个哈希值空间组织成一个虚拟的圆环,本实施例提供的哈希环的结构如图4所示。
93.本实施例中,哈希区域可以是将哈希环进行等分所划分出的区域。示例性地,如图4所示的哈希环,该哈希环上被均匀的划分成4份,即,哈希区域r1、哈希区域r2、哈希区域r3和哈希区域r4。其中,该哈希区域r1的起始点的哈希值可以是(1),结束点的哈希值可以是(2),该哈希区域r2的起始点的哈希值可以是(2),结束点的哈希值可以是(3),该哈希区域r3的起始点的哈希值可以是(3),结束点的哈希值可以是(4),该哈希区域r4的起始点的哈希值可以是(4),结束点的哈希值可以是(1)。
94.在获取哈希区域的信息之后,进入:
95.步骤s2200,获取哈希区域和存储节点之间的映射关系。
96.该映射关系可以存储于映射关系表中,该映射关系表中包含多条映射数据,其中,一条映射数据为一个哈希区域的信息和其对应的存储节点的标识之间的映射关系。
97.本实施例中,本步骤s2200中获取哈希区域和存储节点之间的映射关系可以进一步包括:根据预设的映射条件,生成哈希区域和存储节点之间的映射关系。
98.该预设的映射条件包括:每一哈希区域至少映射三个不同的存储节点。
99.以图4所示的哈希环上所划分的哈希区域r1、哈希区域r2、哈希区域r3和哈希区域r4,以及,图3所示的存储节点d、存储节点e、存储节点f和存储节点g为例,以上映射关系表中例如包括多条映射数据对应多个映射关系,其中,一条映射数据可以是:哈希区域r1的信息和存储节点d的标识、存储节点e的标识和存储节点f的标识,一条映射数据可以是:哈希区域r2的信息和存储节点e的标识、存储节点f的标识和存储节点g的标识,一条映射数据可以是:哈希区域r3的信息和存储节点d的标识、存储节点e的标识和存储节点g的标识,一条映射数据可以是:哈希区域r4的信息和存储节点d的标识,存储节点f的标识和存储节点g的标识。
100.在获取哈希区域和存储节点之间的映射关系之后,进入:
101.步骤s2300,根据映射关系建立哈希区域和存储节点之间的映射。
102.本实施例中,本步骤s2300中根据映射关系建立哈希区域和存储节点之间的映射可以进一步包括:
103.向存储节点下发其映射的哈希区域的信息,以使得存储节点将信息存储为元数据并且创建哈希区域的副本。
104.以上哈希区域的副本用于存储哈希区域对应的数据,并且,一个哈希区域的副本,包括该哈希区域所对应的数据构成的集合。
105.示例性地,可以是向存储节点d下发其映射的哈希区域r1的信息、哈希区域r3的信息和哈希区域r4的信息,以使得存储节点d将哈希区域r1的信息、哈希区域r3的信息和哈希区域r4的信息存储为元数据并且创建哈希区域r1的副本,哈希区域r3的副本和哈希区域r4的副本,可以理解的是,该存储节点d的元数据中保存有该存储节点d和所映射的哈希区域r1的起始点的哈希值和结束点的哈希值、哈希区域r3的起始点的哈希值和结束点的哈希值,及哈希区域r4的起始点的哈希值和结束点的哈希值。
106.可以是向存储节点e下发其映射的哈希区域r1、哈希区域r2和哈希区域r3的信息,以使得该存储节点e将哈希区域r1、哈希区域r2和哈希区域r3的信息存储为元数据并且创建哈希区域r1的副本,哈希区域r2的副本和哈希区域r3的副本。
107.关于存储节点e、存储节点f和存储节点g如何将信息存储为元数据并且创建哈希区域的副本,可以参见以上对存储节点d的介绍,本实施例在此不做赘述。
108.根据本公开实施例的存储集群的管理方法,其会由存储集群中的管理节点获取哈希区域的信息、及哈希区域和存储节点间的映射关系,进而根据该映射关系建立哈希区域和存储节点之间的映射,即,本公开实施例是通过逻辑哈希区域来映射存储节点的,这种映射关系灵活,便于维护和修改。
109.在一个实施例中,在执行完以上步骤s2100中获取哈希区域的信息和步骤s2200中获取哈希区域和存储节点之间的映射关系之后,该存储集群的管理方法还包括:
110.将哈希区域的信息和映射关系发送给存储集群外的客户端,以供客户端进行数据读写。
111.示例性地,可以是将哈希区域r1的信息、及哈希区域r1和存储节点d、存储节点e和存储节点f的映射关系下发至客户端,将哈希区域r2的信息、及哈希区域r2和存储节点e、存储节点f和存储节点g的映射关系下发至客户端,将哈希区域r3的信息、及哈希区域r3和存储节点d、存储节点e和存储节点g的映射关系下发至客户端,将哈希区域r4的信息、及哈希
区域r4和存储节点d、存储节点f和存储节点g的映射关系下发至客户端,以方便客户端进行数据读写,如何由客户端进行数据读写可以参照以下方法实施例3,本实施例在此不做详细赘述。
112.在一个实施例中,在根据以上步骤s2300根据映射关系建立哈希区域和存储节点之间的映射之后,该存储集群的管理方法还可以包括:
113.将同一哈希区域所映射的全部存储节点的信息下发给哈希区域的每一个存储节点,以使得同一哈希区域的副本形成一个基于主从机制的副本集群。
114.该副本集群可以是raft集群,该raft集群中的各个副本可以投票选举出主副本和从副本。
115.示例性地,可以是将哈希区域r1所映射的存储节点d,存储节点e和存储节点f的信息下发至存储节点d,存储节点e和存储节点f,以使得该哈希区域r1的副本形成一个基于主从机制的副本集群,例如可以是存储节点d上有哈希区域r1的主副本,存储节点e和存储节点f上有哈希区域r1的从副本,可以理解的是,存储节点d、存储节点e和存储节点f上均保存有哈希区域r1的标识、除自身存储节点之外的其他存储节点的标识,以及主从副本的标识。
116.关于哈希区域r2、哈希区域r3和哈希区域r4的解释同以上哈希区域r1的解释相同,本实施例在此不做详细赘述。
117.根据本实施例的方法,其可以将同一哈希区域所映射的全部存储节点的信息下发给哈希区域的每一个存储节点,以使得同一哈希区域的副本形成一个基于主从机制的副本集群,即,各个存储节点能够获知自身存储节点和其位于同一哈希区域的其他存储节点的信息,由于每个存储节点上有哈希区域的副本,这样,在任意一个哈希区域的主副本宕机的情况下,便可由其他从副本投票选取出新的主副本。
118.在一个实施例中,在根据以上步骤s2300根据映射关系建立哈希区域和存储节点之间的映射之后,该存储集群的管理方法还包括如下步骤s3100~s3300:
119.步骤s3100,获取映射于目标存储节点的哈希区域作为目标哈希区域。
120.目标存储节点为数据量超过设定的数据量阈值的存储节点。该设定的数据量阈值可以是根据实际应用场景和实际需求设置的数值。
121.以目标存储节点为存储节点d为例,即,该目标存储节点d为数据量超过设定的数据量阈值的存储节点,同时,该存储节点d所映射的哈希区域为哈希区域r1、哈希区域r3和哈希区域r4,则,可以是将该哈希区域r1、哈希区域r3和哈希区域r4中的任意一个或多个作为目标哈希区域,例如可将哈希区域r1作为目标哈希区域。
122.步骤s3200,建立目标哈希区域与新加入至存储集群的存储节点间的映射。
123.继续以目标哈希区域为哈希区域r1为例,在此,可以根据本步骤s3200建立该哈希区域r1与新加入至存储集群的存储节点h间的映射。
124.步骤s3300,解除目标存储节点和目标哈希区域的映射。
125.本实施例中,本步骤s3300中解除目标存储节点和目标哈希区域的映射可以进一步包括:下发指令给目标存储节点,使得目标存储节点删除区域信息并且删除副本。
126.继续以目标哈希区域为哈希区域r1,目标存储节点为存储节点d为例,在此,管理节点可以下发指令给存储节点d,存储节点d在接收到下发指令后,可以删除自身元数据中哈希区域r1的信息,同时,删除自身的哈希区域r1的副本。
127.本实施例中,例如可以更新本地和客户端所存储的哈希区域r1和存储节点之间的映射关系表,更新后的映射关系表可以为哈希区域r1的信息和存储节点e、存储节点f和存储节点h。
128.根据本实施例的方法,其在存储集群中引入新的存储节点的情况下,不会如现有的直接将该新的存储节点的哈希值映射到哈希环上,而是建立新的存储节点和目标哈希区域间的映射,即,新的存储节点不直接和哈希环上的哈希值绑定,而是通过逻辑目标哈希区域来映射新的存储节点,此时不会造成sla抖动。
129.同时,由于该目标哈希区域所映射的存储节点为数据量特别大的存储节点,从而,在为将目标哈希区域映射新的存储节点后,可以由该新的存储节点重新创建目标哈希区域的副本,实现了数据转移,进一步实现了负载均衡。
130.在一个实施例中,在根据以上步骤s2300根据映射关系建立哈希区域和存储节点之间的映射之后,该存储集群的管理方法还包括:
131.在哈希区域中的任一存储节点宕机的情况下,判断宕机的存储节点上是否有该哈希区域的主副本;在宕机的存储节点上有该哈希区域的主副本的情况下,由该哈希区域内的其他从副本重新选举出新的主副本。
132.示例性地,可以是在哈希区域r1中的存储节点d宕机的情况下,先判断该存储节点d上是否有该哈希区域r1的主副本,在有该哈希区域r1的主副本的情况下,由该哈希区域r1内的其他从副本重新选举出主副本。
133.当然,还可以更新本地和客户端所存储的哈希区域r1和存储节点之间的映射关系表,由于原先的哈希区域r1的存储节点之间的映射关系为:哈希区域r1的信息和存储节点d、存储节点e和存储节点f,更新后的映射关系表可以为哈希区域r1的信息和存储节点e和存储节点f。
134.根据本实施例的方法,其在哈希区域内的任一存储节点宕机的情况下,通过修改逻辑哈希区域来解决这种问题,此时不会造成sla抖动。
135.在一个实施例中,在根据以上步骤s2300根据映射关系建立哈希区域和存储节点之间的映射之后,该存储集群的管理方法还包括如下步骤s4100~s4200:
136.步骤s4100,获取由第一哈希区域分裂出的多个第二哈希区域的范围信息。
137.第一哈希区域为待分裂的哈希区域。
138.本实施例中,可以根据目标分裂数对第一哈希区域进行均分得到第二哈希区域的范围,该目标分裂数可以是根据实际应用场景和实际需求设置的数值,该目标分裂数可以通过配置接口进行配置。
139.示例性地,如图5所示,以第一哈希区域为哈希区域r1,目标分裂数为2为例,例如可以将该哈希区域r1均分得到第二哈希区域r11和第二哈希区域r12,其中,该第二哈希区域r11的起始点的哈希值为(1),结束点的哈希值为(11),该第二哈希区域r12的起始点的哈希值为(11),结束点的哈希值为(2)。
140.步骤s4200,向第一存储节点下发分裂指令,以使得第一存储节点根据分裂指令将第一哈希区域的副本分裂为多个第二哈希区域的副本并且修改第一存储节点的元数据。
141.分裂指令中含有第二哈希区域的范围信息,第一存储节点是第一哈希区域对应的存储节点。
142.继续上述示例,由于第一哈希区域r1所映射的全部存储节点为存储节点d、存储节点e和存储节点f,即,存储节点d、存储节点e和存储节点f上各有哈希区域r1的副本,在此,管理节点会向存储节点d、存储节点e和存储节点f下发分裂指令,存储节点d、存储节点e和存储节点f在接收到分裂指令后,会将第一哈希区域r1的副本分裂为第二哈希区域r12和第二哈希区域r12的副本,同时,会根据分裂指令中的第二哈希区域r11的范围信息和第二哈希区域r12的范围信息,修改自身的元数据。应当理解的是,此时数据并没有转移至分裂后的第二哈希区域r11和第二哈希区域r12。
143.步骤s4300,建立第二哈希区域与第二存储节点之间的映射。
144.第二存储节点是需要进行数据转移的存储节点,该第二存储节点可以是第一存储节点中的任意一个或多个。
145.继续上述示例,以第二存储节点为存储节点d为例,在此,根据本步骤s4300分别建立该第二哈希区域r11和存储节点d的映射,以及,建立该第二哈希区域r12和存储节点d的映射。
146.步骤s4400,解除第二哈希区域和第一存储节点的映射。
147.本步骤s4400中解除第二哈希区域和第一存储节点的映射可以进一步包括:下发指令给第一存储节点,使得第一存储节点删除区域信息并且删除副本。
148.继续上述示例,在此,管理节点可以下发指令给存储节点e和存储节点f,存储节点e和存储节点f在接收到指令后,可以删除自身元数据中第二哈希区域r11的区域信息和第二哈希区域r12的区域信息,同时,删除自身所存储的第二哈希区域r11的副本和第二哈希区域r12的副本。
149.根据本实施例的方法,其在第一哈希区域上副本的数据量特别大的情况下,会对该第一哈希区域进行分裂,并进行数据的转移,进而使得每个哈希区域上面的数据分布均匀。
150.在一个实施例中,在根据以上步骤s2300根据映射关系建立哈希区域和存储节点之间的映射之后,该存储集群的管理方法还包括如下步骤s5100~s5300:
151.步骤s5100,接收合并指令。
152.合并指令用于对多个连续的哈希区域进行合并,以获得合并后的哈希区域。
153.示例性地,如图6所示,例如可以将连续的哈希区域r1和哈希区域r2进行合并,以获得合并后的哈希区域r21。
154.步骤s5200,建立合并后的哈希区域与存储节点的映射。
155.继续上述示例,由于哈希区域r1所映射的全部存储节点包括存储节点d、存储节点e和存储节点f,哈希区域r2所映射的全部存储节点包括存储节点e、存储节点f和存储节点g,例如可以根据本步骤s5200仅建立存储节点e和哈希区域r21的映射,存储节点f和哈希区域r21的映射,以及存储节点g和哈希区域r21的映射。
156.步骤s5300,解除合并前的哈希区域的映射关系。
157.例如,在存储节点e和存储节点f上,将哈希区域r1和哈希区域r2的副本合并;在存储节点g上,将哈希区域r2所映射的存储节点g上的副本设置为哈希区域r1的一个副本完成同步;然后将哈希区域r1和哈希区域r2的副本合并,并删除存储节点d上的哈希区域r1的副本。
158.根据本实施例的方法,其在任意一个哈希区域上数据量少的情况下,可以将连续的两个哈希区域进行合并,进而使得每个哈希区域上面的数据分布均匀。
159.《方法实施例2》
160.本实施例提供了一种存储集群的数据存储方法,存储集群包括存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,该方法例如由存储集群中的存储节点实施。
161.图7是根据本公开实施例的存储集群的数据存储方法的流程示意图,如图7所示,该方法可以包括如下步骤s7100~s7300:
162.步骤s7100,从管理节点处获取对应的哈希区域的信息,存储为元数据并且创建副本。
163.本实施例中,以存储节点d为实施主体,该存储节点d会将获取到的哈希区域r1的信息、哈希区域r3的信息和哈希区域r4的信息存储为元数据并且创建哈希区域r1的副本,哈希区域r3的副本和哈希区域r4的副本。
164.哈希区域的信息包括哈希区域的起始点的哈希值和结束点的哈希值。
165.步骤s7200,接收待存储的数据,根据元数据确定是否为哈希区域的数据。
166.本实施例中,存储引擎中会预先存储数据的标识和其所对应的哈希区域的关系。该数据的标识可以是数据的key。
167.继续上述示例,存储节点d在接收到待存储的数据后,会在自身的元数据中查找该数据的key是否和存储节点d所映射的哈希区域绑定。
168.步骤s7300,在为哈希区域的数据的情况下,将待存储的数据加入对应的副本中。
169.继续上述示例,存储节点d在自身的元数据中查找到该数据的key和存储节点d所映射的哈希区域r1绑定的情况下,会将该数据加入存储节点d所映射的哈希区域r1的副本中。
170.根据本公开实施例的存储集群的数据存储方法,其会由存储节点从管理节点处获取对应的哈希区域的信息,并将该信息存储为元数据并且创建哈希区域的副本,同时,存储节点在接收到待存储的数据后,会根据元数据确定在为哈希区域的数据的情况下,将待存储的数据加入对应的副本中,即,本公开实施例存储节点在确定接收到的数据为自身所对应哈希区域的数据的情况下,会将该数据加入至对应的哈希区域的副本,便于数据的维护。
171.在一个实施例中,在从管理节点处获取对应的哈希区域的信息,将信息存储为元数据并且创建哈希区域的副本之后,该存储集群的数据存储方法还包括:
172.控制副本加入哈希区域对应的副本集群。
173.以上副本集群采用主从机制,该副本集群可以是raft集群。该raft集群中的各个副本可以投票选举出主副本和从副本。
174.本实施例中,关于如何控制副本加入哈希区域对应的副本集群可以参见上述方法实施例1,本实施例在此不做详细赘述。
175.《方法实施例3》
176.本实施例提供了另外一种存储集群的数据存储方法,存储集群包括多个存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,该方法例如由存储集群外的客户端实施。
177.图8是根据本公开实施例的存储集群的数据存储方法的流程示意图,如图8所示,该方法可以包括如下步骤s8100~s8300:
178.步骤s8100,从管理节点获取哈希区域的信息和映射关系。
179.示例性地,客户端所获取到的可以是哈希区域r1的起始点的哈希值和结束点的哈希值,哈希区域r2的起始点的哈希值和结束点的哈希值,哈希区域r3的起始点的哈希值和结束点的哈希值,以及,哈希区域r4的起始点的哈希值和结束点的哈希值。
180.同时,获取到的映射关系可以是:哈希区域r1的信息和存储节点d的标识,存储节点e的标识和存储节点f的标识,一条映射数据可以是:哈希区域r2的信息和存储节点e的标识,存储节点f的标识和存储节点g的标识,一条映射数据可以是:哈希区域r3的信息和存储节点d的标识,存储节点e的标识和存储节点g的标识,一条映射数据可以是:哈希区域r4的信息和存储节点d的标识,存储节点f的标识和存储节点g的标识。
181.步骤s8200,根据数据的标识的哈希值,确定与数据对应的哈希区域。
182.该数据的标识的哈希值也可以是根据以上哈希函数计算出来。
183.示例性地,客户端查找到数据的标识的哈希值位于哈希区域r1的起始点的哈希值和结束点的哈希值之间,便可确定与数据对应的哈希区域为哈希区域r1。
184.步骤s8300,根据映射关系确定哈希区域所映射的存储节点。
185.示例性地,客户端会根据以上步骤s8100所获取到的映射关系确定哈希区域r1所映射的存储节点为存储节点d,存储节点e和存储节点f。
186.步骤s8400,发送数据至存储节点进行存储。
187.示例性地,客户端会将数据发送至存储节点d,存储节点e和存储节点f进行存储。
188.根据本公开实施例的方法,客户端需要发送数据进行存储时,仅需要从管理节点处去获取哈希区域和存储节点的映射关系,及哈希区域的信息,并根据数据的标识的哈希值确定与数据对应的哈希区域,以及,根据映射关系确定哈希区域所映射的存储节点,进而发送数据至该存储节点进行存储,便于数据的维护。
189.《装置实施例1》
190.本实施例中,还提供一种存储集群的管理装置,存储集群包括多个存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,装置应用于管理节点,如图9所示,该装置9000可以包括第一获取模块9100、第二获取模块9200和建立模块9300。
191.第一获取模块9100,用于获取哈希区域的信息,所述哈希区域为哈希环上划分出的区域。
192.哈希区域的信息包括所述哈希区域的起始点的哈希值和结束点的哈希值。
193.第二获取模块9200,用于获取哈希区域和存储节点之间的映射关系。
194.建立模块9300,用于根据所述映射关系建立哈希区域和存储节点之间的映射。
195.在一个实施例中,建立模块9300可以包括发送单元和创建单元(图中未示出),该发送单元用于向存储节点下发其映射的哈希区域的信息,以使得存储节点通过创建单元将所述信息存储为元数据并且创建所述哈希区域的副本,所述哈希区域的副本用于存储所述哈希区域对应的数据。
196.在一个实施例中,装置9000还包括下发模块(图中未示出),在第二获取模块9200获取哈希区域和存储节点之间的映射关系之后,该下发模块用于将所述哈希区域的信息和
所述映射关系发送给所述存储集群外的客户端,以供所述客户端进行数据读写。
197.在一个实施例中,第二获取模块9200在获取哈希区域和存储节点之间的映射关系时,可以用于根据预设的映射条件,生成哈希区域和存储节点之间的映射关系。
198.映射条件包括:每一所述哈希区域至少映射三个不同的所述存储节点。
199.在一个实施例中,在建立模块9300根据所述映射关系建立哈希区域和存储节点之间的映射之后,该下发模块还用于将同一所述哈希区域所映射的全部存储节点的信息下发给所述哈希区域的每一个存储节点,以使得同一所述哈希区域的副本形成一个基于主从机制的副本集群。
200.在一个实施例中,该装置9000还包括新增模块(图中未示出),在建立模块9300根据所述映射关系建立哈希区域和存储节点之间的映射之后,该新增模块:用于获取映射于目标存储节点的哈希区域作为目标哈希区域;建立所述目标哈希区域与新加入至所述存储集群的存储节点间的映射;解除所述目标存储节点和所述目标哈希区域的映射。
201.目标存储节点为数据量超过设定的数据量阈值的存储节点。
202.在一个实施例中,该装置9000还包括分裂模块(图中未示出),在建立模块9300根据所述映射关系建立哈希区域和存储节点之间的映射之后,该分裂模块:用于获取由第一哈希区域分裂出的多个第二哈希区域的范围信息;向第一存储节点下发分裂指令,以使得所述第一存储节点根据所述分裂指令将所述第一哈希区域的副本分裂为多个所述第二哈希区域的副本并且修改所述第一存储节点的元数据。
203.分裂指令中含有所述第二哈希区域的范围信息,第一存储节点是所述第一哈希区域对应的存储节点。
204.在一个实施例中,该分裂模块可以包括建立单元和解除单元(图中未示出),该建立单元用于建立所述第二哈希区域与第二存储节点的映射。该解除单元用于解除所述第二哈希区域和所述第一存储节点的映射。
205.在一个实施例中,该装置9000还包括合并模块(图中未示出),在建立模块9300根据所述映射关系建立哈希区域和存储节点之间的映射之后,该合并模块,用于接收合并指令;建立合并后的哈希区域与存储节点的映射;解除合并前的哈希区域的映射关系。
206.合并指令用于对多个连续的哈希区域进行合并。
207.《装置实施例2》
208.本实施例中,还提供一种存储集群的数据存储装置,存储集群包括存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,装置应用于存储节点,如图10所示,该装置10000可以包括第三获取模块10100、接收模块10200和存储模块10300。
209.第三获取模块10100,用于从所述管理节点处获取对应的哈希区域的信息,存储为元数据并且创建副本。
210.接收模块10200,用于接收待存储的数据,根据所述元数据确定是否为所述哈希区域的数据。
211.存储模块10300,用于在为所述哈希区域的数据的情况下,将所述待存储的数据加入对应的所述副本中。
212.在一个实施例中,该装置10000还包括加入模块(图中未示出),在第三获取模块10100从所述管理节点处获取对应的哈希区域的信息,将所述信息存储为元数据并且创建
所述哈希区域的副本之后,该加入模块,用于控制所述副本加入所述哈希区域对应的副本集群,所述副本集群采用主从机制。
213.《装置实施例3》
214.本实施例中,还提供一种存储集群的数据存储装置,存储集群包括存储节点和至少一个管理节点,管理节点用于管理存储集群中的存储节点,装置应用于存储集群外的客户端,如图11所示,该装置11000可以包括第四获取模块11100、第一确定模块11200、第二确定模块11300和发送模块11400。
215.第四获取模块11100,用于从所述管理节点获取哈希区域的信息和映射关系。
216.第一确定模块11200,用于根据数据的标识的哈希值,确定与所述数据对应的哈希区域。
217.第二确定模块11300,用于根据所述映射关系确定所述哈希区域所映射的存储节点。
218.发送模块11400,用于发送所述数据至所述存储节点进行所述存储。
219.《电子设备实施例》
220.本公开实施例提供了一种电子设备12000,包括处理器12100和存储器12200,存储器12200中存储有计算机指令,计算机指令被处理器12100执行时,实现前述任一实施例提供的方法。
221.《介质实施例》
222.本发明实施例提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令被处理器执行时,实现前述任一实施例提供的方法。
223.本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
224.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
225.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
226.用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、
机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c 等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
227.这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
228.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
229.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
230.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
231.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其
它普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献