一种高可用NAS集群的实现方法及装置与流程

文档序号:11519458阅读:288来源:国知局
一种高可用NAS集群的实现方法及装置与流程

本发明涉及计算机存储技术领域,尤其涉及一种高可用nas集群的实现方法及装置。



背景技术:

随着计算机应用和网络技术的飞速发展,数字化信息呈爆炸性增长的趋势,用户对存储系统的可用性和可扩展性提出了更高的要求,单一的nas已经不能够满足用户的需要,导致“nas集群技术”的出现。这种nas集群系统,结合了nas和集群系统两方面的优点:当nas集群中的一个子系统发生故障时,集群系统迅速做出反映,将该子系统的任务分配到集群中其它正在工作的同类子系统上执行;当总体的工作流量超出了一个集群中各系统的能力时,将有其它子系统加入到该集群中。

传统的高可用nas集群的实现存在依赖底层文件系统的问题,使得nas和底层文件系统耦合性很高;而解耦的nas集群又不能保证数据的不丢失。因此需要一种新方法来解决nas集群的数据迁移冗余备份问题,提高nas集群的高可用性。



技术实现要素:

针对以上技术问题,本发明的目的是提供一种基于高可用nas集群的数据迁移冗余的实现方法及装置,在nas层面实现了数据迁移冗余备份,保证了数据在节点出现故障的情况下,不会出现数据的丢失,实现了nas集群的高可用性。

为达到上述目的,本发明通过以下技术方案实现:

本发明提供一种高可用nas集群的实现方法,包括以下步骤:

a:记录请求端向本地数据库的服务端节点发送记录请求;

b:其他数据库中该记录的本地主节点根据该记录请求的属性,判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移;

c:本地数据库的服务端节点接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库。

优选地,在步骤a之前,还包括:记录请求端预先设定记录请求的属性为只读和读写。

优选地,在步骤a之后,还包括:本地数据库中该记录的本地主节点通过检索本地数据库,判断本地数据库是否有该的记录本地记录节点,若有,则记录请求端开始处理本地数据库内的该记录;若没有,则将该记录请求发送到其他数据库中该记录的本地主节点。

优选地,在将该记录请求发送到其他数据库中该记录的本地主节点之后,还包括:对其他数据库进行初始化处理。

优选地,步骤c包括:如果不需要,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点。

优选地,所述本地数据库和其他数据库均为key-value数据库。

本发明还提供了一种高可用nas集群的实现装置,包括:

记录请求发送及处理模块,用于记录请求端向本地数据库的服务端节点发送记录请求及处理该记录;

第二判断模块,其他数据库中该记录的本地主节点根据该记录请求的属性,用于判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果不需要,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点;

重设模块,用于本地数据库的服务端节点的接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库。

优选地,还包括:预设模块,用于记录请求端预先设定记录请求的属性为只读和读写。

优选地,还包括:第一判断模块,用于本地数据库中该记录的本地主节点通过检索本地数据库,判断本地数据库是否有该记录的本地记录节点,若有,则记录请求端开始处理本地数据库内的该记录;若没有,则将该记录请求发送到其他数据库中该记录的本地主节点。

优选地,还包括:初始化模块,用于将该记录请求发送到其他数据库中该记录的本地主节点之后,对其他数据库进行初始化处理。

与现有技术相比,本发明一种高可用nas集群的实现方法的有益效果如下:

1.本发明将key-value数据库中的每条记录作为一个基本的数据同步点,每条记录通过不同身份的转换,在nas层面实现了数据迁移冗余备份,减少了记录请求对底层存储系统的依赖,保证了数据在节点出现故障的情况下,不会出现数据的丢失,实现了nas集群的高可用性;

2.本发明给nas集群的每个数据库中的每条记录赋予三种不同的身份,每个数据库在初始状态时,每条记录的本地主节点和数据主节点是同一节点号。当记录请求端向本地数据库的服务端节点发送记录请求而本地数据库中没有该记录时,本地数据库根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点和数据主节点的节点号,再将该记录请求发送到其他数据库中该记录的本地主节点,其他数据库中该记录的本地主节点根据该记录请求的属性,判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果需要强制迁移,则本地数据库中该记录的本地主节点就记录最新的数据主节点的节点号。因此nas集群的数据库中发生数据迁移时,每条记录的本地主节点和数据主节点是不同的节点号,从而实现了每条记录不同身份的转换,实现了数据迁移冗余备份及nas集群内数据库的实时更新,确保了数据在节点出现故障的情况下,数据不会丢失。

一种高可用nas集群的实现装置的有益效果与一种高可用nas集群的实现方法的有益效果类似,在此不再赘述。

