一种数据存储方法、装置和系统与流程

文档序号:37512870发布日期:2024-04-01 14:20阅读:27来源:国知局
一种数据存储方法、装置和系统与流程

本技术涉及数据存储,特别涉及一种数据存储方法、装置和系统。


背景技术:

1、目前,为了解决传统的内存键值存储系统所存在的资源浪费和可扩展性瓶颈,提出了一种分离式的内存键值存储架构(或称为存算分离),通过将存储功能与计算功能解耦,形成独立的计算和存储资源池,以解决传统键值存储系统的资源浪费问题,并提升键值存储系统的可扩展性。

2、其中,在键值存储系统提供存储服务时,常采用多副本技术(即同一份数据维护多个副本)来保证数据的可靠性,强一致性是存储服务提供的一种一致性标准。

3、在目前的分离式内存架构中,用于提供内存并作为数据存储端的节点(例如称为存储节点或者内存节点)由于不具备计算能力,无法对多副本技术中的冲突访问进行处理,无法保障分离式内存架构下的多副本的强一致性。


技术实现思路

1、本技术实施例提供一种数据存储方法和系统,用于在分离式内存架构下保障多副本的强一致性。

2、第一方面,本技术实施例提供了一种数据存储方法,该方法可以应用于数据存储系统中的第一计算节点,所述数据存储系统中包括至少一个计算节点以及至少两个存储节点,所述至少两个存储节点中包括一个主存储节点和m个备存储节点,m为大于或等于1的整数,所述主存储节点存储有主哈希索引,所述备存储节点存储有备哈希索引,所述主哈希索引和所述备哈希索引用于记录数据的存储地址,所述方法可以包括:

3、获取第一存储地址中的第一数据,更新所述第一数据为第二数据,将所述第二数据存储于第二存储地址,并请求将所述m个备存储节点存储的备哈希索引中的所述第一存储地址修改为所述第二存储地址,所述第一存储地址记录在所述主哈希索引和/或所述备哈希索引中与目标哈希值关联的目标索引位置;

4、获取第一信息,所述第一信息包括m个存储地址,所述m个存储地址记录在所述m个备存储节点存储的备哈希索引中的目标索引位置,所述m个存储地址由至少一个计算节点更新得到,所述至少一个计算节点包括所述第一计算节点;

5、若根据所述第一信息,确定所述m个备存储节点存储的备哈希索引中的目标索引位置记录的存储地址不一致,则确定所述第一计算节点是否为冲突解决方;

6、若所述第一计算节点为冲突解决方,则将所述m个备存储节点存储的备哈希索引中的目标索引位置处所述由至少一个计算节点更新的存储地址更新为所述第二存储地址,并将所述主哈希索引中的第一存储地址更新为所述第二存储地址。

7、通过上述方法,在分离式的存储架构(存算分离)下,第一计算节点对m个备存储节点进行写操作时请求更新这m个备存储节点存储的备哈希索引中的目标索引位置上记录的信息,若m个备哈希索引中的同一目标索引位置上记录的信息不一致,即哈希索引存在访问冲突,第一计算节点需要分析自身是否为冲突解决方,并在自身为冲突解决方的情况下,在主哈希索引和/或备哈希索引的同一目标哈希索引位置达成一致性结果,以在分离式内存架构下保障多副本的强一致性。

8、需要说明的是,本技术实施例中描述的至少两个存储节点,是分离式的存储架构的存储资源池中的保存同一哈希索引的多个副本的节点,并不限定该架构中的全部存储节点,即该架构的存储资源池中的存储节点的数量大于或等于上述至少两个存储节点的数量。

9、结合第一方面,在一种可能的设计中,所述确定所述第一计算节点是否为冲突解决方,包括:

10、根据所述第一信息,若所述第一计算节点满足第一条件,则确定所述第一计算节点为冲突解决方,其中,所述第一条件包括:所述第一计算节点成功更新的备哈希索引的数量与所述m的比值大于或等于第一阈值。

11、通过上述方法,可以预先为数据存储系统的至少一个计算节点配置或保存冲突解决策略(包括第一条件),使得在针对同一目标索引位置存在冲突的情况下,第一计算节点作为其中的一个冲突节点,可以根据预设策略确定自身是否是冲突解决方,即自身是否具有解决冲突的权限。

12、结合第一方面,在一种可能的设计中,若所述第一计算节点未满足所述第一条件,则还包括:

13、根据所述第一信息,若所述第一计算节点满足预设的第二条件,则确定所述第一计算节点为冲突解决方,所述第二条件包括:所述第一计算节点在所述第一备哈希索引的目标索引位置修改的存储地址的值为所述第一信息包含的m个存储地址的值中的最大值;或者所述第一计算节点在所述第一备哈希索引的目标索引位置修改的存储地址的值为所述第一信息包含的m个存储地址的值中的最小值。

14、通过上述方法,若第一计算节点根据部分策略无法确定自身是否为冲突解决方,则可以再次读取主哈希索引的目标索引位置处所记录的值,以确定冲突是否被其它冲突解决方解决,若未解决,则第一计算节点可以进一步基于其它策略自身是否为冲突解决方。

15、结合第一方面,在一种可能的设计中,所述若所述第一计算节点为冲突解决方,则将所述m个备存储节点存储的备哈希索引中的目标索引位置处所述由至少一个计算节点更新的存储地址更新为所述第二存储地址,并将所述主哈希索引中的第一存储地址更新为所述第二存储地址,包括:

