CN107885758B - 一种虚拟节点的数据迁移方法和虚拟节点 - Google Patents
一种虚拟节点的数据迁移方法和虚拟节点 Download PDFInfo
- Publication number
- CN107885758B CN107885758B CN201610877920.0A CN201610877920A CN107885758B CN 107885758 B CN107885758 B CN 107885758B CN 201610877920 A CN201610877920 A CN 201610877920A CN 107885758 B CN107885758 B CN 107885758B
- Authority
- CN
- China
- Prior art keywords
- service
- node
- physical node
- virtual
- migration
- 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
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Abstract
本申请公开了一种虚拟节点的数据迁移方法,包括:源物理节点接收迁移指示消息;所述源物理节点根据所述迁移指示消息确定目标物理节点和所述源物理节点上待迁移的至少一个虚拟节点;获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象;所述源物理节点以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点。本申请还提供了一种物理节点,能实现关系型数据的迁移。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟节点的数据迁移方法和虚拟节点。
背景技术
目前,分布式数据库技术是IT技术领域中普遍使用的一项分布式技术,其主要应用于网页页面缓存、数据库缓存等方面以满足用户对网络系统响应速度的要求。
在基于一致性哈希算法的分布式数据库系统中,物理节点可虚拟出多个虚拟节点,然后将多个虚拟节点通过哈希算法映射到环上,这样物理节点可增大在环上映射的哈希值范围。在分布式数据库系统中多个物理节点不满足负载均衡条件时,需要对物理节点上的虚拟节点进行迁移;例如在分布式数据库系统新增物理节点或删除物理节点时,通过调整各个物理节点关联的虚拟节点的数量,使各个物理节点关联的虚拟节点的数量趋于相等,使分布式数据库系统的所有物理节点实现虚拟节点的负载均衡。在目前的虚拟节点迁移方案中,MVCC(Multi-Version Concurrency Control,多版本并发控制)机制进行对分布式数据库中的数据进行迁移,迁移过程避免使用锁,从而具有开销小的优点,但是这种迁移机制仅适用于非关系型数据库。
发明内容
本发明实施例公开了一种虚拟节点的数据迁移方法及物理节点,能够实现对物理节点上的关系型数据库的数据进行迁移。
第一方面,本申请提供了一种虚拟节点的数据迁移方法,源物理节点和目标物理节点包括但不限于小型机、x86服务器、个人工作站或其他类型的硬件服务器,源物理节点和目标物理节点为分布式数据库系统中的物理节点,在分布式数据库系统中,分布式数据库系统包括多个物理节点,触发数据迁移的方式可以是:元数据节点检测到分布式数据库系统中的多个物理节点在业务运行的过程中不满足负载均衡条件时,触发数据迁移;或者,元数据节点检测到分布式数据库系统中增加新的物理节点,触发数据迁移;或者删除分布式数据库系统中的某个物理节点时,触发数据迁移;或者手动触发分布式数据库系统中某个物理节点上虚拟节点的数据迁移。元数据节点检测到多个物理节点上某个物理节点的虚拟节点需要进行数据迁移时,元数据节点确定源物理节点和目标物理节点,以及源物理节点上待迁移的至少一个虚拟节点,元数据节点可以向源物理节点发送迁移指示消息,迁移指示消息中可携带目标物理节点的标识和源物理节点上待迁移的至少一个虚拟节点的标识,其中,迁移指示消息可以由元数据节点发送,也可以由分布式数据库系统中其他节点发送。源物理节点首先接收迁移指示消息,根据迁移指示消息确定待迁移的至少一个虚拟节点和目标物理节点,其中虚拟节点上的数据的组织形式可以为关系数据库,虚拟节点包括多个业务对象,数据结构信息表示多个业务对象所属的业务表的关联关系,源物理节点根据数据结构信息得到待迁移的至少一个虚拟机节点所属的所有业务对象,源物理节点将所有业务对象依次迁移到目标物理节点上。上述实施例,源物理节点待迁移的虚拟节点的数据结构信息,根据数据结构信息获取待迁移的业务对象,将所有业务对象迁移到目标物理节点,实现了关系型数据的逻辑迁移。
在本申请的一种可能的实施方式中,获取源物理节点的数据结构信息,以及根据数据结构信息得到待迁移的至少一个虚拟节点所属的业务对象包括:数据结构信息包括数据分片表和业务对象附属表,数据分片表用于存放虚拟节点与业务对象的映射关系,例如存放虚拟节点的标识与业务对象的标识之间的映射关系,业务对象的标识可以为哈希值表示。源物理节点获取至少一个虚拟节点中每个虚拟节点的虚拟节点标识,源物理节点根据预设的数据分片表以虚拟节点标识为索引查询至少一个虚拟节点各自所属的一个或多个业务对象,得到至少一个虚拟节点上所有业务对象,对于所有业务对象中的任意一个业务对象,源物理节点获取业务对象的业务对象标识,根据预设的业务对象附属表以业务对象标识为索引查询业务对象所属的业务表,业务表存放有多条业务记录,可以根据业务对象的标识在业务表重检索业务记录。
在本申请的一种可能的实施方式中,在源物理节点执行路由切换之前,源物理节点接收客户端的业务访问请求,源物理节点根据业务请求所指示的业务对象执行业务访问请求,源物理节点将业务访问请求记录到业务日志中,将业务日志发送给目标物理节点。其中,源物理节点每生成一个业务日志,可以为业务日志增加时间戳或版本号,以便于目标物理节点区分业务日志的先后顺序。上述实施例,源物理节点在业务对象的迁移过程中,接收到客户端发送的业务访问请求,正常处理业务访问请求,不需要影响用户业务,实现了在线迁移,另外通过源物理节点与目标物理节点的业务日志的同步,使源物理节点和目标物理节点的数据保持同步。
在本申请的一种可能的实施方式中,还包括:源物理节点在待迁移的至少一个虚拟节点对应的所有业务对象迁移完成的情况下,源物理节点向元数据节点发送迁移完成消息,迁移完成消息用于通知元数据节点待迁移的所有业务对象已成功迁移至目标物理节点,元数据节点接收到迁移完成消息后,向源物理节点发送切换指示消息,源物理节点接收到切换指示消息时,阻塞客户端发起的事务,事务包括多个业务访问请求,事务具有完整性的特点,事务执行完成的条件是多个业务访问中每个业务访问请求必须全部成功执行,如果多个业务访问请求中任意一个或多个业务访问请求没有成功执行,事务就会进行回滚,从而重新执行事务。源物理节点接收到切换指示消息时,如果存在已启动的事务,源物理节点等待已启动的事务成功执行后,源物理节点向元数据节点返回切换准备消息,切换准备消息表示源物理节点作为路由切换的准备,元数据节点收到切换准备消息后,可向客户端发送路由切换消息,路由切换消息可包括待切换的至少一个虚拟节点与目标物理节点的映射关系信息,客户端根据路由切换消息更新路由信息。上述实施例,有效的保证源物理节点和目标物理节点之间的数据的完整性,可靠性高。
在本申请的一种可能的实施方式中,源物理节点以业务对象为粒度将所有业务对象迁移到目标物理节点包括:源物理节点从所述所有业务对象中选择一个待迁移的业务对象,将待迁移的业务对象进行加锁处理,加锁处理后待迁移的业务对象只能进行读操作,不能进行写操作,避免待迁移的业务对象被修改;源物理节点将待迁移的业务对象发送给目标物理节点,源物理节点在确认待迁移的业务对象成功迁移到目标物理节点时,删除待迁移的业务对象。上述实施例,在迁移业务对象的过程中进行业务访问请求的转移,占用资源少。
在本申请的一种可能的实施方式中,还包括:在业务对象的迁移过程中,源物理节点接收到客户端发送的针对待访问的业务对象的业务访问请求时,源物理节点判断待访问的业务对象是否已迁移到目标物理节点,若为是,源物理节点向客户端返回路由更新消息,其中,路由更新消息中可携带待访问的业务对象的标识和目标物理节点的标识,客户端可根据路由更新消息更新待访问的业务对象所在的物理节点,这样客户端下次针对待访问的业务对象发起业务访问请求时,根据更新后的路由信息直接向目标物理节点发送业务访问请求。
在本申请的一种可能的实施方式中,还包括:在业务对象迁移完成时,源物理节点向元数据节点发送迁移完成消息,迁移完成消息用于通知元数据节点待迁移的至少一个虚拟节点所属的所有业务对象迁移完成,元数据节点接收到迁移完成消息,向客户端发送路由切换消息,路由切换消息用于指示客户端更新待迁移的至少一个虚拟节点所在的物理节点,此时的路由切换消息中可携带至少一个的虚拟节点的标识与目标物理节点的标识,客户端接收路由切换消息更新路由信息。
第二方面,本申请提供了一种虚拟节点的迁移方法,包括:目标物理节点接收迁移指示消息;其中,迁移指示消息中可携带源物理节点的标识,目标物理节点接收源物理节点发送的业务对象;目标物理节点确定源物理节点待迁移的业务对象发送完毕时,获取接收到的所有业务对象的数据结构信息,根据数据结构信息重建至少一个虚拟节点。上述实施例,目标物理节点获取迁移过来的业务对象的数据结构信息,根据数据结构信息重构虚拟节点,实现数据的恢复。
在本申请的一种可能的实施方式中,还包括:目标物理节点接收源物理节点发送的业务日志,根据日志文件中包括的业务访问请求进行业务重演。例如根据业务日志的时间戳或版本号的先后顺序进行业务重演。
在本申请的一种可能的实施方式中,还包括:目标物理节点确定源物理节点上的业务日志发送完成时,获取至少一个虚拟节点分配的目标副本物理节点,将存储的业务日志和所述至少一个虚拟节点包括的所有业务对象迁移到目标副本物理节点上,目标副本业务节点接收业务对象,根据接收到的业务对象重组虚拟节点,以及根据接收到的业务日志进行业务重演,为虚拟节点进行备份。需要说明的是,两个或两个以上互为备份的虚拟节点部署时满足物理节点的反亲和性的规则,即互为至少两个的虚拟节点分别位于不同的物理节点,元数据节点根据反亲和性的规则部署目标物理节点的目标副本物理节点,由提高虚拟节点的可靠性。
第三方面,本申请提供了一种物理节点,物理节点为源物理节点,源物理节点包括:
接收模块,用于接收迁移指示消息;
确定模块,用于根据迁移指示消息确定目标物理节点和源物理节点上待迁移的至少一个虚拟节点;
获取模块,用于获取源物理节点自身的数据结构信息,以及根据数据结构信息得到至少一个虚拟节点所属的所有业务对象;
迁移模块,用于以业务对象为粒度将所有业务对象迁移到目标物理节点。
在一种可能的实施方式中,数据结构信息包括数据分片表和数据附属表;
获取模块用于:
根据数据分片表查询至少一个虚拟节点所属的一个或多个业务对象,以及根据业务对象附属表查询多个业务对象中每个业务对象所属的业务表。
在一种可能的实施方式中,还包括:
第一访问处理模块,用于接收客户端发送业务访问请求;
执行业务访问请求,以及向客户端返回业务访问响应;
将业务访问请求记录到业务日志中,以及将业务日志发送给目标物理节点。
在一种可能的实施方式中,还包括:
事务处理模块,用于在业务对象迁移完成的情况下,向元数据节点发送迁移完成消息;
接收元数据节点根据迁移完成消息返回的切换指示消息;
接收到切换指示消息时,阻塞客户端发起的事务;
在已启动的事务成功执行的情况下,向元数据节点返回切换准备消息;其中,切换准备消息用于表示源物理节点完成路由切换准备。
在一种可能的实施方式中,迁移模块用于:
从所有业务对象中选择一个待迁移的业务对象,将待迁移的业务对象进行加锁处理;
确认待迁移的业务对象成功迁移到目标物理节点时,删除待迁移的业务对象。
在一种可能的实施方式中,还包括:
第二访问处理模块,用于在业务对象的迁移过程中,接收客户端发送的针对待访问的业务对象的业务访问请求;
判断待访问的业务对象是否已迁移到目标物理节点;
若为是,向客户端返回路由更新消息;其中,路由更新消息用于指示客户端更新待访问的业务对象所在的物理节点。
在一种可能的实施方式中,还包括:
通知模块,用于在业务对象迁移完成时,向元数据节点发送迁移完成消息;其中,迁移完成消息用于表示至少一个虚拟节点所属的所有业务对象迁移完成。
第四方面,本申请提供了一种物理节点,物理节点为目标物理节点,目标物理节点包括:
确定模块,用于接收迁移指示消息,以及根据迁移指示消息确定源物理节点;
接收模块,用于接收源物理节点发送的业务对象;
重建模块,用于在确定源物理节点的业务对象迁移完成时,获取接收到的业务对象的数据结构信息,根据数据结构信息重建虚拟节点。
在一种可能的实施方式中,还包括:
业务恢复模块,用于接收到源物理节点发送的业务日志,根据业务日志进行业务重演;其中,业务日志包括业务访问请求。
在一种可能的实施方式中,还包括:
数据备份模块,用于确定源物理节点上的业务日志发送完成的情况下,确定目标副本物理节点,将存储的业务日志和该虚拟节点迁移到目标副本物理节点上。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式数据库系统的结构示意图;
图2是本发明实施例提供的一种虚拟节点的数据迁移方法的流程示意图;
图3是本发明实施例提供的又一种虚拟节点的数据迁移方法的流程示意图;
图4a是本发明实施例提供的一种虚拟节点的业务对象的获取方法的流程示意图;
图4b是本发明实施例提供的一种物理节点的数据结构的示意图;
图4c是本发明实施例提供的一种虚拟节点的数据迁移方法的原理示意图;
图5是本发明实施例提供的一种物理节点的结构示意图;
图6是本发明实施例提供的又一种物理节点的结构示意图;
图7是本发明实施例提供的又一种物理节点的结构示意图;
图8是本发明实施例提供的又一种物理节点的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明实施例提供的基于哈希一致性的分布式数据库系统的结构示意图,在本发明实施例中,分布式数据库系统包括至少一个客户端、元数据节点、物理节点集群和存储网络。至少一个客户端通过IP网络分别与元数据节点和物理节点集群进行通信,其中,客户端与元数据节点或物理节点集群之间的通信接口可以TCP(TransmissionControl Protocol,传输控制协议)接口或UDP(User Datagram Protocol,用户数据报协议)接口。元数据节点包括数据均衡装置,元数据节点可以采用独立部署的方式,例如可采用小型机、X86计算机、个人计算机服务器PC server进行部署,也可以和物理节点集群合设。物理节点集群包括多个物理节点,物理节点可以为小型机、X86计算机或个人计算机服务器PC server等,多个物理节点的数据可存储在存储网络的存储介质中,多个物理节点与存储网络之间通过Block IO(块IO)进行读写,即以Block的方式对存储介质进行读写,存储介质可以是HDD(Hard Disk Drive,硬盘驱动器)、SSD(Solid State Drives,固态硬盘)或内存等。
其中,元数据节点主要存储了数据库系统的元数据(Metadata),元数据是关于数据的组织、数据域及其关系的信息,简言之,元数据就是用于描述数据的数据。数据均衡装置负责分布式数据库系统整体的分布式管理能力。数据均衡装置除了可以部署在元数据节点中,还可以内置到各个物理节点中。分布式数据库系统的高可靠部署方式可采用双机或集群方式,本发明不限。数据均衡装置主要涉及以下几个方面的功能:
元数据定义:存储和更新虚拟节点与物理节点间的映射关系、虚拟节点的副本定义、权重因子的负载度及权重系数计算方法、偏差系数的配置和存储、虚拟节点的裂变策略等。
路由管理:管理业务对象的路由数据,根据虚拟节点与物理节点间的映射关系,调用元数据定义单元接口。
复制管理:存储和更新虚拟节点的主副本复制关系,并负责复制完整性的管控,调用元数据定义单元接口。
节点监控:监控业务信息和节点资源信息,调用通信服务单元,获取各数据服务节点的信息,并下发监控指令。
在线迁移:提供按数据分片为单位的在线迁移能力,支持对业务无影响,保证迁移的高可用性。调用元数据定义接口完成路由和复制关系的变更。
数据均衡:根据数据均衡条件,实现物理节点之间的数据均衡。
元数据同步/持久化:将元数据定义信息同步给各个物理节点、客户端的驱动(Driver)和数据均衡装置的从(Slaver)节点。元数据变更时,需要将变更信息通知到上述节点,并对元数据进行持久化,便于保证数据的高可靠性。
通信服务:提供与周边网元(各个物理节点、客户端的Driver和数据均衡装置的Slaver节点)的网络通信能力。
多个物理节点可部署代理Agent,Agent负责与数据均衡装置进行信息交互(例如:上报节点健康性信息、接收数据均衡装置的指令,并提供节点高可用性的自我管理,例如网络异常时角色降级)。
另外,在客户端还部署了驱动Driver,Driver中缓存路由信息。这样,客户端可以通过缓存的路由信息完成路由判断,访问对应的物理节点,从而避免数据均衡装置成为业务访问时路由查询的瓶颈。
请参见图2,图2是本发明实施例提供的一种虚拟节点的数据迁移方法的流程示意图,该方法包括但不限于如下步骤。
S201、元数据节点检测满足迁移条件。
具体地,元数据节点检测分布式数据库系统中多个物理节点需要进行数据迁移时,确定源物理节点、目标物理节点以及源物理节点上待迁移的至少一个虚拟节点。分布式数据库系统包括多个物理节点,迁移条件为包括但不限于:多个物理节点新增物理节点、删除多个物理节点中的某个物理节点或多个物理节点不满足负载均衡条件,负载均衡条件包括每个物理节点上节点的数量均衡、每个物理节点上的业务量均衡;此时分布式数据库系统需要进行数据迁移,使分布式数据库系统满足负载均衡条件,元数据节点确定源物理节点、目标物理节点以及源物理节点上待迁移的至少一个虚拟节点。
示例性的,分布式数据库系统中包括3个物理节点,3个物理节点分别为物理节点a、物理节点b和物理节点c,3个物理节点中每个物理节点包括4个虚拟节点,当分布式数据库系统中新增一个物理节点d时,元数据节点检测到分布式数据库系统不满足负载均衡条件(负载均衡条件为虚拟节点的数量均衡),元数据节点需要分别从物理节点a、物理节点b和物理节点c中选择一个虚拟节点,将选择的虚拟节点迁移到物理节点d,则元数据节点确定源物理节点为物理节点a、物理节点b和物理节点c,目标物理节点为物理节点d,元数据节点确定物理节点a上待迁移的虚拟节点为所属的4个虚拟节点中的任意一个,物理节点b上待迁移的虚拟节点为所属的4个虚拟节点中的任意一个,物理节点c上待迁移的虚拟节点为待迁移的物理节点中的任意一个。
S202、元数据节点向源物理节点下发迁移指示消息。
具体地,迁移指示消息用于指示源物理节点进行迁移操作,迁移指示消息可包括目标物理节点的标识和源物理节点上待迁移的至少一个虚拟节点的标识,源物理节点可根据迁移指示消息确定目标物理节点和源物理节点上待迁移的至少一个虚拟节点。
S203、源物理节点获取待迁移的至少一个虚拟节点的数据结构信息
具体地,虚拟节点上包括多个业务对象,业务对象为根据预设的划分规则划分的对象的数据集合;例如:以客户划分对象,每个客户的数据集合为一个业务对象;数据结构信息表示物理节点上的数据的结构,数据结构信息具体包括物理节点与虚拟节点的映射关系,虚拟节点与业务对象的映射关系,业务对象与业务表的映射关系,数据结构信息可由元数据节点进行维护。源物理节点根据数据结构信息获得待迁移的至少一个虚拟节点对应的所有业务对象,源物理节点可以向元数据节点获取待迁移的至少一个虚拟节点的数据结构信息。
参见图4a,在本实施例的一种可能的实施方式中,所述源物理节点获取所述至少一个虚拟节点中每个虚拟节点的数据结构信息,以及根据所述数据结构信息得到所有业务对象包括:
S401、获取待迁移的至少一个虚拟节点的虚拟节点标识。
具体的,物理节点上的数据可分为四个层次,从上到下分别为虚拟节点、业务对象、业务表和业务记录,一个虚拟节点关联多个业务对象,一个业务对象关联多个业务表,一个业务表存放多个业务记录;业务对象表示根据预先定义规则划分的对象所属的数据集合,例如:根据不同的客户划分对象,每个客户为一个业务对象;根据业务类型划分对象,每种业务对象为一个业务对象;根据不同的订单划分业务对象,每个订单为一个业务对象;业务表用于存储具体的业务记录。元数据节点上可维护数据结构信息,数据结构信息表示物理节点的数据结构,数据结构信息包括数据分片表,业务对象根表和业务对象附属表;数据分片表存放表示虚拟节点与业务对象之间的映射关系的记录,映射关系可以用虚拟节点标识与业务对象的标识进行关联来表示;业务对象根表存放业务对象的基本信息,例如:在业务对象为某个客户的数据集合时,业务对象根表中存放客户的个人信息;业务对象附属表存放表示业务对象与业务表之间的映射关系。
S402、根据虚拟节点标识检索预设的数据分片表得到对应的所有业务对象的业务对象标识。
具体的,源物理节点从元数据节点获取数据分片表,以虚拟节点标识检索数据分片表得到待迁移的至少一个虚拟节点所属的所有业务对象的业务对象标识。
S403、根据业务对象标识检索预设的业务对象附属表得到业务表。
具体的,业务对象附属表定义了业务对象与业务表之间的映射关系,源物理节点根据业务对象标识检索预设的业务对象附属表得到业务表。
S404、根据业务对象标识在业务表中检索得到业务记录。
示例性的,参见图4b所示,假设待迁移的至少一个虚拟节点为虚拟节点1,源物理节点获取虚拟节点1的虚拟节点标识,根据该虚拟节点标识检索预设的数据分片表得到虚拟节点1关联业务对象11、业务对象12、…、业务对象1m的业务对象标识,然后源物理节点根据业务对象标识检索预设的业务对象附属表得到关联的多个业务表,以业务对象11为例,检索得到业务对象11的业务对象标识关联有业务表111、业务表112、…、业务表11k;接下来源物理节点可根据业务对象的业务对象标识在业务表中检索到对应的业务记录,以业务表111为例,业务表111中存放的业务记录1111、业务记录1112、…、业务记录111h。
S204、源物理节点向目标物理节点发送首个业务对象C1。
具体的,源物理节点确定待迁移的至少一个虚拟节点所属的所有业务对象后,从所有业务对象中选取一个业务对象发送给目标物理节点。其中,源物理节点设置一个记录业务对象的迁移状态的记录表,在初始状态下,所有业务对象的迁移状态为未迁移,在某个业务对象成功迁移到目标物理节点时,源物理节点将该业务对象的迁移状态变更为已迁移。
S205、源物理节点接收到客户端发送的业务访问请求。
具体的,业务访问请求的操作对象为S203中所有业务对象中的一个,业务访问请求的操作类型可以是读操作或写操作。
S206、源物理节点生成业务日志。
具体的,业务日志中包括业务访问请求,源物理节点还可以在业务日志中增加时间戳或版本号,便于目标物理节点区分业务访问请求的先后顺序。
S207、源物理节点向客户端返回业务访问响应。
具体的,源物理节点根据业务访问请求执行相应的操作,向客户端返回业务访问响应,例如:业务访问请求的操作类型为读操作,业务访问响应中携带读取的数据,业务访问请求的操作类型为写操作时,业务访问响应中携带写状态信息,写状态信息用于表示写操作是否执行成功。
S208、源物理节点向目标物理节点发送业务日志。
具体的,源物理节点向目标物理节点发送业务日志,目标物理节点对接收到的业务日志进行缓存。需要说明的是,源物理节点可以在每接收到一个业务访问请求生成业务日志,将业务日志发送给目标物理节点,也可以是源物理节点接收到一个业务访问请求生成业务日志,将生成的业务日志进行缓存,在所有业务对象迁移完成后,将缓存的业务日志全部发送给目标物理节点。
S209、源物理节点向目标物理节点发送最后一个业务对象。
具体的,待迁移的至少一个虚拟节点对应的业务对象的数量为n,源物理节点可以对已迁移的业务对象进行计数,每迁移一个业务对象计数值加1,在计数值等于所有业务对象的数量n时,表明所有业务对象迁移成功。
S210、虚拟节点的重建和业务重演。
具体的,目标物理节点接收源物理节点发送的业务对象,源物理节点在待迁移的所有业务对象发送完毕后,可以先向目标物理节点发送迁移完成消息,迁移完成消息表示源物理节点上待迁移的业务对象全部发送完毕;目标物理节点在确定源物理节点上待迁移的所有业务对象发送完毕后,可以从元数据节点上获取源物理节点的数据结构信息,目标物理节点根据数据结构信息对接收到的所有业务对象进行重组,得到该至少一个虚拟节点。同时,目标物理节点可在源物理节点的指示或元数据节点的指示后根据缓存的业务日志进行业务重演,目标物理节点根据日志文件中携带的时间戳或版本号进行日志重演,使目标物理节点上业务访问请求的执行顺序与源物理节点保持一致。其中在进行业务重演的过程中,如果业务访问请求的操作类型为读操作,可以跳过该业务访问请求。例如:目标物理节点缓存的业务日志包括:业务日志1、业务日志2、业务日志3和业务日志4;业务日志1中记录的业务访问请求为修改用户信息,记录的版本号为1.0;业务日志2中记录的业务访问请求为修改计费类型,记录的版本号为1.1;业务日志3记录的业务访问请求为读取消费记录,记录的版本号为1.2;业务日志4中记录的业务访问请求为修改用户余额,记录的版本号为1.3。假设版本号的记录规则为根据先后顺序递增,版本号大的业务日志比版本号小的业务日志新,目标物理节点在根据上述的4个业务日志进行业务重演时,依照业务日志1、业务日志2、业务日志3和业务日志4的顺序进行业务重演。
S211、源物理节点向元数据节点发送迁移完成消息。
具体的,源物理节点在待迁移的至少一个虚拟节点所属的所有业务对象迁移完成时,向元数据节点发送迁移完成消息,迁移完成消息表示源物理节点上待迁移的所有业务对象迁移完毕。
S212、元数据节点向源物理节点下发切换指示消息。
其中,切换指示消息用于指示源物理节点执行路由切换。
S213、源物理节点阻塞请求的事务,等待已启动的事务执行完成。
具体的,源物理节点接收到切换指示消息之后,阻塞客户端请求的事务,事务包括多个业务访问请求,事务具有完整性的特点,在事务包括的多个业务访问请求全部执行成功后,事务才视为执行成功,当事务包括的任意一个或多个业务操作请求没有执行成功时,需要对事务进行回退操作,重新执行事务包括的多个业务访问请求;源物理节点判断存在已启动的事务,且已启动的事务未成功执行时,等待已启动的事务执行完成。
S214、源物理节点向元数据节点返回切换准备消息。
具体的,源物理节点在已启动的事务执行完成后,向元数据节点返回切换准备消息,切换准备消息表示源物理节点已经完成路由切换的准备。
在本申请的一种可能的实施方式中,源物理节点可以在待迁移的至少一个虚拟节点所属的所有业务节点发送完成后,阻塞客户端请求的事务,源物理节点在确定已启动的事务执行完成后,向元数据节点发送切换准备消息,切换准备消息用于表示源物理节点已作好路由切换的准备,以确保事务的完整性。
其中,源物理节点可以向目标物理节点发送切换准备消息,目标物理节点在接收切换准备消息之后,再根据缓存的业务日志进行业务重演,目标物理节点在业务重演完成后,可以从元数据节点获取源物理节点的副本物理节点,目标物理节点将缓存的业务日志发送个副本物理节点,副本物理节点根据业务日志对至少一个虚拟节点进行业务重演。
S215、元数据节点向客户端发送路由切换消息。
具体的,元数据节点接收到切换准备消息时,确认源物理节点作为路由切换准备,元数据节点获取目标物理节点的标识和待迁移的至少一个虚拟节点的标识,元数据节点向客户端发送路由切换消息,路由切换消息用于指示客户端更新至少一个虚拟节点所在的物理节点,路由切换消息中可携带待迁移的至少一个虚拟节点的标识和目标物理节点的标识。
S216、客户端向目标物理节点发送业务访问请求。
具体的,客户端接收路由切换消息,将至少一个虚拟节点与源物理节点的映射关系变更为至少一个虚拟节点与目标物理节点的映射关系,客户端向至少一个虚拟节点所属的业务对象发送业务对象请求时,根据变更后的映射关系向目标物理节点发送业务访问请求。
S217、目标物理节点向客户端返回业务访问响应。
具体的,目标物理节点接收业务访问请求,根据业务访问请求执行相应的操作,向客户端返回业务访问响应。
S218、元数据节点向源物理节点发送下线通知消息。
具体的,下线通知消息用于对源物理节点中至少一个虚拟节点进行清理,下线通知消息中可携带至少一个虚拟节点的标识。
参见图4c所示,下面就一个具体的实施例一种虚拟节点的数据迁移方法进行说明:
在初始条件下,分布式数据库系统包括4个物理节点,分别为物理节点1、物理节点2、物理节点3和物理节点4,每个物理节点包括12个虚拟节点,每个虚拟节点部署有1个副本,下面括号中编号为虚拟节点的表换,相同编号的两个虚拟节点互为主本和副本,也可以称为主节点和备节点(或主分片或备分片),物理节点与虚拟节点的映射关系如下:
物理节点1:(1,2,3,4,5,6),(9,12,14,17,19,22)
物理节点2:(7,8,9,10,11,12),(1,4,15,18,20,23)
物理节点3:(13,14,15,16,17,18),(2,5,7,10,21,24)
物理节点4:(19,20,21,22,23,24),(3,6,8,11,13,16)
随着业务发展,当前的4个物理节点负荷过重,计划扩展一个新的物理节点5。元数据节点的数据均衡子系统计算出需要分别迁移物理节点1.虚拟节点1、物理节点2.虚拟节点7、物理节点3.虚拟节点13、物理节点4.虚拟节点19到物理节点5。依次遍历物理节点1.虚拟节点1、物理节点2.虚拟节点7、物理节点3.虚拟节点13、物理节点4.虚拟节点19。物理节点1~4为源物理节点,物理节点5为目标物理节点。
数据分片表的结构定义为
{
Data_node_id int,//物理节点ID
Vnode_id int,//虚拟节点ID
startHashkey int,//记录虚拟节点的开始hash值
endHashkey int,//记录虚拟节点的结束hash值
is_primary bool//是否主本
}
以针对物理节点1的虚拟节点1的迁移为例:物理节点1通过数据分片表中虚拟节点标识Vnode_id=1为索引进行条件检索,获取虚拟节点1下的全部业务对象的标识,业务对象的标识可用Hash值表示,全部业务对象的标识为一个Hash值范围列表,假设全部业务对象的hash值范围列表为(O1,O2,O3,O4,O5);然后物理节点1以每个业务对象的Hash值为条件遍历业务对象根表,获取业务对象根表信息,以及根据预设的业务对象附属表以业务对象的Hash值检索关联的业务表,业务表中存放有多个业务记录,物理节点1在确定待迁移的虚拟节点1所属的业务对象后,将虚拟节点1的业务对象迁移到物理节点5,形成基线复制。迁移过程中,如出现异常,则重新进行迁移,清理物理节点5.虚拟节点1,由物理节点1.虚拟节点1重新进行迁移。在业务对象的迁移期间,客户端可继续访问物理节点1.虚拟节点1,物理节点节点1.虚拟节点1执行业务访问请求,并返回业务访问响应,物理节点1.虚拟节点1将生成的业务日志发送给物理节点5,物理节点5缓存业务日志;物理节点1.虚拟节点1在全部的业务对象迁移完成后,物理节点5根据缓存业务日志的业务重演。物理节点1在确定全部的业务对象发送完毕后,阻塞客户端发起的事务,由于事务完整性的特点,物理节点1等待已启动的事务执行完毕后,向元数据节点发送切换准备消息,元数据节点接收切换准备消息后,向客户端发送路由切换消息,路由切换消息用于指示客户端将虚拟节点1与物理节点1的映射关系更新为虚拟节点1与物理节点5的映射关系。物理节点2的寻节点7、物理节点3的虚拟节点13和物理节点4的虚拟节点19的迁移过程可参照上述的描述,此处不再赘述。图4c中灰色的方块表示已迁移的虚拟节点,在虚拟节点1、7、13和19迁移到物理节点5时,需要在物理节点5上部署副本,部署副本时遵循反亲和性的规则,即主本和副本不能位于相同的物理节点上。
在图2所描述的方法中,源物理节点待迁移的虚拟节点的数据结构信息,根据数据结构信息获取待迁移的业务对象,将所有业务对象迁移到目标物理节点,实现了关系型数据的逻辑迁移。
请参见图3,图3是本发明实施例提供的又一种虚拟节点的数据迁移方法的流程示意图,该方法包括但不限于如下步骤。
S301、元数据节点检测到满足迁移条件。
具体地,分布式数据库系统包括多个物理节点,迁移条件包括但不限于新增物理节点、删除物理节点、不满足负载均衡条件或不满足数据均衡条件等。
S302、元数据节点与客户端之间同步元数据。
其中,元数据节点与客户端之间需要定期的同步元数据,元数据包括但不限于物理节点与虚拟节点的映射关系、虚拟节点的主本和副本的存储位置、数据均衡条件等。
S303、元数据节点下发迁移指示消息。
具体地,元数据节点将迁移指示消息下发给源物理节点与目标物理节点,触发源物理节点上业务对象的迁移。同时,元数据节点下发迁移指示消息给源物理节点的各个副本物理节点。
S304、源物理节点获取待迁移的至少一个虚拟节点的数据结构信息。
具体地,虚拟节点上包括多个业务对象,业务对象为根据预设的划分规则划分的对象的数据集合,例如,以客户划分对象,每个客户的数据集合为一个业务对象;数据结构信息表示物理节点上的数据的结构,数据结构信息具体包括物理节点与虚拟节点的映射关系,虚拟节点与业务对象的映射关系,业务对象与业务表的映射关系,数据结构信息可由元数据节点进行维护。源物理节点根据数据结构信息获得待迁移的至少一个虚拟节点对应的所有业务对象,源物理节点可以向元数据节点获取待迁移的至少一个虚拟节点的数据结构信息。
其中,在迁移期间,暂停源物理节点与副本物理节点之间的主从复制。暂停主从复制的原因是:在迁移过程中,仍然支持在线业务并发,同一个虚拟节点迁移前后的业务数据会访问不同的物理节点(源物理节点和目标物理节点),迁移期间,副本数据与主数据保持一致较为困难。
S305、源物理节点将待迁移的业务对象进行加锁处理。
具体地,源物理节点从所有业务对象中选取一个待迁移的业务对象,将待迁移的业务对象进行加锁处理,加锁处理后,待迁移的业务对象不可修改,即对待迁移的业务对象的操作只能为读操作,不能为写操作。
S306、源物理节点向目标物理节点发送待迁移的业务对象。
具体的,源物理节点从待迁移的所有业务对象中选择一个业务对象迁移到目标物理节点。
S307、源物理节点删除待迁移的业务对象。
具体的,源物理节点在待迁移的业务对象发送给目标物理节点之后,删除待迁移的业务对象。
S308、客户端向源物理节点发送业务访问请求。
具体的,在业务对象的迁移过程中,客户端向源物理节点发送针对待访问的业务对象的业务访问请求,业务访问请求访问的业务对象为所有的业务对象中的一个。
S309、源物理节点判断待访问的业务对象是否已迁移。
具体的,源物理节点维护一个业务对象的状态表,状态表中存储用于表示业务对象的状态的表项,业务对象的状态分为已迁移和未迁移,源物理节点可根据预先存储的状态表查询待访问的业务对象的状态为已迁移还是未迁移,如果待访问的业务对象的状态为未迁移,源物理节点直接响应业务访问请求,向客户端返回业务访问响应;如果待访问的业务对象的状态为已迁移,执行S310。
S310、源物理节点向客户端返回路由变更消息。
具体的,源物理节点在待访问的业务对象已迁移的情况下,向客户端返回路由变更消息,路由变更消息表示待访问的业务对象所在的物理节点发生变更,路由更新消息可携带目标物理节点的标识。
S311、客户端再次向目标物理节点发送业务访问请求。
具体的,客户端接收路由更新消息,根据路由更新消息获得目标物理节点的标识,再次向目标物理节点发送业务访问请求。
S312、客户端接收目标物理节点返回的业务访问响应。
具体的,目标物理节点接收客户端发送的针对待访问的业务对象发送的业务访问请求,由于待访问的业务对象已成功迁移到目标物理节点,目标物理节点执行业务访问请求,向客户端返回业务访问响应,客户端接收目标物理节点返回的业务访问响应。
S313、源物理节点向元数据节点发送迁移完成消息。
具体的,源物理节点确定待迁移的所有业务对象迁移完成,向元数据节点发送迁移完成消息,其中,源物理节点可以对迁移成功的业务对象进行计数,每迁移个业务对象,计数值加1,在计数值等于待迁移的所有业务对象的数量时,确定待迁移的所有业务对象迁移完成。
S314、元数据节点向客户端发送路由切换消息。
具体的,路由切换消息表示虚拟节点所在的物理节点发生更新,路由切换消息中可携带至少一个虚拟节点的标识和目标物理节点的标识,客户端接收路由更新消息,根据路由更新消息将至少一个虚拟节点与目标物理节点进行映射。
S315、元数据节点向源物理节点发送下线通知消息。
具体的,下线通知消息用于通知虚拟节点进行下线,下线通知消息中可携带至少一个虚拟节点的标识,源物理节点接收下线通知消息,可根据消息通知消息删除至少一个虚拟节点。
参见图4c,下面就一个具体的实施例一种虚拟节点的数据迁移方法进行说明:
在初始条件下,分布式数据库系统包括4个物理节点,分别为物理节点1、物理节点2、物理节点3和物理节点4,每个物理节点包括12个虚拟节点,每个虚拟节点部署有1个副本,下面括号中编号为虚拟节点的表换,相同编号的两个虚拟节点互为主本和副本,,也可以称为主节点和备节点(或主分片或备分片)物理节点与虚拟节点的映射关系如下:
物理节点1:(1,2,3,4,5,6),(9,12,14,17,19,22)
物理节点2:(7,8,9,10,11,12),(1,4,15,18,20,23)
物理节点3:(13,14,15,16,17,18),(2,5,7,10,21,24)
物理节点4:(19,20,21,22,23,24),(3,6,8,11,13,16)
随着业务发展,当前的4个物理节点负荷过重,计划扩展一个新的物理节点5。元数据节点的数据均衡子系统计算出需要分别迁移物理节点1.虚拟节点1、物理节点2.虚拟节点7、物理节点3.虚拟节点13、物理节点4.虚拟节点19到物理节点5。依次遍历物理节点1.虚拟节点1、物理节点2.虚拟节点7、物理节点3.虚拟节点13、物理节点4.虚拟节点19。物理节点1~4为源物理节点,物理节点5为目标物理节点。
以物理节点1.虚拟节点1的迁移为例进行说明,虚拟节点1所属的业务对象的获取方法可参照图2的实施例的描述,此处不再赘述。
迁移过程为:遍历物理节点1.虚拟节点1下的全部业务对象:业务对象1、业务对象2、业务对象3、业务对象4和业务对象5,假设迁移的顺序为业务对象1~5逐个进行迁移,暂停物理节点1.虚拟节点1与副本物理节点之间的主从复制;物理节点1对业务对象1进行加锁,迁移物理节点1.虚拟节点1.业务对象1到物理节点5.虚拟节点1,然后清理物理节点1.虚拟节点1.业务对象1;循环处理,依次将业务对象2、业务对象3、业务对象4和业务对象5搬迁到物理节点5.虚拟节点1。
在业务对象的迁移期间,客户端发起对物理节点1.虚拟节点1.业务对象1业务访问请求,物理节点1(源物理节点)判断业务对象1已迁移,则返回给客户端路由更新消息;客户端更新路由更新消息重新向物理节点5.虚拟节点1发起业务访问请求。物理节点2的虚拟节点7、物理节点3的虚拟节点13和物理节点4的虚拟节点19的迁移过程可参照上述的描述,此处不再赘述。图4c中灰色的方块表示已迁移的虚拟节点,在虚拟节点1、7、13和19迁移到物理节点5时,需要在物理节点5上部署副本,部署副本时遵循反亲和性的规则,即主本和副本不能位于相同的物理节点上。
在图3所描述的方法中,源物理节点待迁移的虚拟节点的数据结构信息,根据数据结构信息获取待迁移的业务对象,将所有业务对象迁移到目标物理节点,实现了关系型数据的逻辑迁移。
参见图5,为本发明实施例提供的一种物理节点的结构示意图,本发明实施例的物理节点用于执行图2中的虚拟节点的数据迁移方法,所涉及的术语和过程可参照图图2实施例的描述。物理节点5包括:接收模块501、确定模块502、获取模块503和迁移模块504。
接收模块,用于接收迁移指示消息;
确定模块,用于根据所述迁移指示消息确定目标物理节点和所述源物理节点上待迁移的至少一个虚拟节点;
获取模块,用于获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象;
迁移模块,用于以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点。
可选的,所述数据结构信息包括数据分片表和数据附属表;
所述获取模块用于:
根据所述数据分片表查询所述至少一个虚拟节点所属的一个或多个业务对象,以及根据所述业务对象附属表查询所述多个业务对象中每个业务对象所属的业务表。
可选的,还包括:
第一访问处理模块,用于接收客户端发送业务访问请求;
执行业务访问请求,以及向所述客户端返回业务访问响应;
将所述业务访问请求记录到业务日志中,以及将所述业务日志发送给所述目标物理节点。
可选的,还包括:
事务处理模块,用于在业务对象迁移完成的情况下,向元数据节点发送迁移完成消息;
接收所述元数据节点根据所述迁移完成消息返回的切换指示消息;
接收到所述切换指示消息时,阻塞客户端发起的事务;
在已启动的事务成功执行的情况下,向所述元数据节点返回切换准备消息;其中,所述切换准备消息用于表示所述源物理节点完成路由切换准备。
可选的,所述迁移模块用于:
从所述所有业务对象中选择一个待迁移的业务对象,将所述待迁移的业务对象进行加锁处理;
确认所述待迁移的业务对象成功迁移到所述目标物理节点时,删除所述待迁移的业务对象。
可选的,物理节点还包括:
第二访问处理模块,用于在业务对象的迁移过程中,接收所述客户端发送的针对待访问的业务对象的业务访问请求;
判断所述待访问的业务对象是否已迁移到所述目标物理节点;
若为是,向所述客户端返回路由更新消息;其中,所述路由更新消息用于指示所述客户端更新所述待访问的业务对象所在的物理节点。
可选的,还包括:
通知模块,用于在业务对象迁移完成时,向元数据节点发送迁移完成消息;其中,所述迁移完成消息用于表示所述至少一个虚拟节点所属的所有业务对象迁移完成。
本发明实施例和图2的实施例基于同一构思,其带来的技术效果也相同,具体过程可参照图2的实施例的描述,此处不再赘述。
参见图6,为本发明实施例提供的一种物理节点的结构示意图,在本发明实施例中,物理节点6包括处理器601、存储器602和收发器603。收发器603用于与外部设备之间收发数据。物理节点6中的处理器601的数量可以是一个或多个。本发明的一些实施例中,处理器601、存储器602和收发器603可通过总线系统或其他方式连接。物理节点6可以用于执行图2所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图2对应的实施例。此处不再赘述。
其中,存储器602中存储程序代码。处理器601用于调用存储器602中存储的程序代码,用于执行以下操作:
接收迁移指示消息;
根据所述迁移指示消息确定目标物理节点和所述源物理节点上待迁移的至少一个虚拟节点;
获取所述源物理节点的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象;
以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点。
在一种可能的实施方式中,所述数据结构信息包括数据分片表和数据附属表;
处理器601执行所述根据所述数据结构信息得到所述待迁移的至少一个虚拟节点所属的所有业务对象包括:
根据所述数据分片表查询所述至少一个虚拟节点所属的一个或多个业务对象,以及根据所述业务对象附属表查询所述多个业务对象中每个业务对象所属的业务表。
在一种可能的实施方式中,处理器601还用于执行:
接收客户端发送业务访问请求;
执行业务访问请求,以及向所述客户端返回业务访问响应;
将所述业务访问请求记录到业务日志中,以及将所述业务日志发送给所述目标物理节点。
在一种可能的实施方式中,处理器601还用于执行:
在业务对象迁移完成的情况下,向元数据节点发送迁移完成消息;
所述源物理节点接收所述元数据节点根据所述迁移完成消息返回的切换指示消息;
接收到所述切换指示消息时,所述源物理节点阻塞客户端发起的事务;
在已启动的事务成功执行的情况下,所述源物理节点向所述元数据节点返回切换准备消息;其中,所述切换准备消息用于表示所述源物理节点完成路由切换准备。
在一种可能的实施方式中,处理器601执行所述以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点包括:
从所述所有业务对象中选择一个待迁移的业务对象,将所述待迁移的业务对象进行加锁处理;
确认所述待迁移的业务对象成功迁移到所述目标物理节点时,删除所述待迁移的业务对象。
在一种可能的实施方式中,处理器601还包括:
在业务对象的迁移过程中,接收所述客户端发送的针对待访问的业务对象的业务访问请求;
判断所述待访问的业务对象是否已迁移到所述目标物理节点;
若为是,向所述客户端返回路由更新消息;其中,所述路由更新消息用于指示所述客户端更新所述待访问的业务对象所在的物理节点。
在一种可能的实施方式中,处理器601还用于执行:
在业务对象迁移完成时,向元数据节点发送迁移完成消息;其中,所述迁移完成消息用于表示所述至少一个虚拟节点所属的所有业务对象迁移完成。
参见图7,为本发明实施例提供的一种物理节点的结构示意图,本发明实施例的物理节点用于执行图3中的虚拟节点的数据迁移方法,所涉及的术语和过程可参照图3实施例的描述。物理节点7包括:确定模块701、接收模块702和重建模块703。
确定模块701,用于接收迁移指示消息,以及根据所述迁移指示消息确定源物理节点;
接收模块702,用于接收所述源物理节点发送的业务对象;
重建模块703,用于在确定所述源物理节点的业务对象迁移完成时,获取接收到的业务对象的数据结构信息,根据所述数据结构信息重建虚拟节点。
可选的,物理节点7还包括:
业务恢复模块,用于接收到所述源物理节点发送的业务日志,根据所述业务日志进行业务重演;其中,所述业务日志包括业务访问请求。
可选的,物理节点7还包括:
数据备份模块,用于确定所述源物理节点上的业务日志发送完成的情况下,确定目标副本物理节点,将存储的业务日志和该虚拟节点迁移到所述目标副本物理节点上。
本发明实施例和图3的实施例基于同一构思,其带来的技术效果也相同,具体过程可参照图3的实施例的描述,此处不再赘述。
参见图8,为本发明实施例提供的一种物理节点的结构示意图,在本发明实施例中,物理节点8包括处理器801、存储器802和收发器803。收发器803用于与外部设备之间收发数据。物理节点7中的处理器801的数量可以是一个或多个。本发明的一些实施例中,处理器801、存储器802和收发器803可通过总线系统或其他方式连接。物理节点8可以用于执行图3所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图3对应的实施例。此处不再赘述。
其中,存储器802中存储程序代码。处理器801用于调用存储器802中存储的程序代码,用于执行以下操作:
接收迁移指示消息,以及根据所述迁移指示消息确定源物理节点;
接收所述源物理节点发送的业务对象;
在确定所述源物理节点的业务对象迁移完成时,获取接收到的业务对象的数据结构信息,根据所述数据结构信息重建虚拟节点。
在一种可能的实施方式中,处理器801还用于执行:
所述目标物理节点接收到所述源物理节点发送的业务日志,根据所述业务日志进行业务重演;其中,所述业务日志包括业务访问请求。
在一种可能的实施方式中,处理器801还用于执行:
确定所述源物理节点上的业务日志发送完成的情况下,确定目标副本物理节点,将存储的业务日志和该虚拟节点迁移到所述目标副本物理节点上。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (18)
1.一种虚拟节点的数据迁移方法,其特征在于,包括:
源物理节点接收迁移指示消息;
所述源物理节点根据所述迁移指示消息确定目标物理节点和所述源物理节点上待迁移的至少一个虚拟节点;
获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象,具体包括:获取所述待迁移的至少一个虚拟节点的虚拟节点标识,所述数据结构信息包括数据分片表和数据附属表,所述数据分片表用于存放表示所述虚拟节点与业务对象之间的映射关系的记录,所述业务对象附属表用于存放所述业务对象与业务表之间的映射关系;从元数据节点获取所述数据结构信息中的所述数据分片表,以所述虚拟节点标识检索所述数据分片表得到所述虚拟节点所属的所有业务对象的业务对象标识,并且根据所述业务对象标识检索所述业务对象附属表得到业务表,以及根据业务对象标识在所述业务表中检索得到业务记录并获得所述虚拟节点所属的所有业务对象;
所述源物理节点以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点。
2.如权利要求1所述的方法,其特征在于,还包括:
所述源物理节点接收客户端发送业务访问请求;
所述源物理节点执行业务访问请求,以及向所述客户端返回业务访问响应;
所述源物理节点将所述业务访问请求记录到业务日志中,以及将所述业务日志发送给所述目标物理节点。
3.如权利要求2所述的方法,其特征在于,还包括:
在业务对象迁移完成的情况下,所述源物理节点向元数据节点发送迁移完成消息;
所述源物理节点接收所述元数据节点返回的切换指示消息;
接收到所述切换指示消息时,所述源物理节点阻塞客户端发起的事务;
在已启动的事务成功执行的情况下,所述源物理节点向所述元数据节点返回切换准备消息;其中,所述切换准备消息用于表示所述源物理节点完成路由切换准备。
4.如权利要求1所述的方法,其特征在于,所述源物理节点以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点包括:
所述源物理节点从所述所有业务对象中选择一个待迁移的业务对象,将所述待迁移的业务对象进行加锁处理;
所述源物理节点确认所述待迁移的业务对象成功迁移到所述目标物理节点时,删除所述待迁移的业务对象。
5.如权利要求4所述的方法,其特征在于,还包括:
在业务对象的迁移过程中,所述源物理节点接收客户端发送的针对待访问的业务对象的业务访问请求;
所述源物理节点判断所述待访问的业务对象是否已迁移到所述目标物理节点;
若为是,所述源物理节点向客户端返回路由更新消息;其中,所述路由更新消息用于指示客户端更新所述待访问的业务对象所在的物理节点。
6.如权利要求5所述的方法,其特征在于,还包括:
在业务对象迁移完成时,所述源物理节点向元数据节点发送迁移完成消息;其中,所述迁移完成消息用于表示所述至少一个虚拟节点所属的所有业务对象迁移完成。
7.一种虚拟节点的数据迁移方法,其特征在于,包括:
目标物理节点接收迁移指示消息,以及根据所述迁移指示消息确定源物理节点上待迁移的至少一个虚拟节点,以及获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象,具体包括:获取所述待迁移的至少一个虚拟节点的虚拟节点标识,所述数据结构信息包括数据分片表和数据附属表,所述数据分片表用于存放表示所述虚拟节点与业务对象之间的映射关系的记录,所述业务对象附属表用于存放所述业务对象与业务表之间的映射关系;从元数据节点获取所述数据结构信息中的所述数据分片表,以所述虚拟节点标识检索所述数据分片表得到所述虚拟节点所属的所有业务对象的业务对象标识,并且根据所述业务对象标识检索所述业务对象附属表得到业务表,以及根据业务对象标识在所述业务表中检索得到业务记录并获得所述虚拟节点所属的所有业务对象;
所述目标物理节点接收所述源物理节点发送的业务对象;
在确定所述源物理节点的业务对象迁移完成时,获取接收到的业务对象的数据结构信息,根据所述数据结构信息重建虚拟节点。
8.如权利要求7所述的方法,其特征在于,还包括:
所述目标物理节点接收到所述源物理节点发送的业务日志,根据所述业务日志进行业务重演;其中,所述业务日志包括业务访问请求。
9.如权利要求8所述的方法,其特征在于,还包括:
所述目标物理节点确定所述源物理节点上的业务日志发送完成的情况下,确定目标副本物理节点,将存储的业务日志和该虚拟节点迁移到所述目标副本物理节点上。
10.一种物理节点,其特征在于,所述物理节点为源物理节点,所述源物理节点包括:
接收模块,用于接收迁移指示消息;
确定模块,用于根据所述迁移指示消息确定目标物理节点和所述源物理节点上待迁移的至少一个虚拟节点;
获取模块,用于获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象,具体包括:获取所述待迁移的至少一个虚拟节点的虚拟节点标识,所述数据结构信息包括数据分片表和数据附属表,所述数据分片表用于存放表示所述虚拟节点与业务对象之间的映射关系的记录,所述业务对象附属表用于存放所述业务对象与业务表之间的映射关系;从元数据节点获取所述数据结构信息中的所述数据分片表,以所述虚拟节点标识检索所述数据分片表得到所述虚拟节点所属的所有业务对象的业务对象标识,并且根据所述业务对象标识检索所述业务对象附属表得到业务表,以及根据业务对象标识在所述业务表中检索得到业务记录并获得所述虚拟节点所属的所有业务对象;
迁移模块,用于以业务对象为粒度将所述所有业务对象迁移到所述目标物理节点。
11.如权利要求10所述的物理节点,其特征在于,还包括:
第一访问处理模块,用于接收客户端发送业务访问请求;
执行业务访问请求,以及向所述客户端返回业务访问响应;
将所述业务访问请求记录到业务日志中,以及将所述业务日志发送给所述目标物理节点。
12.如权利要求11所述的物理节点,其特征在于,还包括:
事务处理模块,用于在业务对象迁移完成的情况下,向元数据节点发送迁移完成消息;
接收所述元数据节点根据所述迁移完成消息返回的切换指示消息;
接收到所述切换指示消息时,阻塞客户端发起的事务;
在已启动的事务成功执行的情况下,向所述元数据节点返回切换准备消息;其中,所述切换准备消息用于表示所述源物理节点完成路由切换准备。
13.如权利要求10所述的物理节点,其特征在于,所述迁移模块用于:
从所述所有业务对象中选择一个待迁移的业务对象,将所述待迁移的业务对象进行加锁处理;
确认所述待迁移的业务对象成功迁移到所述目标物理节点时,删除所述待迁移的业务对象。
14.如权利要求13所述的物理节点,其特征在于,还包括:
第二访问处理模块,用于在业务对象的迁移过程中,接收客户端发送的针对待访问的业务对象的业务访问请求;
判断所述待访问的业务对象是否已迁移到所述目标物理节点;
若为是,向客户端返回路由更新消息;其中,所述路由更新消息用于指示客户端更新所述待访问的业务对象所在的物理节点。
15.如权利要求14所述的物理节点,其特征在于,还包括:
通知模块,用于在业务对象迁移完成时,向元数据节点发送迁移完成消息;其中,所述迁移完成消息用于表示所述至少一个虚拟节点所属的所有业务对象迁移完成。
16.一种物理节点,其特征在于,所述物理节点为目标物理节点,所述目标物理节点包括:
确定模块,用于接收迁移指示消息,以及根据所述迁移指示消息确定源物理节点上待迁移的至少一个虚拟节点,以及获取所述源物理节点自身的数据结构信息,以及根据所述数据结构信息得到所述至少一个虚拟节点所属的所有业务对象,具体包括:获取所述待迁移的至少一个虚拟节点的虚拟节点标识,所述数据结构信息包括数据分片表和数据附属表,所述数据分片表用于存放表示所述虚拟节点与业务对象之间的映射关系的记录,所述业务对象附属表用于存放所述业务对象与业务表之间的映射关系;从元数据节点获取所述数据结构信息中的所述数据分片表,以所述虚拟节点标识检索所述数据分片表得到所述虚拟节点所属的所有业务对象的业务对象标识,并且根据所述业务对象标识检索所述业务对象附属表得到业务表,以及根据业务对象标识在所述业务表中检索得到业务记录并获得所述虚拟节点所属的所有业务对象;
接收模块,用于接收所述源物理节点发送的业务对象;
重建模块,用于在确定所述源物理节点的业务对象迁移完成时,获取接收到的业务对象的数据结构信息,根据所述数据结构信息重建虚拟节点。
17.如权利要求16所述的物理节点,其特征在于,还包括:
业务恢复模块,用于接收到所述源物理节点发送的业务日志,根据所述业务日志进行业务重演;其中,所述业务日志包括业务访问请求。
18.如权利要求17所述的物理节点,其特征在于,还包括:
数据备份模块,用于确定所述源物理节点上的业务日志发送完成的情况下,确定目标副本物理节点,将存储的业务日志和该虚拟节点迁移到所述目标副本物理节点上。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610877920.0A CN107885758B (zh) | 2016-09-30 | 2016-09-30 | 一种虚拟节点的数据迁移方法和虚拟节点 |
PCT/CN2017/090613 WO2018059032A1 (zh) | 2016-09-30 | 2017-06-28 | 一种虚拟节点的数据迁移方法和虚拟节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610877920.0A CN107885758B (zh) | 2016-09-30 | 2016-09-30 | 一种虚拟节点的数据迁移方法和虚拟节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107885758A CN107885758A (zh) | 2018-04-06 |
CN107885758B true CN107885758B (zh) | 2021-11-19 |
Family
ID=61763120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610877920.0A Active CN107885758B (zh) | 2016-09-30 | 2016-09-30 | 一种虚拟节点的数据迁移方法和虚拟节点 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107885758B (zh) |
WO (1) | WO2018059032A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110445822B (zh) * | 2018-05-03 | 2021-11-30 | 中移(苏州)软件技术有限公司 | 一种对象存储方法及装置 |
CN110471756A (zh) * | 2018-05-09 | 2019-11-19 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN109086292B (zh) * | 2018-06-11 | 2023-11-28 | 平安科技(深圳)有限公司 | 一种数据库的切换方法及系统 |
CN110069220B (zh) * | 2019-04-25 | 2022-02-22 | 深信服科技股份有限公司 | 分布式调度方法、装置、设备及计算机可读存储介质 |
CN110321225B (zh) * | 2019-07-08 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 负载均衡方法、元数据服务器及计算机可读存储介质 |
CN110569225A (zh) * | 2019-08-26 | 2019-12-13 | 网宿科技股份有限公司 | 一种数据存储方法及系统 |
CN110990483B (zh) * | 2019-11-26 | 2023-05-30 | 上海莉莉丝科技股份有限公司 | 分布式缓存中的缓存节点的数据访问和控制方法及系统 |
CN111143324B (zh) * | 2019-12-20 | 2023-05-02 | 浪潮软件股份有限公司 | 一种kudu的基于大小的数据库数据均衡系统及实现方法 |
CN111245924A (zh) * | 2020-01-08 | 2020-06-05 | 北京松果电子有限公司 | 负载均衡方法及装置、计算机存储介质 |
CN111723148B (zh) * | 2020-04-10 | 2024-01-26 | 浙江大华技术股份有限公司 | 数据存储方法及装置、存储介质、电子装置 |
CN111625364B (zh) * | 2020-05-30 | 2023-05-16 | 抖音视界有限公司 | 任务分配方法、装置、电子设备及计算机可读介质 |
CN113760858B (zh) * | 2020-06-05 | 2024-03-19 | 中国移动通信集团湖北有限公司 | 内存库数据动态迁移方法、装置、计算设备及存储设备 |
CN111737197A (zh) * | 2020-06-30 | 2020-10-02 | 上海英方软件股份有限公司 | 一种实现不停机迁移业务系统的系统及方法 |
CN112732423B (zh) * | 2020-12-30 | 2023-01-20 | 平安科技(深圳)有限公司 | 流程迁移方法、装置、设备及介质 |
CN113010496B (zh) * | 2021-03-19 | 2024-03-08 | 腾讯云计算(北京)有限责任公司 | 一种数据迁移方法、装置、设备和存储介质 |
CN113157668B (zh) * | 2021-04-23 | 2022-06-10 | 上海数禾信息科技有限公司 | 不停机数据迁移方法及装置 |
CN115065630B (zh) * | 2022-05-10 | 2024-04-09 | 深信服科技股份有限公司 | 虚拟路由器的迁移方法、装置、电子设备及存储介质 |
CN115718571B (zh) * | 2022-11-23 | 2023-08-22 | 深圳计算科学研究院 | 一种基于多维度特征的数据管理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073462A (zh) * | 2010-11-29 | 2011-05-25 | 华为技术有限公司 | 虚拟存储迁移方法、系统和虚拟机监控器 |
CN103684960A (zh) * | 2012-08-29 | 2014-03-26 | 株式会社日立制作所 | 网络系统以及虚拟节点的迁移方法 |
CN105335214A (zh) * | 2015-11-12 | 2016-02-17 | 国云科技股份有限公司 | 一种虚拟机故障检测和恢复的方法 |
CN105653630A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | 分布式数据库的数据迁移方法与装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8429651B2 (en) * | 2010-01-20 | 2013-04-23 | International Business Machines Corporation | Enablement and acceleration of live and near-live migration of virtual machines and their associated storage across networks |
WO2011116715A2 (zh) * | 2011-04-28 | 2011-09-29 | 华为技术有限公司 | 一种虚拟网络迁移方法、相关装置以及系统 |
CN102185774A (zh) * | 2011-05-10 | 2011-09-14 | 中兴通讯股份有限公司 | 虚拟机无缝迁移的方法、管理器及系统 |
-
2016
- 2016-09-30 CN CN201610877920.0A patent/CN107885758B/zh active Active
-
2017
- 2017-06-28 WO PCT/CN2017/090613 patent/WO2018059032A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073462A (zh) * | 2010-11-29 | 2011-05-25 | 华为技术有限公司 | 虚拟存储迁移方法、系统和虚拟机监控器 |
CN103684960A (zh) * | 2012-08-29 | 2014-03-26 | 株式会社日立制作所 | 网络系统以及虚拟节点的迁移方法 |
CN105335214A (zh) * | 2015-11-12 | 2016-02-17 | 国云科技股份有限公司 | 一种虚拟机故障检测和恢复的方法 |
CN105653630A (zh) * | 2015-12-25 | 2016-06-08 | 北京奇虎科技有限公司 | 分布式数据库的数据迁移方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107885758A (zh) | 2018-04-06 |
WO2018059032A1 (zh) | 2018-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107885758B (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
US11520670B2 (en) | Method and apparatus for restoring data from snapshots | |
EP2784675B1 (en) | Method, device and system for data reconstruction | |
JP6044539B2 (ja) | 分散ストレージシステムおよび方法 | |
EP2498476B1 (en) | Massively scalable object storage system | |
EP2062125B1 (en) | System and method for providing high availability data | |
US8396936B2 (en) | Computer system with cooperative cache | |
US9747168B2 (en) | Data block based backup | |
JP5722962B2 (ja) | ストレージ性能の最適化 | |
KR101662212B1 (ko) | 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법 | |
US10089187B1 (en) | Scalable cloud backup | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US8930364B1 (en) | Intelligent data integration | |
CN107018185B (zh) | 云存储系统的同步方法和装置 | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
US9075722B2 (en) | Clustered and highly-available wide-area write-through file system cache | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
Liu et al. | Cfs: A distributed file system for large scale container platforms | |
JP7038864B2 (ja) | 検索サーバの集中型ストレージ | |
CN109726211B (zh) | 一种分布式时序数据库 | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
WO2017156855A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
US20190057028A1 (en) | Conflict Resolution and Garbage Collection in Distributed Databases |
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 |