附图说明

图1为本发明一种高可用nas集群的实现方法的流程示意图之一。

图2为本发明一种高可用nas集群的实现方法的数据迁移的流程示意图。

图3为本发明一种高可用nas集群的实现方法的流程示意图之二。

图4为本发明一种高可用nas集群的实现方法的数据复制的流程示意图。

图5为本发明一种高可用nas集群的实现装置的结构示意图之一。

图6为本发明一种高可用nas集群的实现装置的结构示意图之二。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对下列实施例中出现的名词及概念进行解释说明:

在高可用nas集群的中,每个数据库中的任一条记录都有三种不同的身份,即本地记录节点(localrecordnode)、本地主节点(localmasternode)和数据主节点(datamasternode)。

本地记录节点:英文全称localrecordnode,本地记录节点内保存的普通身份的记录。

本地主节点:英文全称localmasternode,在集群数据库中,每条记录都有一个唯一的且固定的本地主节点,这个本地主节点的节点号可以通过每条记录的key值经过计算得到。这样就可以保证任何一个节点,不需要保存每条记录的本地主节点的值,而是通过每条记录的key值然后计算就可以知道该记录的本地主节点的节点号。

数据主节点:英文全称datamasternode,在集群数据库中,对于一条记录来说,它的数据主节点也是唯一的,但它不是固定的,可以在集群中多个节点之间进行转换;数据主节点更像是一种权限,它拥有对于记录的修改权限,所以在集群数据库中,数据主节点中的该记录的数据始终是最新的。

下面结合附图和具体实施方式对本发明一种高可用nas集群的实现方法及装置作进一步地说明:

实施例1

如图1所示,一种高可用nas集群的实现方法,包括以下步骤:

步骤s101:记录请求端向本地数据库的服务端节点发送记录请求,并设定记录请求的属性为只读和读写两种;

步骤s102:本地数据库中该记录的本地主节点通过检索本地数据库,判断本地数据库是否有该记录的本地记录节点,若有,则进行s106,记录请求端开始处理本地数据库内的该记录;若没有,则将该记录请求发送到其他数据库中该记录的本地主节点,进行步骤s103;

步骤s103:对其他数据库中该记录的head进行初始化处理;

步骤s104:其他数据库中该记录的本地主节点根据该记录请求的属性,判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果不需要,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点;

步骤s105:本地数据库的服务端节点接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库;

步骤s106:记录请求端开始处理本地数据库内的该记录。

请参考图2,作为一种可实施方式,nas集群中的数据库均为key-value数据库,每个数据库中的任一条记录都有三种不同的身份,即本地记录节点(localrecordnode)、本地主节点(localmasternode)和数据主节点(datamasternode),通过key进行检索,找到value并对value进行处理,其中value包含head和value两部分,head中记录该记录的本地主节点(localmasternode)的节点号(id)和数据主节点(datamasternode)的节点号(id)。本地数据库根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id)。

记录请求端(nasapp)在本地数据库中无法找到记录时,就向本地数据库的服务端节点(localdispatchernode)发送记录请求,并设定记录请求的属性为读写;本地数据库中该记录的本地主节点(localmasternode)通过检索本地数据库,发现本地数据库中没有该记录的本地记录节点(localrecordnode),本地数据库对该记录的head进行初始化并保存,再根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id),则将该记录请求发送到其他数据库中该记录的本地主节点(localmasternode);其他数据库中该记录的本地主节点(localmasternode)接收到该记录请求后,对其他数据库中该记录的head进行初始化处理,其他数据库在初始状态时,每条记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id)相同;因为记录请求为读写属性,则需要强制迁移,其他数据库中该记录的本地主节点(localmasternode)需要记录其他数据库中该记录的数据主节点(datamasternode)的节点号(id),并将其他数据库中该记录的数据主节点(datamasternode)中的数据迁移至其他数据库中该记录的本地主节点(localmasternode)后,再迁移至本地数据库的服务端节点(localdispatchernode),此时其他数据库中该记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id)不同,从而实现每条记录不同身份的转换及数据迁移冗余备份;本地数据库的服务端节点(localdispatchernode)接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点(datamasternode)所在数据库,也就是说本地数据库中该记录的数据主节点(datamasternode)的节点号(id)一直是最新的;记录请求端(nasapp)开始处理本地数据库内的该记录。

实施例2

如图3所示,一种高可用nas集群的实现方法,包括以下步骤:

步骤s201:记录请求端预先设定记录请求的属性为只读和读写两种;

步骤s202:记录请求端向本地数据库的服务端节点发送记录请求;