16、若所述第一计算节点为冲突解决方,则所述第一计算节点确定所述主哈希索引中的目标索引位置处记录的存储地址是否与所述第一存储地址相同;

17、若相同,则所述第一计算节点将所述m个备存储节点存储的备哈希索引中的目标索引位置处所述由至少一个计算节点更新的存储地址更新为所述第二存储地址。

18、通过上述方法,若第一计算节点根据部分策略无法确定自身是否为冲突解决方、且冲突已经被其它计算节点所解决,则第一计算节点可以结束写操作。

19、结合第一方面,在一种可能的设计中,所述请求将所述m个备存储节点存储的备哈希索引中的所述第一存储地址修改为所述第二存储地址,包括:

20、通过比较交换cas操作,请求将所述m个备存储节点存储的备哈希索引中的所述第一存储地址修改为所述第二存储地址。

21、结合第一方面,在一种可能的设计中,所述获取第一存储地址中的第一数据,包括:

22、通过远端直接内存访问rdma读操作获取第一存储地址中的第一数据;

23、所述将所述第二数据存储于第二存储地址,包括:

24、通过rdma写操作,将所述第二数据存储于第二存储地址。

25、第二方面,本技术实施例提供了一种数据存储装置,应用于数据存储系统中的第一计算节点,所述数据存储系统中包括至少一个计算节点以及至少两个存储节点,所述至少两个存储节点中包括一个主存储节点和m个备存储节点,m为大于或等于1的整数,所述主存储节点存储有主哈希索引,所述备存储节点存储有备哈希索引,所述主哈希索引和所述备哈希索引用于记录数据的存储地址,所述装置包括:

26、写单元,用于获取第一存储地址中的第一数据,更新所述第一数据为第二数据,将所述第二数据存储于第二存储地址,并请求将所述m个备存储节点存储的备哈希索引中的所述第一存储地址修改为所述第二存储地址,所述第一存储地址记录在所述主哈希索引和/或所述备哈希索引中与目标哈希值关联的目标索引位置;

27、获取单元,用于获取第一信息,所述第一信息包括m个存储地址,所述m个存储地址记录在所述m个备存储节点存储的备哈希索引中的目标索引位置,所述m个存储地址由至少一个计算节点更新得到,所述至少一个计算节点包括所述第一计算节点;

28、确定单元,用于若根据所述第一信息,确定所述m个备存储节点存储的备哈希索引中的目标索引位置记录的存储地址不一致,则确定所述第一计算节点是否为冲突解决方;

29、更新单元,用于若所述第一计算节点为冲突解决方,则将所述m个备存储节点存储的备哈希索引中的目标索引位置处所述由至少一个计算节点更新的存储地址更新为所述第二存储地址,并将所述主哈希索引中的第一存储地址更新为所述第二存储地址。

30、结合第二方面,在一种可能的设计中,所述确定单元具体用于:

31、根据所述第一信息,若所述第一计算节点满足第一条件,则确定所述第一计算节点为冲突解决方,其中,所述第一条件包括:所述第一计算节点成功更新的备哈希索引的数量与所述m的比值大于或等于第一阈值。

32、结合第二方面,在一种可能的设计中,若所述第一计算节点未满足所述第一条件,则所述确定单元还用于:

33、根据所述第一信息,若所述第一计算节点满足预设的第二条件,则确定所述第一计算节点为冲突解决方,所述第二条件包括:所述第一计算节点在所述第一备哈希索引的目标索引位置修改的存储地址的值为所述第一信息包含的m个存储地址的值中的最大值;或者所述第一计算节点在所述第一备哈希索引的目标索引位置修改的存储地址的值为所述第一信息包含的m个存储地址的值中的最小值。

34、结合第二方面,在一种可能的设计中,所述更新单元具体用于:

35、若所述第一计算节点为冲突解决方,则所述第一计算节点确定所述主哈希索引中的目标索引位置处记录的存储地址是否与所述第一存储地址相同;

36、若相同,则所述第一计算节点将所述m个备存储节点存储的备哈希索引中的目标索引位置处所述由至少一个计算节点更新的存储地址更新为所述第二存储地址。

37、结合第二方面,在一种可能的设计中,所述写单元具体用于:

38、通过比较交换cas操作,请求将所述m个备存储节点存储的备哈希索引中的所述第一存储地址修改为所述第二存储地址。

39、结合第二方面,在一种可能的设计中,所述写单元具体用于:

40、通过远端直接内存访问rdma读操作获取第一存储地址中的第一数据;

41、所述写单元具体用于:

42、通过rdma写操作,将所述第二数据存储于第二存储地址。

43、第三方面,本技术实施例提供了一种通信装置,包括至少一个处理器和接口电路,所述接口电路用于为所述至少一个处理器提供数据或者代码指令,所述至少一个处理器用于通过逻辑电路或执行代码指令实现如上述第一方面以及第一方面任一可能设计所述的方法。

44、第四方面,本技术实施例提供了一种数据存储系统,包括:至少一个计算节点和至少两个存储节点,所述至少一个计算节点中的第一计算节点用于实现如上第一方面以及第一方面任一可能设计所述的方法。

45、第五方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如上第一方面以及第一方面任一可能设计所述的方法。

46、第六方面,本技术实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如上第一方面以及第一方面任一可能设计所述的方法。

47、本技术实施例在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。

48、上述第二方面至第六方面中任一方面中的任一可能实现方式可以达到的技术效果,可以相应参照上述第一方面至第二方面中任一方面中的任一可能实现方式可以达到的技术效果描述,重复之处不予论述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1