数据迁移方法、装置、设备以及存储介质制造方法及图纸

技术编号:30410629 阅读:28 留言:0更新日期:2021-10-20 11:40
本申请公开了一种数据迁移方法、装置、设备以及存储介质,该方法包括:接收元服务器发送的数据槽迁移命令,数据槽迁移命令携带待迁移数据槽的标识和目标节点的标识,将待迁移节点中的待迁移数据槽的数据和待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至目标节点,以使目标节点解析数据加载命令并将解析得到的待迁移数据槽的数据加载到目标节点的内存中,接收目标节点发送的用于指示数据迁移成功或者失败的指示信息。从而,可缩短被迁移方和待迁移方同时阻塞的时间,缩短了无法处理用户侧的读请求和写请求的时间。法处理用户侧的读请求和写请求的时间。法处理用户侧的读请求和写请求的时间。

【技术实现步骤摘要】
数据迁移方法、装置、设备以及存储介质


[0001]本申请涉及计算机
,尤其涉及一种数据迁移方法、装置、设备以及存储介质。

技术介绍

[0002]远程字典服务(Remote Dictionary Server,Redis),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型的键

值(Key

Value)数据库,是业界当前流行的键

值存储系统。Redis集群(cluster)是指多个分片(sharding)构成的一种架构,整个Redis集群被拆分为多个分片,每个分片存储着一部分数据,所有分片叠加一起存储着该Redis集群的全量数据。一个Redis集群中存在很多的数据槽(Slot),Slot也称数据切片,每个Slot分别位于不同分片上。
[0003]Redis集群的扩容和缩容分别是指Redis集群中分片数量的增加和删减,对于Redis集群而言,随着业务量的动态变化,需要在集群容量不够时进行Redis集群的扩容,即增加新的分片到当前的Redis集群中,重新分配各个分片上的Slot,并迁移Slot及Slot上的数据到新增的分片上;在集群容量处于闲置状态时进行Redis集群的缩容,即删减当前的Redis集群中的一个或多个分片,将删减的分片中Slot及Slot上的数据迁移到其它分片。
[0004]现有技术中,在实现Redis集群的扩容和缩容时,Slot之间的数据迁移是以键(Key)的粒度进行迁移,即一个Key一个Key地迁移,在Slot迁移期间,会导致被迁移方和待迁移方同时阻塞,无法处理用户侧的读请求和写请求。

技术实现思路