步骤s203:本地数据库中该记录的本地主节点通过检索本地数据库,判断本地数据库是否有该记录的本地记录节点,若有,则进行s207,记录请求端开始处理本地数据库内的该记录;若没有,本地数据库对该记录的head进行初始化并保存,再根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点和数据主节点的节点号,则将该记录请求发送到其他数据库中该记录的本地主节点,进行步骤s204;

步骤s204:对其他数据库中该记录的head进行初始化处理;

步骤s205:其他数据库中该记录的本地主节点根据该记录请求的属性,判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果不需要,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点;

步骤s206:本地数据库的服务端节点接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库;

步骤s207:记录请求端开始处理本地数据库内的该记录。

请参考图4,作为一种可实施方式,nas集群中的数据库均为key-value数据库,每个数据库中的任一条记录都有三种不同的身份,即本地记录节点(localrecordnode)、本地主节点(localmasternode)和数据主节点(datamasternode),通过key进行检索,找到value并对value进行处理,其中value包含head和value两部分,head中记录该记录的本地主节点(localmasternode)的节点号(id)和数据主节点(datamasternode)的节点号(id)。本地数据库根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id)。

记录请求端(nasapp)在本地数据库中无法找到记录时,就向本地数据库的服务端节点(localdispatchernode)发送记录请求,并设定记录请求的属性为只读;本地数据库中该记录的本地主节点(localmasternode)通过检索本地数据库,发现本地数据库中没有该记录的本地记录节点(localrecordnode),本地数据库对该记录的head进行初始化并保存,再根据key通过哈希取余算法,确定nas集群其他数据库中该记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id),则将该记录请求发送到其他数据库中该记录的本地主节点(localmasternode);其他数据库中该记录的本地主节点(localmasternode)接收到该记录请求后,对其他数据库中该记录的head进行初始化处理,其他数据库在初始状态时,每条记录的本地主节点(localmasternode)和数据主节点(datamasternode)的节点号(id)相同;因为记录请求为只读属性,则不需要强制迁移,只需要复制其他数据库中该记录的数据主节点(datamasternode)中的数据并发送给本地数据库的服务端节点(localdispatchernode);本地数据库的服务端节点(localdispatchernode)接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点(datamasternode)所在数据库,也就是说本地数据库中该记录的数据主节点(datamasternode)的节点号(id)一直是最新的;记录请求端(nasapp)开始处理本地数据库内的该记录。

实施例3

如图5所示,一种高可用nas集群的实现装置,包括以下模块:

记录请求发送及处理模块302,用于记录请求端向本地数据库的服务端节点发送记录请求及处理该记录,预先设定记录请求的属性为只读和读写;

第二判断模块305,其他数据库中该记录的本地主节点根据该记录请求的属性,用于判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果不需要强制迁移,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要强制迁移,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点;

重设模块306,用于本地数据库的服务端节点的接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库。

其中记录请求发送模块302依次顺序第二判断模块305和重设模块306相连。

实施例4

如图6所示,一种高可用nas集群的实现装置,包括以下模块:

预设模块301,用于记录请求端预先设定记录请求的属性为只读和读写。

记录请求发送及处理模块302,用于记录请求端向本地数据库的服务端节点发送记录请求及处理该记录;

第一判断模块303,用于本地数据库中该记录的本地主节点(localmasternode)通过检索本地数据库,判断本地数据库是否有该记录的本地记录节点,若本地数据库中有该记录,则记录请求端开始处理本地数据库内的该记录;若本地数据库中没有该记录,则将该记录请求发送到其他数据库中该记录的本地主节点。

初始化模块304,用于将该记录请求发送到其他数据库中该记录的本地主节点之后,对其他数据库进行初始化处理。

第二判断模块305,其他数据库中该记录的本地主节点根据该记录请求的属性,用于判断其他数据库中该记录的数据主节点中的数据是否需要进行强制迁移,如果不需要强制迁移,则复制其他数据库中该记录的数据主节点中的数据并发送给本地数据库的服务端节点;如果需要强制迁移,则其他数据库中该记录的本地主节点记录其他数据库中该记录的数据主节点的节点号,并将其他数据库中该记录的数据主节点中的数据迁移至其他数据库中该记录的本地主节点后,再迁移至本地数据库的服务端节点;

重设模块306,用于本地数据库的服务端节点的接收到数据强制迁移的响应后,将本地数据库设置为该记录的数据主节点所在数据库。

其中预设模块301依次顺序与记录请求发送模块302、第一判断模块303、初始化模块304、第二判断模块305和重设模块306相连。

以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围,任何本领域的技术人员在不脱离本发明构思和原则的前提下所做出的等同变化与修改,均应属于本发明保护的范围。

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