CN113127444B - 一种数据迁移方法、装置、服务器及存储介质 - Google Patents
一种数据迁移方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN113127444B CN113127444B CN202010041527.4A CN202010041527A CN113127444B CN 113127444 B CN113127444 B CN 113127444B CN 202010041527 A CN202010041527 A CN 202010041527A CN 113127444 B CN113127444 B CN 113127444B
- Authority
- CN
- China
- Prior art keywords
- data migration
- proxy server
- task
- server
- migration task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据迁移方法,包括:第一代理服务器获取第一数据迁移任务的信息;所述第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限;在所述第一数据迁移任务未被第二代理服务器执行的情况下,所述第一代理服务器执行所述第一数据迁移任务。本申请还公开了一种装置、服务器和存储介质。通过上述方案能够解决数据迁移过程中流程阻塞、执行效率低的技术问题。
Description
技术领域
本申请涉及中间件技术领域,尤其涉及一种数据迁移方法、装置、服务器及存储介质。
背景技术
在相关技术中,Redis的数据迁移通常是使用Codis的分布式方案,需要Codis的控制节点接收到所有Codis代理服务器返回的数据迁移成功的状态响应后,才进入下一个操作;但是在代理服务器出现故障,无法及时响应的情况下,Codis的控制节点只有判断所述代理服务器超时响应后,才能执行后续的运维操作;并且在数据迁移过程中,Codis修改了Redis的源代码,为Redis版本升级维护增加了复杂度。因此,如何进行简单、有效的Redis的数据迁移尚未被明确。
发明内容
本申请实施例提供一种数据迁移方法、装置、服务器及存储介质,使得在进行数据迁移的过程中,能够避免处理流程堵塞、执行效率低的问题。
一方面,本申请实施例的技术方案是这样实现的:
第一代理服务器获取第一数据迁移任务的信息;
所述第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限;
在所述第一数据迁移任务未被第二代理服务器执行的情况下,所述第一代理服务器执行所述第一数据迁移任务。
上述方案中,所述方法还包括:
在所述第一代理服务器获得执行所述第一数据迁移任务的权限的情况下,所述第一代理服务器向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息。
上述方案中,所述方法还包括:
在接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,所述第一代理服务器将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组。
上述方案中,所述方法还包括:
在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,所述第一代理服务器获取第二分布式锁;所述第一代理服务器基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
上述方案中,所述方法还包括:
所述第一代理服务器监控服务器中数据迁移任务集中的任务;
在所述数据迁移任务集中的数据迁移任务被删除的情况下,所述第一代理服务器根据所述被删除的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;
在所述数据迁移任务集中增加数据迁移任务的情况下,所述第一代理服务器增加所述增加的数据迁移任务,并根据所述增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
上述方案中,所述方法还包括:
所述第一代理服务器向服务器发送注册信息,在所述第一代理服务器注册成功的情况下,所述第一代理服务器获取所述第一分布式锁。
第二方面,本申请提供一种数据迁移方法,包括:
服务器基于第一分布式锁向第一代理服务器分配执行第一数据迁移任务的权限。
上述方案中,所述方法还包括:
接收所述第一代理服务器发送的注册信息;
基于所述注册信息向所述第一代理服务器分配第一分布式锁。
上述方案中,所述方法还包括:
接收第一代理服务器发送的注册信息;
基于所述注册信息向所述第一代理服务器分配第二分布式锁。
上述方案中,所述方法还包括:
基于所述第一代理服务器发送的任务删除指令,删除所述第一数据迁移任务,以及删除所述第一迁移任务对应的注册信息。
上述方案中,所述方法还包括:
在所述第一代理服务器的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务的注册信息。
上述方案中,所述方法还包括:
所述服务器接收客户端发送的数据迁移任务,在所述服务器的数据迁移任务集中增加所述数据迁移任务。
上述方案中,所述方法还包括:
所述服务器基于所述数据迁移任务集,更新所述服务器中存储的映射表。
第三方面,本申请还提供了一种数据迁移装置,所述装置包括:
获取单元,用于获取第一数据迁移任务的信息;用于基于第一分布式锁获得执行所述第一数据迁移任务的权限;
执行单元,用于在所述第一数据迁移任务未被第二代理服务器执行的情况下,执行所述第一数据迁移任务。
上述方案中,所述装置还包括:
发送单元,用于在所述第一代理服务器获得执行所述第一数据迁移任务的权限的情况下,向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息;在接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组。
上述方案中,所述获取单元,用于在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,获取第二分布式锁;
发送单元,用于基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
上述方案中,所述装置还包括:
监控单元,用于监控服务器中数据迁移任务集中的任务;
更新单元,用于在所述数据迁移任务集中的数据迁移任务被删除的情况下,根据所述被删除的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;还用于根据增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;
添加单元,用于在所述数据迁移任务集中增加数据迁移任务的情况下,添加所述增加的数据迁移任务,并根据所述增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;
发送单元,用于向服务器发送注册信息;
所述获取单元,用于在所述第一代理服务器注册成功的情况下,获取所述第一分布式锁。
第四方面,本申请提供一种服务器,包括:
分配单元,用于基于第一分布式锁向第一代理服务器分配执行第一数据迁移任务的权限。
上述方案中,所述服务器还包括:
接收单元,用于接收所述第一代理服务器发送的注册信息;
分配单元,用于基于所述注册信息向所述第一代理服务器分配第一分布式锁。
上述方案中,分配单元,用于基于所述注册信息向所述第一代理服务器分配第二分布式锁。
上述方案中,所述服务器还包括:
删除单元,用于基于所述第一代理服务器发送的任务删除指令,删除所述第一数据迁移任务,以及删除所述第一迁移任务对应的注册信息。
上述方案中,删除单元,用于在所述第一代理服务器的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务的注册信息。
接收单元,用于接收客户端发送的数据迁移任务,在所述服务器的数据迁移任务集中增加所述数据迁移任务。
上述方案中,更新单元,用于基于所述数据迁移任务集,更新所述服务器中存储的映射表。
本申请实施例提供的数据迁移方法、装置、服务器及存储介质,第一代理服务器获取第一数据迁移任务的信息;所述第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限;在所述第一数据迁移任务未被第二代理服务器执行的情况下,所述第一代理服务器执行所述第一数据迁移任务。如此,第一代理服务器通过获取分布式锁,获得执行数据迁移任务的权限,可以并发执行不同槽的数据迁移操作,提高了数据迁移的处理效率。
附图说明
图1为本申请实施例提供的数据迁移方法的代理服务器端可选流程示意图一;
图2为本申请实施例提供的数据迁移方法的代理服务器端可选流程示意图二;
图3为本申请实施例提供的数据迁移方法的服务器端可选流程示意图;
图4为本申请实施例提供的数据迁移方法的可选流程示意图;
图5为本申请实施例提供的数据迁移方法的可选示意图;
图6为本申请实施例提供的数据迁移装置的可选结构示意图;
图7为本申请实施例提供的服务器的可选结构示意图;
图8为本申请实施例提供的数据迁移装置的可选结构示意图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
对本申请进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
(1)远程字典服务(Remote Dictionary Server,Redis)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的应用程序接口(Application Programming Interface,API)。
(2)Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到Codis代理服务器(Proxy)和连接原生的Redis服务器(Server)没有明显的区别,上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作。
(3)key-value是分布式存储***,具有查询速度快、存放数据量大、支持高并发的特点,适合通过主键进行查询,但不能进行复杂的条件查询。
(4)key:数据迁移的最小单位。
(5)slot:槽,数据迁移的单位,数据迁移的过程就是将数据从一个槽迁移到另一个槽的过程。
随着互联网产业的发展,尤其是***移动通信技术(4th Generation MobileCommunication Technology,4G)网络的普及与第五代移动通信技术(5th GenerationMobile Communication Technology)5G应用的到来,对网络并发的要求越来越高,传统数据库的输入/输出(In/Out,IO)开销成为制约网络服务质量提升的瓶颈。而Redis内存型key-value数据库的出现,因其支持高并发与数据持久化,打破了这一僵局,深受广大用户的青睐并得到广泛的应用。
Redis的部署方案,分为单例、主从和集群。在应对高并发使用场景中,集群的方式成为首选部署方案。Redis的主流集群解决方案有三种,分别为来自Redis官方的Redis集群(Redis Cluster),来自社区的Twitter团队开源的TwemProxy,和同样来自社区的中国豌豆荚团队开源的Codis。
Codis是基于Proxy架构的分布式Redis解决方案。对于上层的应用来说,连接到Codis Proxy和连接原生的Redis Server没有明显的区别,Codis底层会处理请求的转发,平滑的水平扩展和数据迁移等。但是在Redis数据迁移,即数据迁移任务的实现中,Codis采用的处理机制是状态机。所述状态机机制要求在数据迁移的状态中(如Preparing、Prepared等)Codis的控制节点(如dashboard),必须收到全部的Proxy节点返回成功的状态响应后,才能进入下一状态的操作。这意味着,如果存在某一个Proxy节点出现故障,未及时响应,dashboard只有在判断Proxy响应超时后,才能执行后续的运维操作。而且,在数据迁移的实现中,为保持数据一致性,Codis对Redis源码进行了修改,为Redis版本的升级维护增加了复杂度。
Codis采用分布式代理,利用负载均衡技术将请求通过Proxy分发到后端Redis服务器,有效解决了Redis Cluster中网际互联协议(Internet Protocol,IP)地址资源浪费的问题。同时Codis支持平滑水平扩容功能,相比TwemProxy的重启扩容方案更有优势。
相关技术中,Codis分布式解决方案由四部分组成:
(1)Codis Proxy:处理客户端请求支持Redis协议,其连接了后端多组CodisRedis服务器,每组服务器采用主备高可用模式,多组服务器之间根据Redis槽的概念加以区分,每组服务器称为一个数据分片。在Codis中,会把所有的key分成1024个槽,这1024个槽对应着后端Redis集群。Codis会在内存中维护这1024个槽与Redis集群实例的映射关系。Codis中key的分配算法为crc32(key)%1024,分配算法的结果就是所述key对应的槽的序号,最后通过槽与Redis实例的对应关系,找到所述key对应的Redis实例,并在该实例上对该key进行操作。客户端访问Codis Proxy与访问原生Redis基本相同,不同之处在于Codis不支持部分原生Redis命令。
(2)Codis Dashboard:Codis管理工具,支持添加和/或删除Redis节点、添加和/或删除Proxy节点,发起数据迁移操作等。
(3)Codis Redis:后端连接的真实Redis服务器组,其源码是Codis项目维护的一个Redis分支,如基于Redis的3.2.11和4.0.1版本,Codis的3.2版本维护着对应的分支版本release3.2-Redis-3.2.11和release3.2-Redis-4.0.1。Codis在Redis源码中增加了支持slot数据迁移的指令。
(4)ZooKeeper/Etcd:Codis依赖ZooKeeper/Etcd来存放数据路由表和Proxy节点的元信息,用于集群服务之间同步配置。
在Codis执行数据迁移任务时,采用了状态机的机制,该状态机分为null,pending,preparing,prepared,migrating和finished六个状态。在执行迁移任务前的准备状态preparing,prepared时,Dashboard节点必须收到所有的Proxy节点返回成功的状态响应后,才能进入下一状态的操作。这意味着,如有某些Proxy节点出现故障,未及时响应,Dashboard只有判断与该故障Proxy响应超时后,才能执行后续的运维操作。这种迁移的机制,在一定程度上是一种阻塞型操作,只有所有Proxy节点均就绪后,才能执行迁移操作。
而且,在数据迁移的过程中,为保持数据一致性,即在数据迁移过程中,为保证Codis Proxy收到客户端对迁移中数据读写操作的一致性,Codis对Redis源码进行了修改,新增了数据迁移的指令。但是,每当Redis官方版本因加入新特性而进行版本升级时,CodisRedis也需进行相应的版本更新,这就增加了Codis版本升级维护的复杂度,同时对CodisRedis版本的稳定性也提出了挑战
基于目前数据迁移方法中存在的问题,本申请实施例提供一种数据迁移方法,能够解决现有技术方案中无法解决的技术难题和缺点。
图1示出了本申请实施例提供的数据迁移方法的服务器端可选流程示意图一,将根据各个步骤进行说明。
步骤S101,第一代理服务器获取第一数据迁移任务的信息。
在一些实施例中,所述第一代理服务器获取第一数据迁移任务的信息包括:第一代理服务器通过监控服务器的数据迁移任务集,获取所述数据迁移任务集中全部数据迁移任务。所述数据迁移任务集包括:客户端发送至服务器的全部数据迁移任务的集合。
在一些实施例中,所述第一数据迁移任务可以是所述数据迁移任务集中任一个任务。所述第一数据迁移任务的信息包括:所述第一数据迁移任务指令;所述第一数据迁移任务指令可以包括:迁移数据的编号、迁移源组的身份标识号(Group IDentity document,GroupID)和迁移目标GroupID中至少一个。
在另一些实施例中,所述第一代理服务器获取所述第一数据迁移任务之后,还可以包括:根据所述第一数据迁移任务更新所述第一代理服务器中的存储的映射表。在具体实施时,所述第一代理服务器可以根据所述第一数据迁移任务更新所述第一代理服务器中的存储的映射表,包括:根据第一数据迁移任务指令包括的迁移数据的编号、迁移源GroupID和迁移目标GroupID中至少一个,更新所述第一代理服务器中存储的映射表。所述映射表包括:数据所属的slot的ID与Group的ID的对应表,和/或数据所属的key的ID与slotID的对应表。
例如,映射表包括:序号1至10的key,对应序号5的slot,和/或序号1至10的slot,对应序号2的Group。
在一些实施例中,所述第一代理服务器可以称为第一Proxy。
步骤S102,第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限。
在一些实施例中,所述第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限包括:第一代理服务器获得所述第一分布式锁的情况下,获得执行所述第一数据迁移任务的权限。
在一些实施例中,所述第一代理服务器获得所述第一分布式锁包括:第一代理服务器向服务器发送注册信息,在所述第一代理服务器注册成功的情况下,所述第一代理服务器获取所述第一分布式锁。所述注册信息包括第一代理服务器的ID与所述第一分布式锁的对应关系。
在另一些实施例中,所述第一代理服务器获得所述第一分布式锁还可以是:代理服务器向服务器注册关键字/值(key/value)对,注册成功,即表示第一代理服务器成功获取第一分布式锁;注册失败,即表示第一代理服务器没有获取第一分布式锁。
在一些实施例中,第一代理服务器获得所述第一分布式锁,意味着第一代理服务器可以执行所述服务器的数据迁移任务集中任一个任务。在同一时间段内,所述第一分布式锁只分配给一个代理服务器,在第一代理服务器获得所述第一分布式锁的情况下,只有第一代理服务器具备从服务器的数据迁移任务集中领取数据迁移任务,并执行的权限,第二代理服务器无法从服务器的数据迁移任务集中领取数据迁移任务,也无法执行所述数据迁移任务。
在一些实施例中,所述第一代理服务器和所述第二代理服务器是完全不同的代理服务器,所述第二代理服务器中包含至少一个代理服务器。所述第一代理服务器还可以称为第一Proxy。
步骤S103,在所述第一数据迁移任务未被第二代理服务器执行的情况下,所述第一代理服务器执行所述第一数据迁移任务。
在一些实施例中,所述第一数据迁移任务未被第二代理服务器执行包括:服务器中没有与所述第一数据迁移任务对应的代理服务器的ID。
在一些实施例中,所述第一代理服务器执行所述第一数据迁移任务之前,还包括:第一代理服务器领取所述第一数据迁移任务。第一代理服务器将所述第一代理服务器的代理服务器ID(ProxyID)注册到所述服务器中,所述代理服务器ID与所述第一数据迁移任务对应,表示所述第一数据迁移任务被第一代理服务器领取。
在一些实施例中,第一代理服务器获得所述第一分布式锁的情况下,具备了领取数据迁移任务的权限,在领取数据迁移任务之前,需要第一代理服务器在服务器中查询,所述第一数据迁移任务是否有对应的代理服务器ID。在所述第一数据迁移任务具有对应的代理服务器ID的情况下,说明所述第一数据迁移任务已经被第二代理服务器领取,第一代理服务器无法领取;在所述第一数据迁移任务没有对应的代理服务器ID的情况下,说明所述第一数据迁移任务没有被第二代理服务器领取,所述第一代理服务器可以领取所述第一数据迁移任务。
在一些实施例中,所述第一代理服务器执行所述第一数据迁移任务包括:第一代理服务器根据第一数据迁移任务的信息,将所述第一数据迁移任务包括的要进行数据迁移的slot以及所述slot内的数据,从源Group迁移至目标Group中。
如此,本申请实施例基于分布式锁的竞争式任务领取方式,第一代理服务器和第二代理服务器通过竞争的方式获取分布式锁,进一步获得执行数据迁移任务的权限,可以并发执行不同slot的数据迁移操作,提高了数据迁移的处理效率。
图2为本申请实施例提供的数据迁移方法的代理服务器端可选流程示意图二,将根据各个步骤进行说明。
步骤S201,第一代理服务器获取第一数据迁移任务的信息。
步骤S201的处理流程与步骤S101相同,此处不再重复赘述。
步骤S202,第一代理服务器获取第一分布式锁。
在一些实施例中,所述第一代理服务器获得所述第一分布式锁包括:第一代理服务器向服务器发送注册信息,在所述第一代理服务器注册成功的情况下,所述第一代理服务器获取所述第一分布式锁。所述注册信息包括第一代理服务器的ID与所述第一分布式锁的对应关系。
在另一些实施例中,所述第一代理服务器获得所述第一分布式锁还可以是:代理服务器向服务器注册关键字/值对,注册成功,即表示第一代理服务器成功获取所述第一分布式锁;注册失败,即表示第一代理服务器没有获取所述第一分布式锁。
在一些实施例中,所述注册信息包括:第一时间阈值,所述第一时间阈值用于,从注册成功开始,到所述第一时间阈值的时间内,所述第一代理服务器未执行完成所述第一数据迁移任务,服务器删除所述第一数据迁移服务对应的代理服务器ID,所述第一数据迁移任务可以由第二代理服务器领取并执行。
在一些实施例中,所述第一代理服务器未执行完成所述第一数据迁移任务包括:第一代理服务器在第一时间阈值内,未向所述服务器发送任务删除指令;所述任务删除指令用于指示服务器删除所述第一数据迁移任务。
步骤S203,第一代理服务器领取第一数据迁移任务。
在一些实施例中,所述第一代理服务器领取所述第一数据迁移任务,包括:第一代理服务器将所述第一代理服务器的代理服务器ID注册到所述服务器中,所述代理服务器ID与所述第一数据迁移任务对应,表示所述第一数据迁移任务被第一代理服务器领取。
在一些实施例中,第一代理服务器获得所述第一分布式锁的情况下,具备了领取数据迁移任务并执行的权限,在领取数据迁移任务之前,需要第一代理服务器在服务器中查询,所述第一数据迁移任务是否有对应的代理服务器ID。在所述第一数据迁移任务具有对应的代理服务器ID的情况下,说明所述第一数据迁移任务已经被第二代理服务器领取,第一代理服务器无法领取;在所述第一数据迁移任务没有对应的代理服务器ID的情况下,说明所述第一数据迁移任务没有被第二代理服务器领取,所述第一代理服务器可以领取所述第一数据迁移任务。
在一些实施例中,所述第一代理服务器和所述第二代理服务器是完全不同的代理服务器,所述第二代理服务器中包含至少一个代理服务器。所述第一代理服务器还可以称为第一Proxy。
步骤S204,第一代理服务器向服务器发送锁信息删除指令。
在一些实施例中,在第一代理服务器领取所述第一数据迁移任务的情况下,所述第一代理服务器向所述服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息。
在一些实施例中,所述锁信息包括所述第一代理服务器获得所述第一分布式锁的过程中,向所述服务器发送的注册信息。所述注册信息包括所述第一代理服务器的ID与所述第一分布式锁的对应关系。
在一些实施例中,所述第一分布式锁的锁信息被删除后,所述第一代理服务器和/或所述第二代理服务器才可以继续获取所述第一分布式锁。
步骤S205,第一代理服务器执行所述第一数据迁移任务。
在一些实施例中,所述第一代理服务器执行所述第一数据迁移任务包括:第一代理服务器根据第一数据迁移任务的信息,将所述第一数据迁移任务包括的要进行数据迁移的slot以及所述slot内的数据,从源Group迁移至目标Group中。
在一些实施例中,在所述第一代理服务器执行所述第一数据迁移任务的过程中,会接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求。在第一代理服务器接收到所述客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,所述第一代理服务器判断所述第一数据是否属于要进行数据迁移的slot。在所述第一数据属于所述slot的情况下,第一代理服务器优先执行所述第一数据的数据迁移操作,并将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组;在所述第一数据不属于所述slot的情况下,第一代理服务器按照正常顺序执行所述第一数据迁移任务。
例如,第一数据迁移任务要将编号为39至50的槽,从GroupID为0的服务器组迁移到GroupID为1的服务器组,第一代理服务器根据槽的编号依次从GroupID为0的服务器组迁移到GroupID为1的服务器组。但是,在客户端的第一数据请求,且请求编号为40的槽中编号为10的key中的数据的情况下,第一代理服务器优先将编号为40的槽中编号为10的key中的数据迁移至GroupID为1的服务器组,并将所述客户端的第一数据请求发送至GroupID为1的服务器组。
在所述第一数据迁移任务执行成功的情况下,所述第一代理服务器执行步骤S206至步骤S208;在第一数据迁移任务执行失败的情况下,所述第一代理服务器执行步骤S209。
步骤S206,第一代理服务器获取第二分布式锁。
在一些实施例中,在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,所述第一代理服务器获取第二分布式锁。所述第一代理服务器获取第二分布式锁包括:第一代理服务器向服务器发送注册信息,在所述第一代理服务器注册成功的情况下,所述第一代理服务器获取所述第二分布式锁。所述注册信息包括第一代理服务器的ID与所述第一分布式锁的对应关系。
在另一些实施例中,所述第一代理服务器获得所述第二分布式锁还可以是:代理服务器向服务器注册关键字/值对,注册成功,即表示第一代理服务器成功获取第二分布式锁;注册失败,即表示第一代理服务器没有获取第二分布式锁。
在一些实施例中,所述第一分布式锁和所述第二分布式锁,可以为同一个分布式锁,也可以是不同的分布式锁。
步骤S207,第一代理服务器向服务器发送任务删除指令。
在一些实施例中,所述第一代理服务器基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
在一些实施例中,在所述数据迁移任务集中的数据迁移任务被删除的情况下,所述第一代理服务器根据所述被删除的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
在一些实施例中,所述更新所述第一代理服务器中存储的映射表包括:更新所述第一代理服务器中slot与Group的映射关系,和/或所述第一代理服务器中,所述第一数据迁移任务的指令,将所述第一数据迁移任务中要迁移的槽的编号修改为“空”。
例如,第一数据迁移任务对应的actionID为“111111”,所述第一数据迁移任务的名称是“migrate”,要将编号为100的slot以及所述slot中包含的数据从编号为0的服务器组迁移至编号为1的服务器组,在所述第一数据迁移任务执行完成的情况下,将所述第一迁移任务的任务信息中将要迁移的槽的编号,从“slot”:100,修改为“slot”:空。
步骤S208,第一代理服务器向服务器发送锁信息删除指令。
在一些实施例中,在所述第一代理服务器向所述服务器发送任务删除指令的情况下,所述第一代理服务器向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第二分布式锁的锁信息。所述注册信息包括第一代理服务器的ID与所述第一分布式锁的对应关系。
在一些实施例中,第二分布式锁的锁信息被删除后,所述第一代理服务器和/或所述第二代理服务器才可以继续获取所述第二分布式锁。
步骤S209,服务器删除所述第一数据迁移任务对应的注册信息。
在一些实施例中,所述第一代理服务器执行所述第一数据迁移任务失败包括:第一代理服务器在第一时间阈值内,未向所述服务器发送任务删除指令;所述任务删除指令用于指示服务器删除所述第一数据迁移任务。
在一些实施例中,在所述第一代理服务器执行所述第一数据迁移任务失败的情况下,服务器在所述第一数据迁移任务对应的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务对应的注册信息。
在一些实施例中,所述注册信息包括:第一时间阈值,所述第一时间阈值用于,从注册成功开始,到所述第一时间阈值的时间内,所述第一代理服务器未执行完成所述第一数据迁移任务,服务器删除所述第一数据迁移服务对应的代理服务器ID,所述第一数据迁移任务可以由第二代理服务器领取并执行。
如此,本申请实施例基于分布式锁的竞争式任务领取方式,第一代理服务器和第二代理服务器通过获取分布式锁,获得执行数据迁移任务的权限,可以并发执行不同slot的数据迁移操作,提高了数据迁移的处理效率。在接收到客户端针对第一数据的数据请求的情况下,优先执行所述第一数据的迁移任务,达到了数据迁移一致性的目的,并且在数据迁移的过程中,没有修改Redis的源代码,能够兼容各个原生Redis版本,降低了运维成本。
图3为本申请实施例提供的数据迁移方法的服务器端可选流程示意图,将根据各个步骤进行说明。
步骤S301,服务器接收客户端发送的数据迁移任务,在所述服务器的数据迁移任务集中增加所述数据迁移任务。
在一些实施例中,服务器接收客户端发送的数据迁移任务,并将所述数据迁移任务增加至所述服务器存储的数据迁移任务集中。
在一些实施例中,在所述服务器的数据迁移任务集中增加数据迁移任务还包括:向服务器注册数据迁移任务的任务ID,所述任务ID为数字组成的字符串。所述任务ID为关键字,在服务器中存储的关键字/值对中查找对应的值,可以得到所述任务ID对应的将要迁移的slot编号,迁移源Group编号和目标Group编号。
步骤S302,服务器基于所述数据迁移任务集,更新所述服务器中存储的映射表。
在一些实施例中,所述服务器基于所述数据迁移任务集,更新所述服务器中存储的映射表包括:基于所述数据迁移任务集中的任务信息,更新所述服务器中存储的映射表。所述任务信息包括:将要迁移的slot编号,迁移源Group编号和目标Group编号。所述映射表包括:数据所属的slot的ID与Group的ID的对应表,和/或数据所属的key的ID与slot ID的对应表。
例如,映射表包括:序号1至10的key,对应序号5的slot,和/或序号1至10的slot,对应序号2的Group。
步骤S303,基于第一代理服务器发送的注册信息向所述第一代理服务器分配第一分布式锁。
在一些实施例中,服务器基于第一代理服务器发送的注册信息,向所述第一代理服务器分配第一分布式锁,包括:在所述第一代理服务器注册成功的情况下,所述服务器向所述第一代理服务器分配第一分布式锁。
在一些实施例中,所述服务器向所述第一代理服务器分配第一分布式锁还包括:服务器基于第一代理服务器发送的注册关键字/值对,对第一代理服务器进行注册,注册成功的情况下,服务器向所述第一代理服务器分配第一分布式锁;在注册失败的情况下,服务器不向所述第一代理服务器分配第一分布式锁。
步骤S304,标记第一数据迁移任务。
在一些实施例中,在第一数据迁移任务被所述第一代理服务器领取的情况下,所述服务标记所述第一数据迁移任务。所述服务器标记所述第一数据迁移任务包括:将所述第一代理服务器的ID与所述第一数据迁移任务对应,表示所述第一数据迁移任务被第一代理服务器领取。
步骤S305,基于第一代理服务器发送的锁信息删除指令,删除第一分布式锁的锁信息。
在一些实施例中,在第一代理服务器领取所述第一数据迁移任务的情况下,所述第一代理服务器向所述服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息。所述服务器接收所述锁信息删除指令,基于所述锁信息删除指令,删除第一分布式锁的锁信息。
在一些实施例中,所述第一分布式锁的锁信息包括所述第一代理服务器获得所述第一分布式锁的过程中,向所述服务器发送的注册信息。所述注册信息包括所述第一代理服务器的ID与所述第一分布式锁的对应关系。
在一些实施例中,所述第一分布式锁的锁信息被删除后,所述第一代理服务器和/或所述第二代理服务器才可以继续获取所述第一分布式锁。
步骤S306,基于第一代理服务器发送的注册信息向所述第一代理服务器分配第二分布式锁。
在一些实施例中,服务器基于第一代理服务器发送的注册信息,向所述第一代理服务器分配第二分布式锁,包括:在所述第一代理服务器注册成功的情况下,所述服务器向所述第一代理服务器分配第二分布式锁。
在一些实施例中,所述服务器向所述第一代理服务器分配第二分布式锁还包括:服务器基于第一代理服务器发送的注册关键字/值对,对第一代理服务器进行注册,注册成功的情况下,服务器向所述第一代理服务器分配第二分布式锁;在注册失败的情况下,服务器不向所述第一代理服务器分配第二分布式锁。
在一些实施例中,所述第一分布式锁和所述第二分布式锁可以是相同的,也可以是不同的。
在一些实施例中,第一代理服务器在获得第一分布式锁的情况下,才获得与服务器进行数据交互的权限,如领取第一数据迁移任务;第一代理服务器在获得第二分布式锁的情况下,才获得与所述服务器进行数据交互的权限。
步骤S307,基于所述第一代理服务器发送的任务删除指令,删除所述第一数据迁移任务,以及删除所述第一迁移任务对应的注册信息。
在一些实施例中,服务器基于所述第一代理服务器发送的任务删除指令,删除所述第一数据迁移任务,以及删除所述第一迁移任务对应的注册信息。
在一些实施例中,所述第一数据迁移任务被删除的情况下,服务器基于所述被删除的第一数据迁移任务,更新所述服务器中存储的映射表包括:基于所述第一数据迁移任务的任务信息,更新所述服务器中存储的映射表。所述任务信息包括:将要迁移的slot编号,迁移源Group编号和目标Group编号。所述映射表包括:数据所属的slot的ID与Group的ID的对应表,和/或数据所属的key的ID与slot的ID的对应表。
步骤S308,基于第一代理服务器发送的锁信息删除指令,删除第二分布式锁的锁信息。
在一些实施例中,在第一代理服务器向服务器发送任务删除指令,服务器基于所述任务删除指令删除第一数据迁移任务以及删除所述第一删除任务对应的注册信息的情况下,第一代理服务器向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第二分布式锁的锁信息。所述服务器接收所述锁信息删除指令,基于所述锁信息删除指令,删除第二分布式锁的锁信息。
在一些实施例中,所述第二分布式锁的锁信息包括所述第一代理服务器获得所述第二分布式锁的过程中,向所述服务器发送的注册信息。所述注册信息包括所述第一代理服务器的ID与所述第二分布式锁的对应关系。
在一些实施例中,所述第二分布式锁的锁信息被删除后,所述第一代理服务器和/或所述第二代理服务器才可以继续获取所述第二分布式锁。
步骤S309,在所述第一代理服务器的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务的注册信息。
在一些实施例中,所述第一代理服务器注册信息的存活时间大于或等于第一时间阈值的情况下,说明所述第一代理服务器无法执行所述第一数据迁移任务,所述服务器删除所述第一数据迁移任务的注册信息,如此,第二代理服务器可以领取所述第一数据迁移任务并执行。
如此,本申请实施例基于分布式锁的竞争式任务领取方式,服务器向第一代理服务器分配第一分布式锁,获得执行数据迁移任务的权限,可以并发执行不同slot的数据迁移操作,提高了数据迁移的处理效率。并且在数据迁移的过程中,没有修改Redis的源代码,能够兼容各个原生Redis版本,降低了运维成本。
图4是本申请实施例提供的数据迁移方法的可选流程示意图,将根据各个步骤进行说明。
图5示出了本申请实施例提供的数据迁移方法的可选示意图,将结合图4以及步骤S401至步骤S411进行说明
步骤S401,客户端发起数据迁移任务。
在一些实施例中,客户端根据管理员或用户的需求,发起数据迁移任务。
在一些实施例中,所述客户端可以是Config API。
步骤S402,根据数据迁移任务,更新服务器的映射表。
在一些实施例中,Config API将根据数据迁移任务,更新Redis服务器组(RedisGroup)与Slot的映射关系,即发送GroupSlotInfo信息至服务器。所述GroupSlotInfo信息在Etcd中存储的key/value对及解释说明如下,其中RedisID为一个Redis集群服务唯一性编号,GroupID为Redis Group服务组编号。
在一些实施例中,所述服务器可以是Etcd。
步骤S403,向服务器发送数据迁移任务。
在一些实施例中,所述Config API向服务器中添加数据迁移任务,即向服务器注册action信息,所述action信息在Etcd中存储的key/value对及解释说明如下,其中actionID为一全局唯一的由数字组成的字符串:
步骤S404,第一代理服务器和第二代理服务器获取数据迁移任务集的信息。
在一些实施例中,所述第一代理服务器和所述第二代理服务器,通过监控Etcd数据迁移任务的变化,第一代理服务器和所述第二代理服务器获取到增加的数据迁移任务,根据所述增加的数据迁移任务更新本地缓存的映射表,并把增加的数据迁移任务加入第一代理服务器的任务队列和所述第二代理服务器的任务队列。
在一些实施例中,所述第一代理服务器和所述第二代理服务器是完全不同的代理服务器,所述第二代理服务器中包含至少一个代理服务器。所述第一代理服务器还可以称为第一Proxy。
步骤S405,第一代理服务器获取第一分布式锁。
在一些实施例中,所述第一代理服务器和所述第二代理服务器继续监控服务器中数据迁移任务集的变化,并不断将增加的数据迁移任务添加进所述第一代理服务器的任务队列和所述第二代理服务器的任务队列。当所述第一代理服务器和/或所述第二代理服务器的任务队列中有新的任务时,所述第一代理服务器和所述第二代理服务器开始尝试向服务器获取分布式锁,即向服务器注册以下key/value对,第一代理服务器注册成功,即表示第一代理服务器成功获取分布式锁,否则,表示第一代理服务器获取分布式锁失败。
步骤S406,第一代理服务器领取第一数据迁移任务。
在一些实施例中,第一代理服务器向服务器查询是否有正在执行所述第一数据迁移任务的代理服务器,即查询服务器中是否有所述第一数据迁移任务的RedisID对应的ProxyID信息。如果有,即表明所述第一数据迁移任务已经有代理服务器领取了,否则,将所述第一代理服务器的ProxyID注册到服务器中,表明第一代理服务器成为所述第一数据迁移任务的执行者(Executor)。所述Executor注册信息包含了存活时间(Time to Live,TTL),当注册时间超过所述TTL,所述Executor注册信息将被服务器删除。服务器中表示任务执行的Executor信息的key/value对为:
步骤S407,第一代理服务器向服务器发送锁信息删除指令。
在一些实施例中,所述第一代理服务器领取所述第一数据迁移任务成功后,释放分布式锁,即删除服务器中所述RedisID下的锁信息。
步骤S408,第一代理服务器执行所述第一数据迁移任务。
执行Redis原生的数据迁移任务,将数据从源Redis Group迁移到目标RedisGroup。此时,若客户端发来数据操作请求,为保证数据一致性,第一代理服务器会根据第一代理服务器缓存的GroupSlotInfo信息,判断所述数据操作请求中的key是否属于正在迁移的slot,如果属于,则直接将所述key通过Redis原生迁移命令,迁移至目标Redis Group,并将客户端请求转发至迁移后的Redis Group进行处理操作;如果不是,则按正常数据操作请求流程进行处理。
步骤S409,第一代理服务器向服务器发送任务删除指令。
在一些实施例中,数据迁移任务如果执行成功,第一代理服务器将尝试向服务器获取分布式锁,获取分布式锁成功后,第一代理服务器将服务器中的第一数据迁移任务与所述第一数据迁移任务对应的Executor信息删除,并释放所述分布式锁。若所述第一数据迁移任务不成功,所述服务器等待Executor注册信息超时后,第二代理服务器会重新尝试领取所述第一数据迁移任务,并执行所述第一数据迁移任务。
步骤S410,第一代理服务器和第二代理服务器更新映射表。
在一些实施例中,所述第一数据迁移任务完成后,第一代理服务器和第二代理服务器获取到服务器的数据迁移任务集中第一数据迁移任务被删除,则表示所述第一数据迁移任务已结束,根据第一数据迁移任务信息更新第一代理服务器存储的GroupSlotInfo和第二代理服务器存储的GroupSlotInfo。
步骤S411,第一代理服务器和第二代理服务器继续监控所述服务器中的数据迁移任务集。
在一些实施例中,所述第一代理服务器和第二代理服务器继续通过监控任务队列,可同时执行不同数据迁移任务。
如此。本申请实施例提供的基于服务器分布式锁的去中心化的任务调度方式,采用了竞争式任务领取的模式,第一代理服务器和第二代理服务器通过获取分布式锁,获取执行权限后,可并发执行不同槽位的数据迁移操作。相较于Codis的实现方式,本申请实施例是非阻塞,多任务并发处理方式,提高了数据迁移的处理效率。同时,本申请实施例通过查询数据迁移中数据的迁移状态,直接执行原生Redis迁移命令对迁移中slot的key进行迁移,达到了数据迁移一致性的目的,没有修改Redis源码,可以兼容各个原生Redis版本,降低了运维成本。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图6示出了本申请实施例提供的数据迁移装置的可选结构示意图,将根据各个部分进行说明。
获取单元501,用于获取第一数据迁移任务的信息;用于基于第一分布式锁获得执行所述第一数据迁移任务的权限。
执行单元502,用于在所述第一数据迁移任务未被第二代理服务器执行的情况下,执行所述第一数据迁移任务。
发送单元503,用于在所述第一代理服务器获得执行所述第一数据迁移任务的权限的情况下,向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息;用于在接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组。
所述获取单元501,还用于在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,获取第二分布式锁。
所述发送单元503,还用于基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
删除单元504,用于在所述第一代理服务器执行所述第一数据迁移任务失败的情况下,服务器在所述第一数据迁移任务对应的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务对应的注册信息。
监控单元505,用于监控服务器中数据迁移任务集中的任务。
更新单元506,用于在所述数据迁移任务集中的数据迁移任务被删除的情况下,根据所述被删除的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;还用于根据增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
添加单元507,用于在所述数据迁移任务集中增加数据迁移任务的情况下,添加所述增加的数据迁移任务,并根据所述增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
所述发送单元503,还用于向服务器发送注册信息。
所述获取单元501,还用于在所述第一代理服务器注册成功的情况下,获取所述第一分布式锁。
在一些实施例中,数据迁移装置500的功能可以由第一代理服务器实现,所述第一代理服务器可以被称为第一Proxy。
图7示出了本申请实施例提供的一种服务器的可选结构示意图,将根据各个部分进行说明。
分配单元601,用于基于第一分布式锁向第一代理服务器分配执行第一数据迁移任务的权限。
接收单元602,用于接收所述第一代理服务器发送的注册信息。
所述分配单元601,还用于基于所述注册信息向所述第一代理服务器分配第一分布式锁。
删除单元603,用于基于所述第一代理服务器发送的任务删除指令,删除所述第一数据迁移任务,以及删除所述第一迁移任务对应的注册信息。
所述删除单元603,还用于在所述第一代理服务器的注册信息的存活时间大于或等于第一时间阈值的情况下,删除所述第一数据迁移任务的注册信息。
所述接收单元602,还用于接收客户端发送的数据迁移任务,在所述服务器的数据迁移任务集中增加所述数据迁移任务。
更新单元604,用于基于所述数据迁移任务集,更新所述服务器中存储的映射表。
在一些实施例中,服务器600的功能可以由服务器实现,所述服务器可以是Etcd。
图8示出了本申请实施例提供的数据迁移装置的可选结构示意图,将根据各个部分进行说明。
Config API:该模块为配置管理模块,监听来自管理员用户的配置管理请求,将请求经过负载均衡后,转发给后端代理服务器;
服务器:一个高可用强一致性的服务发现存储数据库,负责各个模块间一致性信息的共享与协调。其中存储着Config API下发给代理服务器任务列表,代理服务器的注册信息,以及Redis服务器的注册信息等。
代理服务器:用于处理来自Config API转发的请求与客户端发来的数据操作请求,后端连接着Redis分片,即Redis Group(Redis服务器组)。所述代理服务器在内存中缓存了slot与Redis Group的映射关系,可根据客户端操作的key通过crc32(key)%1024计算后得到的值,即slot值,将请求转发到后端对应的Redis Group,并将结果返回给客户端。客户端或配置管理模块只需获取代理服务器一个统一的服务IP,经负载均衡后,即可使用Redis服务,节省了IP地址资源。同时,代理服务器是无状态的模块,支持水平平滑扩展。
Redis Group:原生Redis主从部署模式,包括一个Master节点,两个Slave节点,受到三个Sentinel(哨兵)节点监控,形成高可用服务组。这三个Sentinel节点负责整个集群下多个Redis Group的高可用服务。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序命令相关的硬件来完成,前述的程序可以存储于一存储介质中,所述存储介质包括:移动存储设备、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种数据迁移方法,其特征在于,所述方法包括:
第一代理服务器获取第一数据迁移任务的信息;
所述第一代理服务器基于第一分布式锁获得执行所述第一数据迁移任务的权限;
在所述第一数据迁移任务未被第二代理服务器执行的情况下,所述第一代理服务器执行所述第一数据迁移任务;
所述方法还包括:
所述第一代理服务器监控服务器中数据迁移任务集中的任务;
在所述数据迁移任务集中的数据迁移任务被删除的情况下,所述第一代理服务器根据所述被删除的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;
在所述数据迁移任务集中增加数据迁移任务的情况下,所述第一代理服务器增加所述增加的数据迁移任务,并根据所述增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一代理服务器获得执行所述第一数据迁移任务的权限的情况下,所述第一代理服务器向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,所述第一代理服务器将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,所述第一代理服务器获取第二分布式锁;所述第一代理服务器基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述第一代理服务器向服务器发送注册信息,在所述第一代理服务器注册成功的情况下,所述第一代理服务器获取所述第一分布式锁。
6.一种数据迁移装置,其特征在于,所述装置包括:
获取单元,用于获取第一数据迁移任务的信息;用于基于第一分布式锁获得执行所述第一数据迁移任务的权限;
执行单元,用于在所述第一数据迁移任务未被第二代理服务器执行的情况下,执行所述第一数据迁移任务;
监控单元,用于监控服务器中数据迁移任务集中的任务;
更新单元,用于在所述数据迁移任务集中的数据迁移任务被删除的情况下,根据所述被删除的数据迁移任务的任务信息,更新第一代理服务器中存储的映射表;还用于根据增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表;
添加单元,用于在所述数据迁移任务集中增加数据迁移任务的情况下,添加所述增加的数据迁移任务,并根据所述增加的数据迁移任务的任务信息,更新所述第一代理服务器中存储的映射表。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
发送单元,用于在所述第一代理服务器获得执行所述第一数据迁移任务的权限的情况下,向服务器发送锁信息删除指令;所述锁信息删除指令,用于指示所述服务器删除所述第一分布式锁的锁信息;或发送单元,用于在接收到客户端发送的针对所述第一数据迁移任务中第一数据的操作请求的情况下,将所述操作请求发送至所述第一数据迁移任务对应的目标迁移组。
8.根据权利要求7所述的装置,其特征在于,
所述获取单元,用于在所述第一代理服务器执行完成所述第一数据迁移任务的情况下,获取第二分布式锁;
发送单元,用于基于所述第二分布式锁,向服务器发送任务删除指令;所述任务删除指令用于指示所述服务器删除所述第一数据迁移任务。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
发送单元,用于向服务器发送注册信息;
所述获取单元,用于在所述第一代理服务器注册成功的情况下,获取所述第一分布式锁。
10.一种存储介质,存储有可执行程序,其特征在于,所述可执行程序被处理器执行时,实现权利要求1至5任一项所述的数据迁移方法。
11.一种数据迁移装置,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序,其特征在于,所述处理器运行所述可执行程序时执行如权利要求1至5任一项所述数据迁移方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041527.4A CN113127444B (zh) | 2020-01-15 | 2020-01-15 | 一种数据迁移方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010041527.4A CN113127444B (zh) | 2020-01-15 | 2020-01-15 | 一种数据迁移方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127444A CN113127444A (zh) | 2021-07-16 |
CN113127444B true CN113127444B (zh) | 2023-04-14 |
Family
ID=76771307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010041527.4A Active CN113127444B (zh) | 2020-01-15 | 2020-01-15 | 一种数据迁移方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127444B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672556A (zh) * | 2021-08-19 | 2021-11-19 | 工银科技有限公司 | 一种批量文件的迁移方法及装置 |
CN114598711B (zh) * | 2022-03-29 | 2024-04-16 | 百果园技术(新加坡)有限公司 | 一种数据迁移方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110137972A1 (en) * | 2009-12-03 | 2011-06-09 | Recursion Software, Inc. | System and method for agent networks |
CN105991769A (zh) * | 2016-04-12 | 2016-10-05 | 上海帝联信息科技股份有限公司 | 数据迁移方法及装置、边缘节点服务器 |
CN110532247A (zh) * | 2019-08-28 | 2019-12-03 | 北京皮尔布莱尼软件有限公司 | 数据迁移方法和数据迁移*** |
-
2020
- 2020-01-15 CN CN202010041527.4A patent/CN113127444B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110137972A1 (en) * | 2009-12-03 | 2011-06-09 | Recursion Software, Inc. | System and method for agent networks |
CN105991769A (zh) * | 2016-04-12 | 2016-10-05 | 上海帝联信息科技股份有限公司 | 数据迁移方法及装置、边缘节点服务器 |
CN110532247A (zh) * | 2019-08-28 | 2019-12-03 | 北京皮尔布莱尼软件有限公司 | 数据迁移方法和数据迁移*** |
Also Published As
Publication number | Publication date |
---|---|
CN113127444A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836135B1 (en) | Method and system for transparent database query caching | |
US7447693B2 (en) | Dynamic cluster database architecture | |
US8832130B2 (en) | System and method for implementing on demand cloud database | |
US9032017B1 (en) | Method and system for transparent read-write query routing when load balancing databases | |
US9875259B2 (en) | Distribution of an object in volatile memory across a multi-node cluster | |
CN106936899B (zh) | 分布式统计分析***的配置方法及分布式统计分析*** | |
US20100138540A1 (en) | Method of managing organization of a computer system, computer system, and program for managing organization | |
US6393459B1 (en) | Multicomputer with distributed directory and operating system | |
US20160026684A1 (en) | Framework for volatile memory query execution in a multi node cluster | |
WO2012086919A2 (ko) | 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체 | |
US20110239216A1 (en) | Service providing system, a virtual machine server, a service providing method, and a program thereof | |
US20060123121A1 (en) | System and method for service session management | |
CN111897638A (zh) | 分布式任务调度方法及*** | |
CN113127444B (zh) | 一种数据迁移方法、装置、服务器及存储介质 | |
CN116150160B (zh) | 数据库集群处理节点的调整方法、装置及存储介质 | |
CN111158851B (zh) | 一种虚拟机快速部署方法 | |
CN113342711B (zh) | 页表更新方法、装置及相关设备 | |
US8707318B2 (en) | Partitioning system including a generic partitioning manager for partitioning resources | |
US20090100082A1 (en) | Replication and mapping mechanism for recreating memory durations | |
CN112261097B (zh) | 用于分布式存储***的对象定位方法及电子设备 | |
US8442939B2 (en) | File sharing method, computer system, and job scheduler | |
CN109005071B (zh) | 一种决策部署方法和调度设备 | |
CN113448775B (zh) | 多源异构数据备份方法及装置 | |
CN114157569A (zh) | 集群***及其构建方法和构建装置 | |
US9548940B2 (en) | Master election among resource managers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |