CN109144972B - 一种数据迁移的方法以及数据节点 - Google Patents
一种数据迁移的方法以及数据节点 Download PDFInfo
- Publication number
- CN109144972B CN109144972B CN201710495228.6A CN201710495228A CN109144972B CN 109144972 B CN109144972 B CN 109144972B CN 201710495228 A CN201710495228 A CN 201710495228A CN 109144972 B CN109144972 B CN 109144972B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- data node
- target
- operation request
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据迁移的方法,用于无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,降低时延。本申请实施例方法包括:第二数据节点接收第一数据节点发送的关于目标数据的数据迁移请求,数据迁移请求包含目标数据在第一数据节点中的内存地址;根据数据迁移请求建立RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据;向管理节点发送修改元数据的指令,修改元数据的指令用于管理节点修改元数据,以使得访问目标数据的目标操作请求路由到第二数据节点;接收并存储第一数据节点发送的目标数据。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据迁移的方法、第一数据节点以及第二数据节点。
背景技术
随着数据库技术的不断发展,用户对于数据库的扩展能力,容灾能力的要求不断提升,分布式数据库已经越来越受到用户的欢迎。
在现有的负载均衡中,要将第一数据节点上的一些数据(可称为目标数据或者迁移数据)迁移到第二数据节点上。在数据迁移发生前,服务器对第一数据节点有一些访问流(如读/写请求);在数据迁移过程中,服务器对目标数据的访问仍然集中在第一数据节点上;在数据迁移结束后,服务器对目标数据的访问会切换到第二数据节点上。
但是,关于目标数据的负载需要等到数据复制完以后,即数据都复制到第二数据节点上,才能将目标数据的负载切换到第二数据节点,负载迁移速度较慢;目标数据需要先复制到内核缓冲区,再发送到网络上向第二数据节点传输,对CPU资源消耗很大,会影响第一数据节点处理其他负载的性能,且目标数据传输速度较慢,时延较大。
发明内容
本申请实施例提供了一种数据迁移的方法以及数据节点,用于无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,提升负载迁移的速度,降低时延。
本申请实施例第一方面提供一种数据迁移的方法,可以包括:在负载均衡的方案中,第二数据节点接收第一数据节点发送的关于目标数据的数据迁移请求,该数据迁移请求包含该目标数据在该第一数据节点中的内存地址;应理解,目标数据可以是第一数据节点上的热点数据,热点数据可以为经常访问或者访问次数超过特定阈值的数据。该第二数据节点根据该数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,该RDMA虚拟内存空间的内存地址映射到该第一数据节点的内存地址,该RDMA虚拟内存空间用于该第二数据节点根据目标操作请求通过RDMA访问该第一数据节点上的目标数据;该第二数据节点向管理节点发送修改元数据的指令,该修改元数据的指令用于该管理节点修改该元数据,以使得访问该目标数据的目标操作请求路由到该第二数据节点;这里的目标操作请求可以是对目标数据的负载或者访问。元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。该第二数据节点接收并存储该第一数据节点发送的该目标数据。
在本申请实施例中,管理节点可以收集集群信息,该集群信息可以包括每个数据节点以及数据节点上每个store的容量和负载信息等。管理节点根据收集的集群信息可以触发负载均衡,第一数据节点接收管理节点发送的触发负载均衡的指令,向第二数据节点发送关于目标数据的数据迁移请求,或者,第一数据节点向管理节点发送负载大于第一阈值的指令,第二数据节点向管理节点发送负载小于第二阈值的指令,管理节点可以确认负载大于第一阈值的第一数据节点为源数据节点,确认负载小于第二阈值的第二数据节点为目标数据节点,管理节点可以向第一数据节点发送触发负载均衡的指令,第一数据节点向第二数据节点发送关于目标数据的迁移请求。第二数据节点根据关于目标数据的数据迁移请求,建立RDMA虚拟内存空间,RDMA的虚拟内存空间的内存地址映射到该第一数据节点的内存地址,所以,在第二数据节点上可以直接对第一数据节点的目标数据进行访问,不需要等到目标数据在第二数据节点上复制完成再迁移目标操作请求。第二数据节点再向管理节点发送元数据的修改指令,可以使得访问该目标数据的目标操作请求路由到该第二数据节点;第二数据节点接收目标操作请求后,可以通过RDMA访问第一数据节点上的目标数据。进一步的,第二数据节点接收第一数据节点发送的目标数据。利用RDMA虚拟内存映射技术,将待迁移数据映射到第二数据节点的虚拟内存空间中,并将使用权和负载全部切换到第二数据节点,从而无需等待数据复制完成就可以迁移负载,提升负载迁移的速度。
结合本申请实施例的第一方面,在本申请实施例的第一方面的第一种实现方式中,所述第二数据节点接收并存储所述第一数据节点发送的所述目标数据,可以包括:该第二数据节点通过RDMA接收并存储所述第一数据节点发送的该目标数据。在本申请实施例中,将RDMA技术用于分布式数据库集群实时数据迁移的过程,减少了数据迁移对第一数据节点上CPU资源的消耗,减小了迁移过程对第一数据节点正在运行的其它业务的影响,并提升了数据传输的速度。
结合本申请实施例的第一方面、第一方面的第一种实现方式,在本申请实施例的第一方面的第二种实现方式中,该目标数据为该第一数据节点中将热点数据分为M份数据中的其中一份数据,M为大于等于2的整数。在本申请实施例中,第二数据节点接收第一数据节点通过RDMA发送的目标数据,可以是第一数据节点将热点数据分为M份,以M份中的其中一份进行传输,这样,就可以减少在第一数据节点向第二数据节点发送数据的大小,缩短了目标数据不可用的时间和数据量,提升了服务质量。
结合本申请实施例的第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式,在本申请实施例的第一方面的第三种实现方式中,+该方法还可以包括:第二数据节点向管理节点发送元数据的修改指令后,原先关于目标数据的目标操作请求(如负载或访问)会路由到第二数据节点上,当该第二数据节点接收该目标操作请求时,若该目标操作请求访问的该目标数据未保存在该第二数据节点上,应理解,在第二数据节点建立RDMA虚拟内存空间后,第二数据节点可以通过RDMA访问第一数据节点的目标数据的过程中,第一数据节点也可以将目标数据向第二数据节点发送,或者,可以通过RDMA方式将目标数据向第二数据节点发送。则该第二数据节点根据该目标操作请求通过RDMA访问该第一数据节点上的该目标数据;若该目标操作请求访问的该目标数据已保存在该第二数据节点上,则该第二数据节点根据该目标操作请求在已保存的该目标数据上进行访问。在本申请实施例中,若目标操作请求访问的目标数据未保存在第二数据节点上,则可以通过RDMA访问第一数据节点上的内存数据。若目标操作请求访问的目标数据保存在第二数据节点上,则可以在第二数据节点上直接访问,不需要再通过RDMA访问第一数据节点,不然,还需要第二数据节点向第一数据节点发送目标数据,浪费资源,增大访问时延。
结合本申请实施例的第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式,在本申请实施例第一方面的第四种实现方式中,该方法还可以包括:若该目标操作请求为写操作请求,且所述写操作请求指示增加新数据,则该第二数据节点根据该写操作请求在该第二数据节点上进行写操作。因为如果是写操作请求的话,是写入目标数据,则不管第二数据界节点上是否有保存第一数据节点发送的目标数据,第二数据节点都可以根据写操作请求在第二数据节点上进行写操作,减少传输流程,降低时延。
结合本申请实施例的第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式,在本申请实施例第一方面的第五种实现方式中,该方法还可以包括:若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且该目标操作请求访问的该目标数据已保存在该第二数据节点上,则该第二数据节点根据该目标操作请求在该第二数据节点上进行访问;若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且该目标操作请求访问的该目标数据未保存在该第二数据节点上,则该第二数据节点根据该目标操作请求通过RDMA访问该第一数据节点上的该目标数据。不管是读操作请求或者写操作请求,第二数据节点上如果已保存有第一数据节点发送的目标数据,则第二数据节点可以直接访问该目标数据;如果第二数据节点上未保存有第一数据节点发送的目标数据,第二数据节点可以通过RDMA访问第一数据节点的目标数据。提供了具体的实现方式,增加了方案的可行性。
本申请实施例第二方面提供一种数据迁移的方法,可以包括:在负载均衡的方案中,第一数据节点向第二数据节点发送关于目标数据的迁移请求。该数据迁移请求包含该目标数据在该第一数据节点中的内存地址,该数据迁移请求用于该第二数据节点建立远程直接内存访问RDMA虚拟内存空间,该RDMA虚拟内存空间的内存地址映射到该第一数据节点的内存地址,该RDMA虚拟内存空间用于该第二数据节点根据目标操作请求通过RDMA访问该第一数据节点上的该目标数据,该目标操作请求为管理节点路由到该第二数据节点上访问该目标数据的操作请求;应理解,目标数据可以是第一数据节点上的热点数据,热点数据为经常访问或者访问次数超过特定阈值的数据。这里的目标操作请求可以是对目标数据的负载或者访问。元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。该第一数据节点向该第二数据节点发送该目标数据。
在本申请实施例中,管理节点可以收集集群信息,该集群信息可以包括每个数据节点以及数据节点上每个store的容量和负载信息等。管理节点根据收集的集群信息可以触发负载均衡,第一数据节点接收管理节点发送的触发负载均衡的指令,向第二数据节点发送关于目标数据的数据迁移请求,或者,第一数据节点向管理节点发送负载大于第一阈值的指令,第二数据节点向管理节点发送负载小于第二阈值的指令,管理节点可以确认负载大于第一阈值的第一数据节点为源数据节点,确认负载小于第二阈值的第二数据节点为目标数据节点,管理节点可以向第一数据节点发送触发负载均衡的指令,第一数据节点向第二数据节点发送关于目标数据的数据迁移请求,该数据迁移请求用于该第二数据节点建立RDMA虚拟内存空间,该RDMA虚拟内存空间的内存地址映射到该第一数据节点的内存地址,所以,在第二数据节点上可以直接对第一数据节点的目标数据进行访问,不需要等到目标数据在第二数据节点上复制完成再迁移目标操作请求。第一数据节点向第二数据节点发送目标数据。利用RDMA虚拟内存映射技术,将待迁移数据映射到第二数据节点的虚拟内存空间中,并将使用权和负载全部切换到第二数据节点,从而无需等待数据复制完成就可以迁移负载,提升负载迁移的速度。
结合本申请实施例的第二方面,在本申请实施例的第二方面的第一种实现方式中,该第一数据节点向所述第二数据节点发送该目标数据,可以包括:该第一数据节点通过RDMA向该第二数据节点发送该目标数据。将RDMA技术用于分布式数据库集群实时数据迁移的过程,减少了数据迁移对第一数据节点上CPU资源的消耗,减小了迁移过程对第一数据节点正在运行的其它业务的影响,并提升了数据传输的速度。
结合本申请实施例的第二方面、第二方面的第一种实现方式,在本申请实施例第二方面的第二种实现方式中,该第一数据节点向该第二数据节点发送目标数据,可以包括:该第一数据节点确定热点数据;应理解,关于第一数据节点中热点数据,可以是第一数据节点确定,也可以是管理节点向第一数据节点发送关于热点数据的信息,第一数据节点根据热点数据的信息确定热点数据。该第一数据节点将该热点数据分为M份数据,M为大于等于2的整数;该第一数据节点从该M份数据中选择该目标数据;该第一数据节点向第二数据节点发送该目标数据,或者,可以通过RDMA向该第二数据节点发送该目标数据。在本申请实施例中,第一数据节点可以将热点数据分为M份,以M份中的其中一份进行传输,这样,就可以减少在第一数据节点向第二数据节点发送数据的大小,缩短了目标数据不可用的时间和数据量,提升了服务质量。
结合本申请实施例的第二方面的第二种实现方式,在本申请实施例第二方面的第三种实现方式中,该第一数据节点确定热点数据之前,该方法还可以包括:该第一数据节点接收管理节点发送的热点数据信息;该第一数据节点确定热点数据,可以包括:该第一数据节点根据该热点数据信息确定该热点数据。在本申请实施例中,提供了一种确定热点数据的方式,增加了方案的可行性。
本申请实施例第三方面提供一种数据迁移的方法,可以包括:管理节点确定数据迁移的第一数据节点和第二数据节点;即管理节点可以收集集群信息,该集群信息可以包括每个数据节点以及数据节点上每个store的容量和负载信息等。管理节点根据收集的集群信息可以触发负载均衡,第一数据节点接收管理节点发送的触发负载均衡的指令,向第二数据节点发送关于目标数据的数据迁移请求,或者,第一数据节点向管理节点发送负载大于第一阈值的指令,第二数据节点向管理节点发送负载小于第二阈值的指令,管理节点可以确认负载大于第一阈值的第一数据节点为源数据节点,确认负载小于第二阈值的第二数据节点为目标数据节点,管理节点可以向第一数据节点发送触发负载均衡的指令,第一数据节点向第二数据节点发送关于目标数据的迁移请求。该管理节点接收第二数据节点发送的修改元数据的指令;该管理节点根据该修改元数据的指令修改该元数据,使得访问该第一数据节点上目标数据的目标操作请求路由到该第二数据节点上。
在本申请实施例中,管理节点可以确定迁移目标数据的第一数据节点和第二数据节点,管理节点接收第二数据节点发送的修改元数据的指令;该管理节点根据该修改元数据的指令修改该元数据,使得访问该第一数据节点上目标数据的目标操作请求路由到该第二数据节点上。第二数据节点就可以通过RDMA访问第一数据节点上的目标数据了,不需要等到第一数据节点上的目标数据复制到第二数据节点上,才能将目标操作请求切换到第二数据节点。
结合本申请实施例的第三方面,在本申请实施例第三方面的第一种可能的实现方式中,该管理节点确定数据迁移的第一数据节点和第二数据节点,可以包括:若该管理节点检测到有新数据节点加入数据库集群,则该管理节点从该数据库集群中选择一个负载最大的数据节点作为该第一数据节点,将该新数据节点作为该第二数据节点。提供了怎么确定数据迁移的第一数据节点和第二数据节点的一种实现方式,增加了方案的可行性。
结合本申请实施例的第三方面,在本申请实施例第三方面的第二种可能的实现方式中,该管理节点确定数据迁移的第一数据节点和第二数据节点,可以包括:若该管理节点未检测到有新数据节点加入数据库集群,则该管理节点从该数据库集群中选择一个负载最大的数据节点作为该第一数据节点,选择一个负载最小的数据节点作为该第二数据节点。提供了怎么确定数据迁移的第一数据节点和第二数据节点的另一种实现方式,增加了方案的可行性。
本申请实施例第四方面提供一种数据节点,具有无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,提升负载迁移的速度,降低时延的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
本申请实施例第五方面提供一种数据节点,具有无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,提升负载迁移的速度,降低时延的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
本申请实施例第六方面提供一种管理节点,具有无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,提升负载迁移的速度,降低时延的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
本申请实施例第七方面提供一种数据节点,可以包括:
收发器,处理器,存储器和总线,该收发器、该处理器和该存储器通过该总线连接;
该存储器,用于存储操作指令;
该收发器,用于接收第一数据节点发送的关于目标数据的数据迁移请求,该数据迁移请求包含该目标数据在该第一数据节点中的内存地址;向管理节点发送修改元数据的指令,该修改元数据的指令用于该管理节点修改该元数据,以使得访问该目标数据的目标操作请求路由到该第二数据节点;并存储该第一数据节点发送的该目标数据;
该处理器,用于根据该数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,该RDMA虚拟内存空间的内存地址映射到该第一数据节点的内存地址,该RDMA虚拟内存空间用于该第二数据节点根据目标操作请求通过RDMA访问该第一数据节点上的目标数据。
本申请实施例第八方面提供一种数据节点,可以包括:
收发器,存储器和总线,该收发器和该存储器通过该总线连接;
该存储器,用于存储操作指令;
该收发器,用于向第二数据节点发送关于目标数据的数据迁移请求,该数据迁移请求包含该目标数据在该第一数据节点中的内存地址,该数据迁移请求用于该第二数据节点建立远程直接内存访问RDMA虚拟内存空间,该RDMA虚拟内存空间的内存地址映射到该第一数据节点的内存地址,该RDMA虚拟内存空间用于该第二数据节点根据目标操作请求通过RDMA访问该第一数据节点上的该目标数据,该目标操作请求为管理节点路由到该第二数据节点上访问该目标数据的操作请求;向该第二数据节点发送该目标数据。
本申请实施例第九方面提供一种管理节点,可以包括:
收发器,处理器,存储器和总线,该收发器、该处理器和该存储器通过该总线连接;
该存储器,用于存储操作指令;
该处理器,用于确定数据迁移的第一数据节点和第二数据节点;根据该修改元数据的指令修改该元数据,使得访问该第一数据节点上目标数据的目标操作请求路由到该第二数据节点上;
该收发器,用于接收第二数据节点发送的修改元数据的指令。
本申请实施例第十方面提供一种分布式数据库系统,该分布式数据库系统包括第一数据节点和第二数据节点,该第一数据节点为执行本申请第一方面或第一方面任一可选实现方式中所述的第一数据节点;该第二数据节点为执行本申请第二方面或第二方面任一可选实现方式中所述的第二数据节点。
本发明实施例第十一方面提供一种存储介质,需要说明的是,本发的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产口的形式体现出来,该计算机软件产品存储在一个存储介质中,用于储存为上述设备所用的计算机软件指令,其包含用于执行上述第一方面、第二方面、第三方面为数据节点或者管理节点所设计的程序。
该存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例第十二方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如本申请第一方面或第一方面任一可选实现方式,或者,本申请第二方面或第二方面任一可选实现方式,或者,本申请第三方面或第三方面任一可选实现方式中所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
在本申请实施例中,第二数据节点根据第一数据节点发送的关于目标数据的数据迁移请求,建立RDMA虚拟内存空间,第二数据节点向管理节点发送修改元数据的指令,管理节点可以根据修改元数据的指令修改元数据,以使得访问所述目标数据的目标操作请求路由到所述第二数据节点;从而,不需要等到目标数据在第二数据节点上复制完成再迁移目标操作请求,降低时延;第一数据节点将目标数据向第二数据节点发送。利用RDMA虚拟内存技术,将目标数据映射到第二数据节点的RDMA虚拟内存空间中,并将使用权和负载全部切换到第二数据节点,从而无需等待目标数据复制完成就可以迁移负载,提升了负载迁移的速度;进一步的,可以将RDMA技术用于分布式数据库集群实时数据迁移的过程,减少了数据迁移对第一数据节点上CPU资源的消耗,减小了迁移过程对第一数据节点正在运行的其它业务的影响,并提升了数据传输的速度。将目标数据分小块迁移,从而缩短了目标数据不可用的时间和数据量,提升了服务质量。节约了时间,降低了时延。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,还可以根据这些附图获得其它的附图。
图1为现有技术所应用的一个场景示意图;
图2为现有技术中负载迁移的一个示意图;
图3为现有技术所应用的一个系统架构图;
图4为现有技术中数据迁移的一个流程示意图;
图5为本申请实施例所应用的一个分布式集群总体架构图;
图6为本申请实施例中数据迁移的方法的一个实施例示意图;
图7为本申请实施例中触发负载均衡的流程示意图;
图8为本申请实施例中负载迁移的一个示意图;
图9为本申请实施例中数据块分片传输的一个示意图;
图10为本申请实施例中分片传输算法的一个流程示意图;
图11为本申请实施例中数据节点的一个实施例示意图;
图12A为本申请实施例中数据节点的另一个实施例示意图;
图12B为本申请实施例中数据节点的另一个实施例示意图;
图13为本申请实施例中数据节点的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种数据迁移的方法以及数据节点,用于无需等待目标数据从第一数据节点向第二数据节点迁移完成就可以迁移负载,提升了负载迁移的速度,降低时延。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,都应当属于本申请保护的范围。
随着数据库技术的不断发展,用户对于数据库的扩展能力,容灾能力的要求不断提升,分布式数据库已经越来越受到用户的欢迎。分布式数据库相对于传统数据库的一个很重要的优点就在于,可以把高负载数据节点上的数据迁移到低负载数据节点上;或者把老数据节点上的数据迁移到新加入数据节点上,从而实现备份和负载均衡。而这也必然会造成很大的网络开销和性能损失,服务器间实时数据迁移已经成为分布式数据库最大的瓶颈之一。
因此,分布式数据库采用了远程直接内存访问(Remote Direct Memory Access,RDMA)技术让网卡直接读取应用层数据,绕过了传统传输控制协议(Transmission ControlProtocol,TCP)/互联网协议(Internet Protocol,IP)的处理过程,从而大大提升了网络传输的速度,减小了数据迁移对中央处理器(Central Processing Unit,CPU)资源的消耗,从而为解决数据迁移瓶颈,带来了新的思路。
其中,RDMA是指一台计算机可以访问另一台远程计算机的内存数据,可以像读/写本机内存一样读/写远程计算机的内存数据。其实现主要是通过RDMA零拷贝网络技术,RDMA零拷贝网络技术使网络适配器(Network Interface Card,NIC)可以直接与应用内存相互传输数据,从而消除了在应用内存与内核内存之间复制数据的需要,大大节省了CPU资源,提升了数据传输的速度。
如图1所示,为现有技术所应用的一个场景示意图,在终端(包括手机、个人计算机(personal computer,PC)和平板等)上安装有邮件系统的客户端,简称邮件客户端;终端上的邮件客户端通过网络,与邮件系统的服务器相连;服务器会向底层的数据节点发送读/写请求。为了实现负载均衡,第一数据节点上的目标数据会向第二数据节点上迁移。在数据迁移发生前,服务器对第一数据节点有一些访问流(如读/写请求);在数据迁移过程中,服务器对目标数据的访问仍然集中在第一数据节点上;在数据迁移结束后,服务器对目标数据的访问会切换到第二数据节点上。
如图2所示,为现有技术中负载迁移的一个示意图。在数据迁移开始时,首先在第一数据节点的操作日志(Log)中,标记数据迁移开始时的位置,然后在第一数据节点检索需要迁移的数据项,简称为目标数据或者迁移数据,检索完成以后,将检索到需要迁移的数据项通过网络全部复制到第二数据节点上;复制完成以后,把操作日志中从标记位置开始的对目标数据的操作请求,全部更新到第二数据节点上;最后,把所有对目标数据的访问和负载,全部切换到第二数据节点上;至此,数据迁移过程结束。
但是,目标数据的负载需要等到在第二数据节点上的数据复制完以后,才能切换到第二数据节点,而且负载迁移速度较慢;目标数据需要先复制到内核缓冲区,再发送到网络上,对第一数据节点的CPU资源消耗很大,会影响第一数据节点处理其他负载的性能,且数据传输速度较慢,时延较大。
如图3所示,为现有技术所应用的一个系统架构图。其中各组件功能列举如下:
虚拟机(Virtual Machine,VM):虚拟机实例;
虚拟机监视器(Hypervisor):将硬件层设备抽象为虚拟设备,提供给虚拟机实例;
主机迁移代理(Host Migration Agent):监视有没有内存被修改,将被修改内存块加入RDMA队列,然后异步的从RDMA队列中选取合适的内存块并初始化选中内存块的RDMA传输过程;
RDMA通信管理(RDMA communication manager,RDMA CM):负责将待传输的内存块注册到RDMA网络适配器;
RDMA网络适配器(RDMA Network Interface Card,RNIC):具有RDMA功能的网卡。
即第一数据节点上的主机迁移代理会实时监控内存情况,一旦发现有内存块被修改,就立刻将该内存块加入一个队列中。同时,主机迁移代理还会异步的,从队列中选出一个内存块,注册到RDMA网卡上,并通过RDMA方式传输到第二数据节点。其中,从队列选出内存块要遵循一定的规则:第一,被选中的内存块和已经在传输的内存块的大小不能超过一个阈值;第二,在负荷第一条规则的内存块中,可以选中最早/晚被修改,或者修改最频繁的内存块。
如图4所示,为现有技术中数据迁移的一个流程示意图,每个被修改的内存块都要经过以下几种状态的变更过程。在第一数据节点上,内存块被修改后,首先处于入队;选中以后会被锁定;然后注册到RDMA网卡;之后经RDMA方式传输到第二数据节点;传输完成后,将该内存块从RDMA网卡注销;最后解除对该内存块的锁定。这里是以数据块为单位进行数据迁移的,那么迁移时在选中的内存块上可能会有大量数据长时间处于锁定不可用状态,从而影响服务质量。
如图5所示,为本申请实施例所应用的一个分布式集群总体架构图。在本申请实施例中,利用RDMA虚拟内存映射技术,将第一数据节点的迁移数据映射到第二数据节点的RDMA虚拟内存空间中,并将使用权和负载全部切换到第二数据节点,从而无需等待数据复制完成就可以迁移负载,提升负载迁移的速度,降低时延;将RDMA技术用于分布式数据库集群实时数据迁移的过程,还可以减少数据传输对第一数据节点CPU资源的消耗,减小迁移过程对正在运行的其它业务的影响,并提升了数据传输的速度;进一步的,第一数据节点将数据块再分块迁移,可以缩短目标数据不可用的时间和数据量,提升服务质量。
图5中上部是数据库集群的物理结构,下部是数据的逻辑结构。从图5中上可以看到,集群中共有5个数据节点(泛指5台机器,并不限于5台),每个数据节点上有3个存储store(也不限于3个)。从图5中下部可以看到,每个store上,存放了多个段落range(range表示将数据库存储的所有数据,划分成多个段落,每个段落称为一个range,例如,按照ASCII首字符,可以将所有的数据划分成0-9,a-c,c-e等多个range)。每个store上存放若干个range,例如,数据节点node1的store1上,存放了0-9,a-c,e-g,g-i,i-k,k-m等6个range。
为了容灾的需要,可以将每个range,复制成若干个副本,分别放在不同数据节点的不同store上,以便当其中某一个数据节点故障时,其它数据节点上仍然保存了该数据节点的副本。从图5中可以看到,每个store上,都存放了多个range,不同的图案代表不同的range,相同的图案代表相同的range。例如,图中node1的store1和node2的store1都存放了Range a-c的副本。
在数据库运行过程中,难免会遇到一种情况,就是有的range被访问得多,有的range被访问的少。这就会导致有的数据节点被访问得较多,有的数据节点被访问得较少,即负载不均衡。被访问得多的range,可以称之为热点range,被访问得多的数据节点,可以称之为热点数据节点。当热点数据节点的访问率达到一定限度时,则数据节点的性能会随之下降,则对该数据节点上range访问的时延也会加大,甚至会导致中断,死机。
为了避免由于负载不均衡导致的严重后果,数据库集群需要进行负载迁移,一般可以将热点数据节点上的部分range,迁移到其他数据节点上。但负载迁移的过程往往会有很大的开销。例如,range数据的复制需要消耗很大的网络带宽,而且,传统的网络传输,需要CPU参与,需要将待传输数据从用户空间复制到内核空间,再经过TCP/IP协议栈的处理以后,才能发送出去,接收过程亦是同样复杂。所以,负载迁移过程会给原本负担过重的热点数据节点造成更大的负担,后果可能是数据节点直接挂死。
本申请实施例采用RDMA虚拟内存映射技术,将待迁移的range直接映射到第二数据节点上,从而无需等待数据复制完成,可以快速的迁移负载,降低时延。通过引入RDMA技术,将RDMA技术用于负载迁移的数据复制过程,从而大大提升了数据传输的速度,更重要的是,RDMA传输的全过程不需要第一数据节点的CPU参与,所以相比传统的网络传输方式,特别是对第一数据节点造成的负担大为减小。
下面以实施例的方式对本申请技术方案中数据迁移的方法做进一步的说明,如图6所示,为本申请实施例中数据迁移的方法的一个实施例示意图,包括:
601、管理节点确定数据迁移的第一数据节点和第二数据节点。
在本申请实施例中,在一种可能的实现方式中,管理节点定期的收集集群中每个数据节点的相关信息;即管理节点每隔一定时间,收集一次集群信息,该集群信息可以包括每个数据节点以及数据节点上每个store的容量和负载信息等。第一数据节点也可以称为源数据节点、第二数据节点也可以称为目标数据节点。
在另一种可能的实现方式中,第一数据节点可以向管理节点发起负载超过第一阈值的指令,该负载超过第一阈值的指令可以指示第一数据节点为源数据节点,第二数据节点向管理节点发送负载低于第二阈值的指令,该负载低于第二阈值的指令可以指示第二数据节点为目标数据节点。或者,管理节点接收第一数据节点发送的负载超过第一阈值的指令,确定第一数据节点为源数据节点,管理节点接收第二数据节点发送的低于第二阈值的指令,确定第二数据节点为目标数据节点。
其中,管理节点根据集群信息确定数据迁移的第一数据节点和第二数据节点,可以包括但不限于以下的实现方式:
(1)若管理节点检测到有新数据节点加入数据库集群,则管理节点从数据库集群中选择一个负载最大的数据节点作为第一数据节点,将新数据节点作为第二数据节点。
(2)若管理节点未检测到有新数据节点加入数据库集群,则管理节点从数据库集群中选择一个负载最大的数据节点作为第一数据节点,选择一个负载最小的数据节点作为第二数据节点。
示例性的,如图7所示,为触发负载均衡的流程示意图。管理节点如果发现有新数据节点加入数据库集群,就立刻从数据库集群中选一个负载最大的store作为源store,并从该store上挑一个负载最大的热点range作为迁移数据,将新加入数据节点上的任意store作为目标store,触发负载迁移;如果没有新数据节点加入,就看有没有store的负载超出阈值,如果有,就从超出阈值的store中选一个负载最大的作为源store,并从该store上挑一个负载最大的热点range作为迁移数据。再在数据库集群中找一个负载最小的store作为目标store,触发负载均衡;如果既没有新数据节点加入,也没有store负载超阈值,就不触发负载均衡。
需要说明的是,管理节点可以是一个独立的服务器,也可以是集成在服务器上的一个模块或者单元,如管理模块或者路由模块,具体不做限定。
602、第一数据节点将关于目标数据的数据迁移请求发送给第二数据节点。
在本申请实施例中,该数据迁移请求可以包含目标数据在第一数据节点中的内存地址,数据迁移请求用于第二数据节点建立RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据,目标操作请求为管理节点路由到第二数据节点上访问目标数据的操作请求。通常,热点数据就是这里的目标数据,也可以理解为第一数据节点上的迁移数据。应理解,热点数据就是访问比较频繁或者访问次数超过特定阈值的数据。
在一种可能的实现方式中,在第一数据节点向第二数据节点发送关于目标数据的数据迁移请求之前,第一数据节点和第二数据节点可以收到管理节点发送的触发负载均衡的指令,第一数据节点可以根据触发负载均衡的指令向第二数据节点发送关于目标数据的数据迁移请求,第二数据节点根据触发负载均衡的指令,做好接收目标数据的准备。
在另一种可能的实现方式中,在第一数据节点向第二数据节点发送关于目标数据的数据迁移请求之前,第一数据节点向管理节点发送负载超过第一阈值的指令,第二数据节点向管理节点发送负载低于第二阈值的指令,管理节点可以确定第一数据节点为源数据节点,第二数据节点为目标数据节点,管理节点可以向第一数据节点发送触发负载均衡的指令。第一数据节点可以根据触发负载均衡的指令向第二数据节点发送关于目标数据的数据迁移请求,第二数据节点根据触发负载均衡的指令,做好接收目标数据的准备。
可选的,管理节点还可以确定第一数据节点向第二数据节点迁移的目标数据,即热点数据,再向第一数据节点发送热点数据的信息,第一数据节点可以根据热点数据的信息确定热点数据。
603、第二数据节点根据数据迁移请求建立RDMA虚拟内存空间。
在本申请实施例中,第二数据节点根据数据迁移请求建立RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据。
604、第二数据节点将修改元数据的指令发送给管理节点。
在本申请实施例中,第二数据节点的虚拟内存空间建立以后,第二数据节点可以向管理节点发送修改元数据的指令,管理节点接收第二数据节点发送的修改元数据的指令。需要说明的是,元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(dataabout data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
605、管理节点根据修改元数据的指令修改元数据,使得访问第一数据节点上目标数据的目标操作请求路由到第二数据节点上。
在本申请实施例中,管理节点收到第二数据节点发送的修改元数据的指令之后,管理节点可以根据修改元数据的指令修改元数据,使原先路由到第一数据节点上的目标数据的目标操作请求全部路由到第二数据节点上。
示例性的,如图8所示,为本申请实施例中负载迁移的一个示意图。通过采用RDMA内存映射技术,可以将第一数据节点S1上的迁移数据块P,直接映射到第二数据节点S2的数据块P1上,使得S2能够像访问自己的内存一样去访问P上的数据。然后管理节点通过修改数据库集群的元数据,可以将原来应该路由到S1上对P的操作请求,都路由到S2的P1上。
这样一来,第二数据节点就可以像访问S2上的数据块P1一样去访问S1上的数据块P,由S2来处理P上所有的负载(虽然实际还是要访问S1上的数据块P,但CPU是用的S2的CPU),而P到P1的映射过程和网络传输过程,则对用户透明,从而实现了P上负载的瞬间迁移。而且,由于RDMA方式的网络传输过程不需要CPU参与,所以负载迁移过程不会消耗S1的CPU资源,故不会影响S1上运行的其他业务。另外,通过内存映射,S1上数据块P迁移到S2上的过程被转换成S2内部数据复制过程(P1→P2),由S2统一管理,可以提升迁移效率。需要说明的是,在本申请实施例中,目标操作请求可以理解为负载。
606、第二数据节点对接收的目标操作请求进行访问。
在本申请实施例中,当第二数据节点接收目标操作请求时,若目标操作请求访问的目标数据未保存在第二数据节点上,则第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据;若目标操作请求访问的目标数据已保存在第二数据节点上,则第二数据节点根据目标操作请求在已保存的目标数据上进行访问。
在另外的几种实现方式中,如下所示:
(1)若目标操作请求为写操作请求,且所述写操作请求指示增加新数据,则第二数据节点根据写操作请求在第二数据节点上进行写操作。
(2)若目标操作请求是读操作请求,且目标操作请求访问的目标数据已保存在第二数据节点上,则第二数据节点根据目标操作请求在第二数据节点上进行访问。
(3)若目标操作请求是读操作请求,且目标操作请求访问的目标数据未保存在第二数据节点上,则第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据。
(4)若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据已保存在所述第二数据节点上,则所述第二数据节点根据所述目标操作请求在所述第二数据节点上进行访问。
(5)若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据未保存在所述第二数据节点上,则所述第二数据节点根据所述目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据。
607、第一数据节点将目标数据发送给第二数据节点。
在本申请实施例中,即第二数据节点接管第一数据节点上迁移数据的负载以后,就可以开始将第一数据节点上的迁移数据(一般为热点range),复制到第二数据节点;迁移数据复制完成以后,负载迁移结束。第二数据节点接收并存储第一数据节点发送的目标数据。需要说明的是,热点数据可以理解为访问次数或者访问率超过阈值的数据。可选的,第一数据节点也可以通过RDMA方式将目标数据向第二数据节点发送,那么第二数据节点可以通过RDMA方式接收第一数据节点发送的目标数据。
第一数据节点向第二数据节点发送目标数据,可以包括:第一数据节点确定热点数据;第一数据节点将热点数据分为M份数据,M为大于等于2的整数;第一数据节点从M份数据中选择目标数据;第一数据节点向第二数据节点发送目标数据,或者,通过RDMA方式向第二数据节点发送目标数据。
其中,第一数据节点确定热点数据,可以是第一数据节点根据自己的容量、负载信息、访问率等信息确定的,也可以是管理节点确定的第一数据节点的热点数据的信息并将其发送给第一数据节点,第一数据节点再根据热点数据的信息确定热点数据。
第一数据节点通过RDMA向第二数据节点发送目标数据的时候,可以采用分片传输的方法。示例性的,如图9所示,为本申请实施例中数据块分片传输的一个示意图。因为数据在迁移过程中,可能会被第一数据节点和第二数据节点同时操作,所以数据在迁移过程中是锁定不可用的。如果锁定数据过大,则迁移时间也会相应更久,大量数据长时间不可用,必然导致服务质量下降,甚至会中断服务。所以,在本申请实施例中,将大数据块分成多个小块(一般按页分块)迁移,从而减小不可用的数据量,缩短数据不可用的时间,从而提升服务质量,避免服务中断。
在图9所示的示意图中:
1)将迁移数据块P1分成多个小数据块(例如每小数据块一页),逐个把小数据块迁移到P2;
2)把正在迁移的小数据块锁定(读/写都不可访问);
3)复制过程中,所有对迁移数据的写操作请求都路由到P2上执行;
4)对于读或更新操作请求,可以保存一个迁移状态表,表中记录每一个小数据块的迁移状态(复制完成,正在复制,未复制)。对于已经完成复制的数据块,直接到P2上执行读或更新操作;对于未复制或正在复制的数据块,则到P1上执行读或更新操作。
需要注意的是,数据块P1其实是从第一数据节点的迁移数据块P映射到目标服务器上的镜像,所以如果不采用RDMA技术,而直接采用上述分块迁移算法,则每复制一小块数据到第二数据节点,都要修改该块数据的元数据信息,迁移速度必然大大降低。
如图10所示,为分片传输算法的一个流程示意图。第一数据节点上的数据块P复制开始以后,将迁移数据分片(一般按页),然后逐片复制;然后锁定正在复制的小数据块,使其读/写都不可访问;当有操作请求要访问迁移数据时,看该操作请求是否为写操作请求,如果是写操作请求,直接路由到第二数据节点上;如果不是写操作(例如读操作请求),就判断该小数据块是否已经复制完成,如果已经复制完了,就把读操作请求路由到第二数据节点上执行;如果没有复制完,就把该读操作请求路由到第一数据节点上执行。
在本申请实施例中,管理节点确定数据迁移的第一数据节点和第二数据节点;第一数据节点向第二数据节点发送关于目标数据的数据迁移请求;第二数据节点接收第一数据节点发送的关于目标数据的数据迁移请求,数据迁移请求包含目标数据在第一数据节点中的内存地址;第二数据节点根据数据迁移请求建立RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据;第二数据节点向管理节点发送修改元数据的指令;管理节点接收第二数据节点发送的修改元数据的指令;管理节点根据修改元数据的指令修改元数据,使得访问第一数据节点上目标数据的目标操作请求路由到第二数据节点上;第一数据节点通过RDMA向第二数据节点发送目标数据;第二数据节点通过RDMA接收并存储第一数据节点发送的目标数据。
即第二数据节点根据第一数据节点发送的关于目标数据的数据迁移请求,建立RDMA虚拟内存空间,第二数据节点向管理节点发送修改元数据的指令,管理节点可以根据修改元数据的指令修改元数据,以使得访问目标数据的目标操作请求路由到第二数据节点,降低时延;从而,不需要等到目标数据在第二数据节点上复制完成再迁移目标操作请求;第一数据节点通过RDMA将目标数据向第二数据节点发送。利用RDMA虚拟内存技术,将目标数据映射到第二数据节点的RDMA虚拟内存空间中,并将使用权和负载全部切换到第二数据节点,从而无需等待目标数据复制完成就可以迁移负载,提升了负载迁移的速度;即将RDMA技术用于分布式数据库集群实时数据迁移的过程,减少了数据迁移对第一数据节点上CPU资源的消耗,减小了迁移过程对第一数据节点正在运行的其它业务的影响,并提升了数据传输的速度。进一步的,将目标数据分小块迁移,从而缩短了目标数据不可用的时间和数据量,提升了服务质量。
上面对本申请实施例中数据迁移的方法做了说明,下面对本申请实施例中的数据节点进行说明,如图11所示,为本申请实施例中数据节点的一个实施例示意图,包括:
接收模块1101,用于接收第一数据节点发送的关于目标数据的数据迁移请求,数据迁移请求包含目标数据在第一数据节点中的内存地址;接收并存储第一数据节点发送的目标数据;
处理模块1102,用于根据数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据;
发送模块1103,用于向管理节点发送修改元数据的指令,修改元数据的指令用于管理节点修改元数据,以使得访问目标数据的目标操作请求路由到第二数据节点。
可选的,在本申请实施例的一些实施例中,
接收模块1101,具体用于通过RDMA接收并存储第一数据节点发送的目标数据。
可选的,在本申请的一些实施例中,目标数据为第一数据节点中将热点数据分为M份数据中的其中一份数据,M为大于等于2的整数。
可选的,在本申请的一些实施例中,
处理模块,还用于若目标操作请求为写操作请求,且写操作请求指示增加新数据,则处理模块根据写操作请求在第二数据节点上进行写操作。
可选的,在本申请的一些实施例中,
处理模块1102,还用于若目标操作请求是读操作请求,或者对目标数据进行修改的写操作请求,且目标操作请求访问的目标数据已保存在第二数据节点上,则处理模块根据目标操作请求在第二数据节点上进行访问;若目标操作请求是读操作请求,或者对目标数据进行修改的写操作请求,且目标操作请求访问的目标数据未保存在第二数据节点上,则处理模块根据目标操作请求通过RDMA访问第一数据节点上的目标数据。
如图12A所示,为本申请实施例中数据节点的另一个实施例示意图,包括:
发送模块1201,用于向第二数据节点发送关于目标数据的数据迁移请求,数据迁移请求包含目标数据在第一数据节点中的内存地址,数据迁移请求用于第二数据节点建立远程直接内存访问RDMA虚拟内存空间,RDMA虚拟内存空间的内存地址映射到第一数据节点的内存地址,RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问第一数据节点上的目标数据,目标操作请求为管理节点路由到第二数据节点上访问目标数据的操作请求;向第二数据节点发送目标数据。
可选的,在本申请的一些实施例中,
发送模块1201,具体用于通过RDMA向第二数据节点发送目标数据。
可选的,在本申请的一些实施例中,
发送模块1201,具体用于确定热点数据;将热点数据分为M份数据,M为大于等于2的整数;从M份数据中选择目标数据;通过RDMA向第二数据节点发送目标数据。
可选的,在本申请的一些实施例中,在图12A所示的基础上,如图12B所示,为数据节点的另一个实施例示意图,数据节点还包括:
接收模块1202,用于接收管理节点发送的热点数据信息;
发送模块1201,具体用于根据热点数据信息确定热点数据。
如图13所示,为本申请实施例中数据节点的另一个实施例示意图。
该数据节点可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1322(例如,一个或一个以上处理器)和存储器1332,一个或一个以上存储应用程序1342或数据1344的存储介质1330(例如一个或一个以上海量存储设备)。其中,存储器1332和存储介质1330可以是短暂存储或持久存储。存储在存储介质1330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据节点中的一系列指令操作。更进一步地,中央处理器1322可以设置为与存储介质1330通信,在数据节点上执行存储介质1330中的一系列指令操作。
数据节点还可以包括一个或一个以上电源1326,一个或一个以上有线或无线网络接口1350,一个或一个以上输入输出接口1358,和/或,一个或一个以上操作系统1341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由第一数据节点和第二数据节点所执行的步骤都可以基于该图13所示的数据节点结构,此处不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
可选的,在本申请的一些实施例中,提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如上述图6中第一数据节点或第二数据节点所述的方法。
可选的,在本申请的一些实施例中,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如上述图6中第一数据节点或第二数据节点所述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (21)
1.一种数据迁移的方法,其特征在于,包括:
第二数据节点接收第一数据节点发送的关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在所述第一数据节点中的内存地址;
所述第二数据节点根据所述数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于所述第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的目标数据;
所述第二数据节点向管理节点发送修改元数据的指令,所述修改元数据的指令用于所述管理节点修改所述元数据,以使得访问所述目标数据的目标操作请求路由到所述第二数据节点;
所述第二数据节点接收并存储所述第一数据节点发送的所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述第二数据节点接收并存储所述第一数据节点发送的所述目标数据,包括:
所述第二数据节点通过RDMA接收并存储所述第一数据节点发送的所述目标数据。
3.根据权利要求1或2所述的方法,其特征在于,所述目标数据为所述第一数据节点中将热点数据分为M份数据中的其中一份数据,M为大于等于2的整数。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述目标操作请求为写操作请求,且所述写操作请求指示增加新数据,则所述第二数据节点根据所述写操作请求在所述第二数据节点上进行写操作。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据已保存在所述第二数据节点上,则所述第二数据节点根据所述目标操作请求在所述第二数据节点上进行访问;
若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据未保存在所述第二数据节点上,则所述第二数据节点根据所述目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据。
6.一种数据迁移的方法,其特征在于,包括:
第一数据节点向第二数据节点发送关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在所述第一数据节点中的内存地址,所述数据迁移请求用于所述第二数据节点建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于所述第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据,所述目标操作请求为管理节点路由到所述第二数据节点上访问所述目标数据的操作请求;
所述第一数据节点向所述第二数据节点发送所述目标数据。
7.根据权利要求6所述的方法,其特征在于,所述第一数据节点向所述第二数据节点发送所述目标数据,包括:
所述第一数据节点通过RDMA向所述第二数据节点发送所述目标数据。
8.根据权利要求6或7所述的方法,其特征在于,所述第一数据节点向所述第二数据节点发送目标数据,包括:
所述第一数据节点确定热点数据;
所述第一数据节点将所述热点数据分为M份数据,M为大于等于2的整数;
所述第一数据节点从所述M份数据中选择所述目标数据;
所述第一数据节点向所述第二数据节点发送所述目标数据。
9.根据权利要求8所述的方法,其特征在于,所述第一数据节点确定热点数据之前,所述方法还包括:
所述第一数据节点接收管理节点发送的热点数据信息;
所述第一数据节点确定热点数据,包括:
所述第一数据节点根据所述热点数据信息确定所述热点数据。
10.一种数据节点,其特征在于,包括:
接收模块,用于接收第一数据节点发送的关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在所述第一数据节点中的内存地址;接收并存储所述第一数据节点发送的所述目标数据;
处理模块,用于根据所述数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的目标数据;
发送模块,用于向管理节点发送修改元数据的指令,所述修改元数据的指令用于所述管理节点修改所述元数据,以使得访问所述目标数据的目标操作请求路由到所述第二数据节点。
11.根据权利要求10所述的数据节点,其特征在于,
所述接收模块,具体用于通过RDMA接收并存储所述第一数据节点发送的所述目标数据。
12.根据权利要求10或11所述的数据节点,其特征在于,所述目标数据为所述第一数据节点中将热点数据分为M份数据中的其中一份数据,M为大于等于2的整数。
13.根据权利要求12所述的数据节点,其特征在于,
所述处理模块,还用于若所述目标操作请求为写操作请求,且所述写操作请求指示增加新数据,则所述处理模块根据所述写操作请求在所述第二数据节点上进行写操作。
14.根据权利要求12所述的数据节点,其特征在于,
所述处理模块,还用于若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据已保存在所述第二数据节点上,则所述处理模块根据所述目标操作请求在所述第二数据节点上进行访问;
还用于若所述目标操作请求是读操作请求,或者对所述目标数据进行修改的写操作请求,且所述目标操作请求访问的所述目标数据未保存在所述第二数据节点上,则所述处理模块根据所述目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据。
15.一种数据节点,其特征在于,包括:
发送模块,用于向第二数据节点发送关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在第一数据节点中的内存地址,所述数据迁移请求用于所述第二数据节点建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于所述第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据,所述目标操作请求为管理节点路由到所述第二数据节点上访问所述目标数据的操作请求;向所述第二数据节点发送所述目标数据。
16.根据权利要求15所述的数据节点,其特征在于,
所述发送模块,具体用于通过RDMA向所述第二数据节点发送所述目标数据。
17.根据权利要求15或16所述的数据节点,其特征在于,
所述发送模块,具体用于确定热点数据;将所述热点数据分为M份数据,M为大于等于2的整数;从所述M份数据中选择所述目标数据;向所述第二数据节点发送所述目标数据。
18.根据权利要求15所述的数据节点,其特征在于,所述数据节点还包括:
接收模块,用于接收管理节点发送的热点数据信息;
所述发送模块,具体用于根据所述热点数据信息确定所述热点数据。
19.一种数据节点,其特征在于,包括:
收发器,处理器,存储器和总线,所述收发器、所述处理器和所述存储器通过所述总线连接;
所述存储器,用于存储操作指令;
所述收发器,用于接收第一数据节点发送的关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在所述第一数据节点中的内存地址;向管理节点发送修改元数据的指令,所述修改元数据的指令用于所述管理节点修改所述元数据,以使得访问所述目标数据的目标操作请求路由到第二数据节点;接收并存储所述第一数据节点发送的所述目标数据;
所述处理器,用于根据所述数据迁移请求建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于所述第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的目标数据。
20.一种数据节点,其特征在于,包括:
收发器,存储器和总线,所述收发器和所述存储器通过所述总线连接;
所述存储器,用于存储操作指令;
所述收发器,用于向第二数据节点发送关于目标数据的数据迁移请求,所述数据迁移请求包含所述目标数据在第一数据节点中的内存地址,所述数据迁移请求用于所述第二数据节点建立远程直接内存访问RDMA虚拟内存空间,所述RDMA虚拟内存空间的内存地址映射到所述第一数据节点的内存地址,所述RDMA虚拟内存空间用于所述第二数据节点根据目标操作请求通过RDMA访问所述第一数据节点上的所述目标数据,所述目标操作请求为管理节点路由到所述第二数据节点上访问所述目标数据的操作请求;向所述第二数据节点发送所述目标数据。
21.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-9任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210741489.2A CN115344551A (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
CN201710495228.6A CN109144972B (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710495228.6A CN109144972B (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210741489.2A Division CN115344551A (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144972A CN109144972A (zh) | 2019-01-04 |
CN109144972B true CN109144972B (zh) | 2022-07-12 |
Family
ID=64804790
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710495228.6A Active CN109144972B (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
CN202210741489.2A Pending CN115344551A (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210741489.2A Pending CN115344551A (zh) | 2017-06-26 | 2017-06-26 | 一种数据迁移的方法以及数据节点 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109144972B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427270B (zh) * | 2019-08-09 | 2022-11-01 | 华东师范大学 | 一种面向rdma网络下分布式连接算子的动态负载均衡方法 |
CN110716985B (zh) * | 2019-10-16 | 2022-09-09 | 北京小米移动软件有限公司 | 一种节点信息处理方法、装置及介质 |
CN111274176B (zh) * | 2020-01-15 | 2022-04-22 | 联想(北京)有限公司 | 一种信息处理方法、电子设备、系统及存储介质 |
CN113742050B (zh) * | 2020-05-27 | 2023-03-03 | 华为技术有限公司 | 操作数据对象的方法、装置、计算设备和存储介质 |
CN114442907B (zh) * | 2020-11-04 | 2024-07-05 | 华为技术有限公司 | 数据迁移方法和装置、服务器、网络系统 |
CN116346581A (zh) * | 2021-12-24 | 2023-06-27 | 华为技术有限公司 | 通信方法及装置、通信系统 |
CN114706714A (zh) * | 2022-04-19 | 2022-07-05 | 纳贤信息科技(深圳)有限公司 | 一种同步计算机内存分割快照的方法 |
CN115277858B (zh) * | 2022-09-23 | 2022-12-20 | 太极计算机股份有限公司 | 一种大数据的数据处理方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763173A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 数据传输方法和计算节点 |
CN105518611A (zh) * | 2014-12-27 | 2016-04-20 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
CN106372013A (zh) * | 2015-07-24 | 2017-02-01 | 华为技术有限公司 | 远程内存访问方法、装置和系统 |
CN106777225A (zh) * | 2016-12-26 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种数据的迁移方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120331243A1 (en) * | 2011-06-24 | 2012-12-27 | International Business Machines Corporation | Remote Direct Memory Access ('RDMA') In A Parallel Computer |
US20130083690A1 (en) * | 2011-10-04 | 2013-04-04 | International Business Machines Corporation | Network Adapter Hardware State Migration Discovery in a Stateful Environment |
US9354933B2 (en) * | 2011-10-31 | 2016-05-31 | Intel Corporation | Remote direct memory access adapter state migration in a virtual environment |
US9311122B2 (en) * | 2012-03-26 | 2016-04-12 | Oracle International Corporation | System and method for providing a scalable signaling mechanism for virtual machine migration in a middleware machine environment |
CN104270416B (zh) * | 2014-09-12 | 2018-03-13 | 杭州华为数字技术有限公司 | 负载均衡控制方法及管理节点 |
-
2017
- 2017-06-26 CN CN201710495228.6A patent/CN109144972B/zh active Active
- 2017-06-26 CN CN202210741489.2A patent/CN115344551A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103763173A (zh) * | 2013-12-31 | 2014-04-30 | 华为技术有限公司 | 数据传输方法和计算节点 |
CN105518611A (zh) * | 2014-12-27 | 2016-04-20 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
CN105975413A (zh) * | 2015-03-13 | 2016-09-28 | 国际商业机器公司 | 用于迁移虚拟机的rdma存储器映射的控制器和方法 |
CN106372013A (zh) * | 2015-07-24 | 2017-02-01 | 华为技术有限公司 | 远程内存访问方法、装置和系统 |
CN106777225A (zh) * | 2016-12-26 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 一种数据的迁移方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109144972A (zh) | 2019-01-04 |
CN115344551A (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144972B (zh) | 一种数据迁移的方法以及数据节点 | |
CN115004661B (zh) | 通信服务提供商网络内托管的云计算实例的移动性 | |
US9372726B2 (en) | Gang migration of virtual machines using cluster-wide deduplication | |
JP5458308B2 (ja) | 仮想計算機システム、仮想計算機システムの監視方法及びネットワーク装置 | |
US9246840B2 (en) | Dynamically move heterogeneous cloud resources based on workload analysis | |
US9760429B2 (en) | Fractional reserve high availability using cloud command interception | |
US20200364080A1 (en) | Interrupt processing method and apparatus and server | |
US20150169339A1 (en) | Determining Horizontal Scaling Pattern for a Workload | |
CN111158851B (zh) | 一种虚拟机快速部署方法 | |
CN111225003B (zh) | 一种nfs节点配置方法和装置 | |
CN114625762A (zh) | 一种元数据获取方法、网络设备及系统 | |
US11740977B2 (en) | Efficient deduplication based file movement for load balancing in a scaled-out backup system | |
US11076027B1 (en) | Network communications protocol selection based on network topology or performance | |
US20240205292A1 (en) | Data processing method and apparatus, computer device, and computer-readable storage medium | |
WO2018053838A1 (zh) | 一种负载均衡的方法及相关设备 | |
Kashiwagi et al. | Flexible and efficient partial migration of split-memory VMs | |
WO2016201998A1 (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及系统 | |
US8621260B1 (en) | Site-level sub-cluster dependencies | |
CN112199176A (zh) | 一种业务处理方法、装置及相关设备 | |
CN112799849B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
EP4227802A1 (en) | Method, apparatus and computing device for configuring compute mode | |
US11272005B1 (en) | Communicating state information in a distributed storage environment | |
Ojala et al. | NoSQL stores for coreless mobile networks | |
US12056017B2 (en) | Capacity-based redirection efficiency and resiliency | |
US11971902B1 (en) | Data retrieval latency management system |
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 |