[0005]本申请提供一种数据迁移方法、装置、设备以及存储介质,以解决在Slot迁移期间,被迁移方和待迁移方同时阻塞,无法处理用户侧的读请求和写请求的问题。
[0006]第一方面,本申请提供一种数据迁移方法,所述方法应用于待迁移节点,所述方法包括:
[0007]接收元服务器发送的数据槽迁移命令,所述数据槽迁移命令携带待迁移数据槽的标识和目标节点的标识;
[0008]将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点,以使所述目标节点解析所述数据加载命令并将解析得到的所述待迁移数据槽的数据加载到所述目标节点的内存中;
[0009]接收所述目标节点发送的用于指示数据迁移成功或者失败的指示信息。
[0010]第二方面,本申请提供一种数据迁移方法,所述方法应用于目标节点,所述方法包括:
[0011]接收待迁移节点发送的数据加载命令,所述数据加载命令为所述待迁移节点将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换得到;
[0012]解析所述数据加载命令,将解析得到的待迁移数据槽的数据加载到所述目标节点的内存中;
[0013]向所述待迁移节点发送用于指示数据迁移成功或者失败的指示信息。
[0014]第三方面,本申请提供一种数据迁移装置,包括:
[0015]接收模块,用于接收元服务器发送的数据槽迁移命令,所述数据槽迁移命令携带待迁移数据槽的标识和目标节点的标识;
[0016]发送模块,用于将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点,以使所述目标节点解析所述数据加载命令并将解析得到的所述待迁移数据槽的数据加载到所述目标节点的内存中;
[0017]所述接收模块还用于:接收所述目标节点发送的用于指示数据迁移成功或者失败的指示信息。
[0018]第四方面,本申请提供一种数据迁移装置,包括:
[0019]接收模块,用于接收待迁移节点发送的数据加载命令,所述数据加载命令为所述待迁移节点将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换得到;
[0020]处理模块,用于解析所述数据加载命令,将解析得到的待迁移数据槽的数据加载到所述目标节点的内存中;
[0021]发送模块,用于向所述待迁移节点发送用于指示数据迁移成功或者失败的指示信息。
[0022]第五方面,本申请实施例提供一种数据迁移设备,包括:
[0023]处理器;以及
[0024]存储器,用于存储所述处理器的可执行指令;
[0025]其中,所述处理器配置为经由执行所述可执行指令来执行第一方面或第一方面各可能的实施方式中和第二方面或第二方面各可能的实施方式中任一所述的数据迁移方法。
[0026]第六方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面或第一方面各可能的实施方式中和第二方面或第二方面各可能的实施方式中任一所述的数据迁移方法。
[0027]第七方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面或第一方面各可能的实施方式中和第二方面或第二方面各可能的实施方式中任一所述的数据迁移方法。
[0028]本申请提供的数据迁移方法、装置、设备以及存储介质,通过待迁移节点在接收到元服务器发送的数据槽迁移命令(携带待迁移数据槽的标识和目标节点的标识)时,将待迁移节点中的待迁移数据槽的数据和待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至目标节点,目标节点解析数据加载命令并将解析得到的待迁移数据槽的数据加载到目标节点的内存中。从而实现一个Slot一次性的整体迁移。由于在进行数据迁移时是将一个Slot一次性整体迁移,相比较一个Key一个Key地迁移,数据迁移所占用时间缩短,因此可缩短被迁移方和待迁移方同时阻塞的时间,缩短了无法处理用户侧的读请求和写请求的时间。
附图说明
[0029]图1为本申请实施例提供的数据迁移方法的一种应用场景示意图;
[0030]图2为本申请实施例提供的数据迁移方法的另一种应用场景示意图;
[0031]图3为本申请实施例提供的一种数据迁移方法的交互流程图;
[0032]图4为本申请实施例提供的一种数据迁移方法实施例的交互流程图;
[0033]图5为本申请实施例提供的一种数据迁移方法实施例的交互流程图;
[0034]图6为本申请实施例提供的一种数据迁移方法实施例的流程图;
[0035]图7为本申请实施例提供的一种数据迁移方法实施例中节点A将待迁移数据槽的数据和待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至目标节点B的流程示意图;
[0036]图8为本申请实施例提供的一种数据迁移装置的结构示意图;
[0037]图9为本申请实施例提供的一种数据迁移装置的结构示意图;
[0038]图10为本申请实施例提供的一种数据迁移设备的结构示意图。
具体实施方式
[0039]下面详细描述本申请的实施例,所述实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据迁移方法,其特征在于,所述方法应用于待迁移节点,所述方法包括:接收元服务器发送的数据槽迁移命令,所述数据槽迁移命令携带待迁移数据槽的标识和目标节点的标识;将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点,以使所述目标节点解析所述数据加载命令并将解析得到的所述待迁移数据槽的数据加载到所述目标节点的内存中;接收所述目标节点发送的用于指示数据迁移成功或者失败的指示信息。2.根据权利要求1所述的方法,其特征在于,所述将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点,包括:通过所述待迁移节点的子线程,将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点。3.根据权利要求2所述的方法,其特征在于,所述通过所述待迁移节点的子线程,将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令并发送至所述目标节点,包括:向所述子线程发送迁移信号,并设置所述待迁移数据槽的写请求状态为不可访问状态;通过所述子线程将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令;通过所述子线程将所述数据加载命令发送至所述目标节点。4.根据权利要求3所述的方法,其特征在于,所述通过所述子线程将所述待迁移节点中的待迁移数据槽的数据和所述待迁移数据槽的标识按照预设格式转换为数据加载命令,包括:通过所述子线程从所述待迁移节点预分配第一内存,将包括所述待迁移数据槽的标识的命令前缀写入所述第一内存;通过所述子线程调用数据加载函数,遍历所述待迁移数据槽的内存区域以获取所述待迁移数据槽的数据;通过所述子线程将所述待迁移数据槽的数据和所述待迁移数据槽的数据的长度写入所述第一内存,得到包括所述命令前缀、所述待迁移数据槽的数据和所述待迁移数据槽的数据的长度的加载命令;通过所述子线程调用反转函数,对所述加载命令中的所述待迁移数据槽的数据和所述待迁移数据槽的数据的长度的位置进行置换,得到所述预设格式的所述数据加载命令,其中,所述待迁移数据槽的数据以序列化的二进制流的形式存在在所述数据加载命令中。5.根据权利要求4所述的方法,其特征在于,通过所述子线程将所述待迁移数据槽的数据和所述待迁移数据槽的数据的长度写入所述第一内存,包括:通过所述子线程若确定所述待迁移数据槽的数据的长度大于预设阈值,则将所述待迁移数据槽的数据进行压缩,得到压缩后的待迁移数据槽的数据和压缩后的待迁移数据槽的数据的长度;通过所述子线程将所述压缩后的待迁移数据槽的数据和压缩后的待迁移数据槽的数
据的长度写入所述第一内存。6.根据权利要求1

5任一项所述的方法,其特征在于,所述方法还包括:若接收到所述目标节点发送的用于指示数据迁移成功的指示信息,向所述元服务器发送用于指示所述待迁移数据槽的数据迁移成功的指示信息,用于所述元服务器将所述待迁移节点中所述待迁移数据槽的状态设置为不可用状态,并将所述目标节点中所述待迁移数据槽的状态设置为可用状态。7.一种数据迁...

【专利技术属性】
技术研发人员:胡东旭赵鹏
申请(专利权)人:重庆度小满优扬科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1