CN107291750A - 一种数据迁移方法和装置 - Google Patents
一种数据迁移方法和装置 Download PDFInfo
- Publication number
- CN107291750A CN107291750A CN201610202889.0A CN201610202889A CN107291750A CN 107291750 A CN107291750 A CN 107291750A CN 201610202889 A CN201610202889 A CN 201610202889A CN 107291750 A CN107291750 A CN 107291750A
- Authority
- CN
- China
- Prior art keywords
- interface
- data
- level interface
- level
- class
- 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.)
- Granted
Links
- 238000013508 migration Methods 0.000 title claims abstract description 242
- 230000005012 migration Effects 0.000 title claims abstract description 242
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000001360 synchronised effect Effects 0.000 claims description 94
- 230000008859 change Effects 0.000 claims description 24
- 238000009826 distribution Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 4
- 238000005520 cutting process Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 66
- 238000012546 transfer Methods 0.000 abstract description 16
- 238000005516 engineering process Methods 0.000 abstract description 11
- 238000007726 management method Methods 0.000 description 24
- 230000015654 memory Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 3
- 239000010931 gold Substances 0.000 description 3
- 229910052737 gold Inorganic materials 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013509 system migration Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Abstract
本申请实施例提供了一种数据迁移方法和装置,涉及计算机技术领域。所述方法包括:接收将第一系统中的数据迁移至第二系统的迁移任务;调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。首先,实现了任意两个数据端可以进行双向的数据传输和迁移。其次,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据迁移方法和一种数据迁移装置。
背景技术
随着国内外云计算平台、市场的快速发展,云存储产品也越来越多。在云计算平台上,云服务器是最基础、最重要的产品,其次就是云存储。各大云服务商都有自己的云存储产品,如AWS(Amazon Web Services,亚马逊云服务)的S3、阿里云的OSS(Object Storage Service,对象存储服务)、微软云计算平台Azure的存储数据服务(Blob)。另外,还有像七牛云存储这种专门提供云存储服务的服务商。
虽然云存储产品种类很多,它们在功能和使用方法上都有一些共通点,但具体到API(Application Programming Interface,应用程序编程接口)调用、SDK(Software Development Kit,软件开发工具包)的编程上,又都有一些差异和各自的特点。在实际使用过程中,有时因为整体业务的搬迁,可能会从一个云服务商切换到另一个服务商,这时候就需要相应地把云存储的数据进行迁移同步;或者有时为了数据的安全性,不仅在同个服务商提供的多个云存储产品上同步备份数据,甚至会把数据备份到另一服务商提供的云存储产品,减少风险;又或者将客户端文件系统中的数据同步迁移到某一云服务商提供的云存储产品中。
但是,先有的数据迁移技术或工具,只能针对性地在某一服务商提供的云存储产品与用户之间进行数据传输,不支持其它云存储产品;或者是将其他存储系统中的数据迁移到某一服务商提供的云存储产品,不能进行任意两个存储系统之间的数据的双向迁移。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据迁移方法和相应的一种数据迁移装置。
本申请公开了一种数据迁移方法,其特征在于,包括:
接收将第一系统中的数据迁移至第二系统的迁移任务;
调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
优选地,所述调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤,包括:
确定属于获取数据的各上层接口,以及属于同步数据的各上层接口;
对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据;
对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
优选地,对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口的步骤,包括:
对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口;
对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
优选地,对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口的步骤,包括:
对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口;
对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
优选地,所述对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据的步骤,包括:
由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据;
由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器;
由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
优选地,所述对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统的步骤,包括:
由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
优选地,所述管理组件在集群的一台服务器中,所述工作组件在集群的各台服务器中。
优选地,所述由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器的步骤,包括:
提取元数据中记录的数据量大小;
如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器;
优选地,所述由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器的步骤,包括:
提取元数据中记录的数据量大小;
如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器;
如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片;
将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
优选地,所述集群的各台服务器中之间采用JGroups通信协议传输数据。
优选地,所述由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统的步骤,包括:
由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
优选地,调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
判断将第一系统中的数据迁移至第二系统是否成功;
如果失败,则重复执行调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤,直至重试次数达到重试阈值或者在重试阈值内成功。
优选地,在调用对应所述迁移任务的各上层接口,通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的过程中,还包括:
判断是否接收到暂停指令;
如果接收到暂停指令,则暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置;
则进一步的,在暂停将第一系统的数据迁移至第二系统之后,还包括:
判断是否接收到重启指令;
如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新调用对应所述迁移任务的各上层接口,通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤。
优选地,当第一系统为客户端文件系统时,在接收将第一系统中的数据迁移至第二系统的迁移任务的步骤之前,还包括:
在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
优选地,所述调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;
如果出现变更,则调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
优选地,所述对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据的步骤之后,还包括:
调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名;
进一步的,对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统的步骤之后,还包括:
调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
优选地,在调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表;
针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表;
比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
优选地,所述迁移任务由客户端发送,所述迁移任务包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。
优选地,在确定属于获取数据的各上层接口,以及属于同步数据的各上层接口的步骤之后,还包括:
针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证;
针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
本申请还公开了一种数据迁移装置,其特征在于,包括:
任务接收模块,适于接收将第一系统中的数据迁移至第二系统的迁移任务;
迁移模块,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
优选地,所述迁移模块,包括:
上层接口确定子模块,适于确定属于获取数据的各上层接口,以及属于同步数据的各上层接口;
数据获取子模块,适于对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据;
数据同步子模块,适于对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
优选地,所述数据获取子模块,包括:
第一底层操作接口确定子模块,适于对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口;
第一底层操作接口调用子模块,适于对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
优选地,所述数据同步子模块,包括:
第二底层操作接口确定子模块,适于对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口;
第二底层操作接口调用子模块,适于对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
优选地,所述数据获取子模块,包括:
元数据获取子模块,适于由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据;
任务分发子模块,适于由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器;
实际数据获取子模块,适于由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
优选地,所述数据同步子模块,包括:
实际数据同步子模块,适于由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
优选地,所述管理组件在集群的一台服务器中,所述工作组件在集群的各台服务器中。
优选地,所述任务分发子模块,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小;
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
第二元数据分发子模块,适于如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器。
优选地,所述任务分发子模块,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小;
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
第三元数据分发子模块,适于如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器;
元数据切分子模块,适于如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片;
将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
优选地,所述集群的各台服务器中之间采用JGroups通信协议传输数据。
优选地,所述实际数据同步子模块,包括:
第一实际数据同步子模块,适于由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
优选地,在所述迁移模块之后,还包括:
迁移判断模块,适于判断将第一系统中的数据迁移至第二系统是否成功;如果失败,则重复执行迁移模块,直至重试次数达到重试阈值或者在重试阈值内成功。
优选地,在所述迁移模块之后,还包括:
暂停指令判断模块,适于判断是否接收到暂停指令;如果接收到暂停指令,则进入暂停记录子模块;
暂停记录模块,适于暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置;
则进一步的,在所述暂停指令判断模块之后,还包括:
重启指令判断模块,适于判断是否接收到重启指令;如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新进入迁移模块。
优选地,当第一系统为客户端文件系统时,在任务接收模块之前,还包括:
应用程序安装模块,适于在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
优选地,在所述迁移模块之后,还包括:
数据监控模块,适于监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;如果出现变更,则进入变更数据同步模块;
变更数据同步模块,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
优选地,在所述数据获取子模块之后,还包括:
签名子模块,适于调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名;
进一步的,在所述数据同步子模块之后,还包括:
签名验证子模块,适于调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
优选地,在所述迁移模块之后,还包括:
第一文件列表获取模块,适于针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表;
第二文件列表获取模块,适于针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表;
差异提示模块,适于比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
优选地,所述迁移任务由客户端发送,所述迁移任务包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。
优选地,在所述上层接口确定子模块之后,还包括:
第一身份验证模块,适于针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证;
第二身份验证模块,适于针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
本申请实施例包括以下优点:
本申请实施例,接收将第一系统中的数据迁移至第二系统的迁移任务;然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
首先,实现了任意两个数据端可以进行双向的数据传输和迁移。
其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
附图说明
图1是本申请的一种数据迁移方法实施例的步骤流程图;
图1A是本申请的一种五个系统进行数据迁移的示意图;
图1B是本申请的一种五个系统的数据迁移过程接口调用示意图;
图2是本申请的一种数据迁移方法实施例的步骤流程图;
图2C是本申请的一种数据迁移结构示意图;
图2D是本申请的一种分布式模式数据迁移数据流示意图;
图3是本申请的一种数据迁移装置实施例的结构框图;
图4是本申请的一种数据迁移装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例的核心构思之一在于,接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统,然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
首先,实现了任意两个数据端可以进行双向的数据传输和迁移,包括数据端内部的bucket间迁移。
其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
实施例一
参照图1,示出了本申请的一种数据迁移方法实施例的步骤流程图,具体可以包括如下步骤:
步骤110,接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统。
本申请的一种数据迁移方法是将一个系统中的数据迁移至另一个系统的方法,是针对多个系统中的任一两个系统。其中的系统可以是具有存储功能的服务器,或者存储空间、云存储产品等,例如客户端文件系统(Local)、AWS(Amazon Web Services,亚马逊云服务)的S3、阿里云的OSS(ObjectStorage Service,对象存储服务)、微软云计算平台Azure的存储数据服务(Blob)、七牛云存储(QiNiu)等。如图1A为前述五个系统进行数据迁移的示意图。可以看出有,多个系统中的任意两个系统可以进行双向的数据传输和迁移,包括系统内部的不同存储区间(bucket)之间的数据迁移。其中,Bucket是一个用户用来管理所存储对象的存储空间,类似于文件系统里面的根目录或者磁盘分区。而且本申请的数据迁移方法具有良好的扩展功能,对于其它尚未加入图1A所示五个系统的云存储产品,如百度对象存储(Baidu Object Storage,BOS)、金山对象存储(Kingsoft Standard StorageService,KS3)等,也可以很方便地加入,并且可以跟其它任意一个系统进行数据的双向传输与迁移。
为了区分两个系统,可以定义将第一系统中的数据迁移至第二系统。其中的第一系统和第二系统可以为两个相同类型的系统,例如都为阿里云的OSS,那么此时是将一个OSS的数据迁移至另一个OSS,比如将一个地区的OSS中的数据迁移至另一个地区的OSS中;当然,第一系统和第二系统也可以为两个不同类型的系统,例如分别为OSS和Blob,那么此时是将OSS的数据迁移至Blob,或者也可以为同一系统中的两个不同的存储区,那么此时是将同一系统中的一个存储区间的数据迁移至另一个存储区间。
对于具体的第一系统和第二系统,以及迁移数据,例如是将第一系统中的全部数据迁移至第二系统,还是只迁移一部分,可以在迁移任务中设定。接收数据迁移任务的服务器可以从迁移任务中获取上述信息。
在本申请的另一个优选地实施例中,所述迁移任务由客户端发送,所述迁移任务包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。其中,第一系统的标识信息是指可以唯一标识第一系统的信息,例如第一系统的访问域名等;用户在第一系统的身份信息是指当前第一系统用户的身份信息,例如用户名等;第二系统的标识信息是指可以唯一标识第二系统的信息,例如第二系统的IP地址等;用户在第二系统的身份信息是指当前第二系统用户的身份信息,例如用户名等;待迁移数据在第一系统中的文件信息可以包括待迁移数据存储在第一系统中的文件的名称、存储位置、数据大小等信息。
在实际应用中,本申请实施例可以在客户端中提供一个迁移配置页面,用户可以在该迁移配置页面中配置相关信息,作为被迁移对象的第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、作为迁移目标对象的第二系统的标识信息、用户在第二系统的身份信息,当然还包括迁移对象标识。其中,如果用户需要迁移第一系统的全部数据,则可以配置迁移对象标识为all,all标识迁移第一系统的全部数据;如果用户需要迁移某个或者某些歌文件,则可以配置该文件或者该几个文件在第一存储系统中的存储路径作为迁移对象标识。当然,还可以配置其他需求的信息,比如有的存储系统是分区域,比如北京有一个存储中心,上海有一个存储中心,那么还可以配置该存储系统所在区域Region。具体的配置项可以根据需求设置,本申请实施例不对其加以限制。
步骤120,调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
在本申请实施例中,可以将多个服务器连接起来形成一个大的处理集群。整个集群有一台控制节点(Master)服务器和多台工作节点(Slave)服务器,Master用以接收将第一系统中的数据迁移至第二系统的迁移任务,然后可以通过合理的分发策略,把接收到的迁移任务分发给Slave进行处理。Slave处理完接收到的迁移任务后,可以把迁移结果反馈给Master。当然,本申请实施例也可以用单台服务器实现数据的迁移。优选的本申请数量采样前述集群的方式。
如图1B为对前述五个系统的数据迁移过程接口调用示意图。其中,上层(Peer)接口定义了每个具体的进行数据迁移的系统都必须具有的功能。例如,get(),put(),分别是指下载、上传数据,这是进行实际数据传输需要调用的接口;
mkRoot(),rmRoot():建立、删除根目录。操作的对象就是系统中的Bucket;Bucket存储空间,是一个用户用来管理所存储Object的存储空间,类似于文件系统里面的根目录或者磁盘分区。
getObj(),getAllObjs():获取单个元数据、获取全部元数据,主要就是利用这些接口,获取要传输的数据的元数据;元数据Metadata作为实际存储数据的描述型数据,只包含一些基础信息,如:标识数据唯一性的Key、数据大小、时间戳等。
beginPartPut(),partPut(),endPartPut():主要处理断点续传、大文件的切片传输功能;
rm(),rmAll():删除单个数据,删除全部数据。
其中,对于某一些上层接口,如getAllObjs(),rmAll(),它们的实现是通过调用其它底层操作接口如getObj(),rm()来实现,这对于任何一个进行数据迁移的系统来说都是通用的,可以在图2B中所示的抽象接口类(AbstractPeer)层中实现。
所以在本申请实施例中,可以在AbstractPeer这一层实现调用底层操作接口,例如图1B中的Local、OSS、S3、QiNiu、Blob构成的底层的操作接口。所以,可以调用对应迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
例如,若某一迁移任务是要将Local中的数据迁移至OSS,则可以调用对应该迁移任务的各上层接口,包括用以获取Local中数据的上层接口和用以将获取的数据同步到OSS中的上层接口,然后首先可以由获取Local中数据的上层接口通过与之对应的抽象接口类依次调用Local中的getObj()接口、get()接口,以获取Local中的迁移数据,然后可以由用以将获取的数据同步到OSS中的上层接口通过与之对应的抽象接口类依次调用OSS中的put()接口,将从Local中获取的迁移数据传输至OSS。
由于本申请设置一个统一的上层接口层peer,在其中构建了各种操作接口。又构建了一个抽象接口类层AbstractPeer,该抽象接口类层可以继承上层接口层。然后对于各个存储系统(如前述Local、OSS、S3、QiNiu、Blob)本身的底层操作接口,可以继承该AbstractPeer,从而可以实现各个系统之间互相迁移数据的过程。同时,由于有抽象接口类层AbstractPeer,对于新的存储系统,只需要将其底层的底层操作接口层继承抽象接口类层AbstractPeer,即可实现该新的存储系统与之前的其他任意一个存储系统之间的数据迁移过程。
在本申请的另一个优选的实施例中,步骤120包括:
子步骤121,确定属于获取数据的各上层接口,以及属于同步数据的各上层接口。
在本申请实施例中,定义用以从第一系统中获取数据的上层接口为属于获取数据的上层接口,用以将获取的数据同步至第二系统的上层接口为属于同步数据的上层接口。在实际应用中,根据具体需求的不同,属于获取数据的上层接口和属于同步数据的上层接口都可能为一个或多个上层接口,对此本申请实施例不加以限制。
在实际应用中,接收到一个迁移任务后,首先要确定去某个存储系统获取数据要调用的各上层接口,以及将数据存储至另一系统要调用的上传接口。
比如,对于迁移任务中包括了要从中迁移数据的第一系统的标识信息,以及待迁移的一个文件的文件信息,如果不需要断点续传,则需要调用图1B的peer中的上层接口getObj()获取元数据,还要调用图1B的peer中上层接口get()获取实际数据,那么getObj()和get()属于获取数据的上层接口。当然实际应用中,还可以包括对第一系统的用户身份信息,如用户在第一系统中的账户名和密码,进行身份验证的上层接口。
而对于第二系统,由于该文件是从第一系统迁移过来,通常情况下第二系统是没有相应文件夹的,那么需要调用图1B的peer中的mkRoot()建立目录,以及图1B的peer中的put()上传数据。那么mkRoot()和put()属于同步数据的上层接口。当然实际应用中,还可以包括对第二系统的用户身份信息,如用户在第二系统中的账户名和密码,进行身份验证的上层接口。
子步骤122,对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据。
如前述,在实际应用中,上层接口是通过抽象接口类调用第一系统的底层操作接口,以将第一系统的数据迁移至第二系统。在将第一系统的数据迁移至第二系统的过程中包括从第一系统中获取数据。此时,可以利用属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据。
在实际应用中,本申请实施例的服务器可以将第一系统的标识信息作为参数之一传给获取数据的上层接口,那么上层接口再调用抽象接口类,抽象接口类则可以根据该标识信息去调用第一系统的相应的底层操作接口。
在本申请的另一个优选的实施例中,子步骤122包括:
子步骤1221,对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口。
在实际应用中,对于属于获取数据的各上层接口中包括的各系统通用的接口,例如,getAllObjs(),rmAll(),可以称为第一上层接口。它们的实现是通过调用其它底层操作接口来实现的,因此对于属于获取数据的各上层接口中的第一上层接口,可以以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用。
例如,对于第一上层接口getAllObjs(),在抽象接口类中第一抽象类接口getAllObjs()是通过调用底层操作接口getObj()实现的,所以,此时可以直接将第一抽象类接口getAllObjs()作为底层操作接口调用,相当于调用了底层操作接口getObj()。
本申请实施例的服务器可以将第一系统的标识信息作为参数之一传给获取数据的上层接口,那么上层接口再调用抽象接口类,如果抽象接口类中有该上层接口对应的第一抽象类接口,则该第一抽象类接口可以根据该标识信息等参数执行。
子步骤1222,对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
而对于为各系统通用的各上层接口,可以称为第二上层接口,对于此类上层接口,则需要通过抽象接口类生成针对第一系统的第一接口类,然后在第一接口类中调用与各第二上层接口对应的底层操作接口。
本申请实施例的服务器可以将第一系统的标识信息作为参数之一传给获取数据的上层接口,那么上层接口再调用抽象接口类,如果抽象接口类中没有该上层接口对应的第一抽象类接口,则由抽象接口类根据该标识信息生成对应第一系统的第一接口类,然后在该第一接口类中调用上层接口对应的底层接口。
子步骤123,对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
如前述,在实际应用中,上层接口是通过抽象接口类调用第一系统的底层操作接口,以将第一系统的数据迁移至第二系统。在将第一系统的数据迁移至第二系统的过程中包括将从第一系统获取的数据同步至第二系统。此时,可以利用属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
在实际应用中,本申请实施例的服务器可以将第二系统的标识信息作为参数之一传给获取数据的上层接口,那么上层接口再调用抽象接口类,如果抽象接口类中没有对应该上层接口的第一抽象类接口,抽象接口类则可以根据该标识信息去调用第二系统的相应的底层操作接口。
在本申请实施例中,对于步骤122,在第一系统的获取数据的底层操作接口获取到需要迁移到第二系统的实质数据后,本申请实施例可以直接将该实质数据传给第二系统的同步数据的存储接口,从而可以实现两个存储系统内部的bucket间的迁移。比如,在调用第一系统的get()获取到数据后,直接将该数据传给第二系统的put(),其处理过程均在内存中进行,那么该数据则直接迁移到第二系统,不会存储到本地磁盘中。在实际应用中,本申请实施例可以设定一个第一函数监控get()是否获取到数据,如果获取到数据,则将该数据传给put()。在本申请实施例中,获取到数据的底层接口传输给同步数据的底层操作接口后,在获取到数据的底层接口和同步数据的底层操作之间架构了一个传输管道,用于传输两类接口之间的数据,其每份数据传输后,不会在本地存储,也不会累积到内存中。
在本申请的另一个优选的实施例中,子步骤123包括:
子步骤1231,对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口。
此时,将属于同步数据的各上层接口中各系统通用的上层接口称为第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用。本申请实施例的服务器可以将第二系统的标识信息作为参数之一传给获取数据的上层接口,那么上层接口再调用抽象接口类,如果抽象接口类中有该上层接口对应的第二抽象类接口,则该第二抽象类接口可以根据该标识信息等参数执行。该步骤与前述的步骤1221类似,在此不再赘述。
子步骤1232,对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
此时,将属于同步数据的各上层接口中不为各系统通用的上层接口称为第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口。在实际应用中,本申请实施例的服务器可以将第二系统的标识信息作为参数之一传给获取数据的上层接口,如果抽象接口类中没有对应该上层接口的第二抽象类接口,那么上层接口再调用抽象接口类,抽象接口类则可以根据该标识信息去调用第二系统的相应的底层操作接口。该步骤与前述的步骤1222类似,在此不再赘述。
在本申请的另一个优选的实施例中,在步骤120之后,还包括:
步骤130,判断将第一系统中的数据迁移至第二系统是否成功;如果失败,则重复执行步骤120,直至重试次数达到重试阈值或者在重试阈值内成功。
在实际应用中,在数据迁移的过程中可能会出现干扰或错误等,导致数据迁移不成功,所以在本申请实施例中,会判断将将第一系统中的数据迁移至第二系统是否成功,所谓迁移成功,是指将需要迁移指令中需要进行迁移的数据全部迁移至第二系统中。具体地,可以通过判断已经迁移的数据大小是否等于迁移指令中设定的数据大小,或者是其他现有的可用技术比较已经迁移的数据和迁移指令中设定的数据是否一致,对此本申请实施例不加以限定。
当然,判断将第一系统中的数据迁移至第二系统是否成功可以采用多种方式,比如:可以通过监控第一系统下载成功与否的通知,以及监控第二系统上层成功与否的通知,如果收到任意一个不成功的通知,则确认迁移失败。当然,还有其他方式,本申请实施例不对其加以限制。
而且,在本申请实施例中,可以设置一个重试阈值,如果重试的次数超过重试阈值仍未成功迁移,则放弃执行当前迁移任务,进而可以检查迁移不成功的原因。重试阈值可以根据需求设定,对此本申请实施例不加以限定。
在本申请的另一个优选的实施例中,在步骤120之后,还包括:
步骤140,判断是否接收到暂停指令;如果接收到暂停指令,则进入步骤150。
在数据迁移过程中,若因为某些原因需要暂停数据迁移,则此时可以发送暂停指令至执行迁移指令的服务器。所以,可以判断是否接收到暂停指令。
步骤150,暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置。
如果接收到暂停指令,则会暂停继续将第一系统的数据迁移至第二系统,同时,为了避免在再次开始将第一系统的数据迁移至第二系统时,又从初始情况开始,将第一系统中已经迁移至第二系统的数据再次重复迁移至第二系统,从而浪费时间,可以在暂停将第一系统的数据迁移至第二系统的同时,记录暂停时刻第一系统中已迁移的数据位置,以便从已迁移的数据位置开始,继续进行数据迁移。
在实际应用中,本申请实施例中,也可以调用暂停的上层接口,然后通过抽象接口类分别调用第一系统的暂停的底层操作接口和第二系统的暂停的底层操作接口,实现迁移暂停过程。
步骤160,判断是否接收到重启指令;如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新进入步骤120。
在接收到暂停指令之后,可以进一步判断判断是否接收到重启指令,如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新执行调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。此时第一系统的数据是指第一系统中的尚未被迁移至第二系统中的数据。
在实际应用中,本申请实施例中,也可以调用重启的上层接口,然后通过抽象接口类分别调用第一系统的重启的底层操作接口和第二系统的重启的底层操作接口,实现迁移暂停。
在本申请的另一个优选的实施例中,当第一系统为客户端文件系统时,在步骤110之前,还包括:
步骤100,在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
若第一系统为客户端文件系统,那么此时将客户端文件系统中的数据迁移至第二系统,可以理解为将客户端文件系统中的数据备份至第二系统。对于客户端而言,本申请为了实现客户端与各个系统之间是互通的,为了适应图1B的逻辑架构,本申请可以通过在客户端中安装应用程序,为客户提供服务。所以,在本申请实施例中,若第一系统为客户端文件系统,则首先在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口,如图1B中的local下的各个底层操作接口。进而,客户端用户可以通过访问应用程序,调用可编辑该应用程序对应的指定文件的各底层操作接口。
在本申请的另一个优选的实施例中,在步骤120之后,还包括:
步骤170,监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;如果出现变更,则进入步骤180。
在实际应用中,客户端的应用程序可能会被多个用户多次登录,而且在登录过程中,可以对客户端文件系统中的数据进行修改,如若客户端文件系统中的数据被变更,则相应地需要将变更部分更新至第二系统中。所以,针对客户端文件系统,可以监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更,如果出现变更,则需要将变更更新至第二系统中,具体地,可以调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
步骤180,调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
在本申请的另一个优选的实施例中,在子步骤122之后,还包括:
子步骤124,调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名。
在本申请实施例中,为了保证数据迁移前后的一致性,也即保证在执行完一次数据迁移任务,是将第一系统中的迁移数据完整的迁移至第二系统中,可以首先对第一系统中的需要进行迁移的数据进行签名,以标识需要迁移至第二系统的数据。具体地,可以调用签名的上层接口,并由签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名。可以在第一系统中对数据进行签名,也可以在将数据移出第一系统,且尚未同步至第二系统时,对数据进行签名,对此本申请实施例不加以限定。
进一步地,在子步骤123之后,还包括:
子步骤125,调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
理论上,若将需要迁移至第二系统中数据进行签名,则在数据迁移至第二系统后,可以对已迁移的数据进行签名验证。若签名验证成功,则表明已迁移至第二系统中的数据与第一系统中需要迁移至第二系统中的数据一致,而若签名验证不成功,例如已迁移至第二系统中的部分数据与其在第一系统中的签名不对应等情况,则表明此时迁移失败,可以重复执行步骤120,直至重试次数达到重试阈值或者在重试阈值内成功。
具体地,可以调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对数据进行签名验证。
在本申请的另一个优选的实施例中,在步骤120之后,还包括:
步骤190,针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表。
步骤1110,针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表。
步骤1120,比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
在本申请的另一个优选的实施例中,在子步骤121之后,还包括:
子步骤126,针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证。
子步骤127,针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
在本申请实施例中,可以接收将第一系统中的数据迁移至第二系统的迁移任务,所述第一系统和第二系统为多个系统中的任意两个系统,然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
从而实现了任意两个数据端可以进行双向的数据传输和迁移;其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
实施例二
参照图2,示出了本申请的一种数据迁移方法实施例的步骤流程图,具体可以包括如下步骤:
步骤210,接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统。
如图1A中的示例,用户可以选择其中的任意两个系统,将其中一个系统作为第一系统,另一个作为第二系统。
步骤220,确定属于获取数据的各上层接口,以及属于同步数据的各上层接口。
步骤230,由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据。
如图2C为本申请的一个数据迁移结构示意图。其由两大独立的组件构成:Master和Slave。Master主要负责扫描数据源和任务分发,Slave负责接收任务,并执行真正的数据迁移工作。Master包括扫描器(Scanner)、分发器(Dispatcher);Slave包括接收器(Receiver)、同步器(Syncer)。在本申请实施例中,可以称由扫描器、分发器构成的Master为管理组件,由接收器和同步器构成的Slave为工作组件。该结构既可以在单机环境运行,也支持分布式数据传输。在单机模式下,Master和Slave作为一个进程内的两个组件同时提供服务,而在分布式模式下,整个集群里面有一台服务器中同时存在Master和Slave,其余的服务器中只存在Slave;或者是集群里面有一台服务器中只存在Master,其余的服务器中只存在Slave。因为Master本身并不占用太多内存空间,所以Master和Slave可以共存于一个服务器中,以节省集群中的服务器成本。本申请实施例优选的采样集群的方式,即一个带Master+Slave的服务器和各个带Slave的服务器。
其中,扫描器负责遍历获取数据源的元数据(metadata),并存放到队列“Metadata Queue(元数据队列)”里面。Metadata作为实际存储数据的描述型数据,只包含一些基础信息,如:标识数据唯一性的Key、数据量大小、时间戳等。另外,在本申请另一个优选地实施例中,Metadata Queue可以为阻塞队列,阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取数据的操作将会被阻塞,或者当队列是满时,往队列里添加数据的操作会被阻塞。同样,试图往已满的阻塞队列中添加新数据的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来,如从队列中移除一个或者多个数据,或者完全清空队列。则在数据迁移的过程中,首先将元数据按序存放至阻塞队列,直至阻塞队列已满,然后依次将阻塞队列中的元数据移出并同步至第二系统,每移出一个元数据则相应地可以从第一系统中提取一个元数据存入阻塞队列,从而可以有效的均衡数据迁移的速度。
在本申请实施例中,管理组件的扫描器可以执行获取元数据的上层接口,进而获取元数据的上层接口可以通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取当前迁移任务对应的各元数据。
分发器负责从Scanner的Metadata Queue里面取出metadata,根据分发算法,把metadata作为任务派送给Slave组件的接收器(Receiver)。每分发一个任务都会进行记录,Slave完成一个任务后都会汇报给Master进行汇总,Master可以实时知道当前整个集群里面所有Slave节点的任务数和服务器负载情况。
其中,在单机模式下可以直接把任务分发给本机的Slave;而在分布式模式下Dispatcher的分发算法,可以如下:
如果数据小于1MB,就直接分发给本服务器的Slave。因为对于小数据而言,通过网络分发到其它服务器执行,所耗费的总时间还不如直接在本服务器执行。
服务器接收器负责接收来自Dispatcher分发的任务,存放在自己的Metadata Queue里面,等待处理。
同步器真正执行数据传输的组件。它不断地从Receiver的MetadataQueue里面获取要传输数据的metadata,放到不同的工作线程池里面执行传输任务。
其中,工作池线程是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。使用工作池线程的好处包括:减少在创建和销毁线程上所花的时间以及系统资源的消耗;如不使用线程池,有可能造成系统创建大量线程而导致消耗过多系统内存以及需要在不同线程之间“过度切换”。
在本申请实施例中,工作线程池(Work Thread Pool)可以有两个,一个负责处理比较小的数据,一次性可以完成整个元数据对应的文件的传输。另一个则负责处理比较大的数据,例如接收比较大的元数据对应的大文件的切片数据,对于大文件而言,需要把所有切片传输完成后,才能在第二系统中完成整个大文件的拼接还原,其中,可以预置一个阈值,若元数据小于该阈值,则由负责处理比较小的数据的工作线程池处理该元数据,若元数据不小于该阈值,则由负责处理比较大的数据的工作线程池处理该元数据。当然,工作线程池可以只有一个,对全部数据统一处理,例如若不对大文件进行切片处理,对此本申请实施例不加以限定。
如图2D为分布式模式数据迁移数据流示意图。其中,将云存储A中的数据迁移至云存储B,主要可以分为以下四步:
(1)Scanner扫描数据源“云存储A”,获取metadata。
(2)Dispatcher从Scanner获取metadata,根据分发算法派送给Slave的Receiver。
(3)Syncer从Receiver获取metadata,开始真正的数据传输。从数据源“云存储A”下载获取实际数据,不经过任何中间文件保存,直接上传到目的数据端“云存储B”,实现端到端的直接传输。
(4)Sycner把每个传输结果回传给Receiver,Receiver再汇报给Master的Dispatcher进行汇总处理。
在本申请另一个优选的实施例中,所述管理组件在集群的一台服务器中,所述工作组件在集群的各台服务器中。
在本申请另一个优选的实施例中,所述集群的各台服务器中之间采用JGroups通信协议传输数据。
JGroups由纯Java编写实现,是一个可靠的消息传播工具包。利用它可以简单地构建起一个多节点的通信集群,各个节点间可以互相通信,进行协作。利用JGroups,用户可以自己搭建一个对等节点网络,或者是Master-Slave的集群模式。
本申请的分布式集群,采用的是Master-Slave模式。利用JGroups的发现协议,只要预先在每个节点配置好Master节点的IP+端口地址,然后约定好一个统一的集群名称。先启动Master节点后,再依次启动各个Slave节点,这样每个Slave节点就都能发现找到Master节点并自动加入到这个集群里面。如果某个Slave节点退出,利用JGroups的FD(Failure detection)协议能够自动探测到该退出的Slave节点,并把该节点的信息从整个集群中移除。
在实际应用中,JGroups提供两种消息传播机制:
(1)字节流的消息直传。一个节点可以往另外一个节点发送字节(byte)流数据。这种模式一般需要发送端先把要传输的数据序列化成byte数组,然后在接收端再反序列化回数据。
(2)类方法的直接RPC(Remote Procedure Call Protocol,远程过程调用协议)调用。JGroups支持在一个节点直接远程调用另外一个节点里面某个类的方法,就跟普通的方法调用一样。这种方法可以避免对于消息的序列化处理,更加方便。
因此,本申请的Dispatcher和Receiver之间的数据传输就是通过JGroups的RPC功能来实现的。
步骤240,由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器。
同步任务是数据迁移任务的一种,同步任务中同样可以包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。其中的待迁移数据是指个元数据。
在本申请另一个优选的实施例中,步骤240,包括:
子步骤241,提取元数据中记录的数据量大小。
如前述,在各元数据中可以包含数据量大小的参数,因此,可以直接从元数据中提取其中记录的数据量大小。
子步骤242,如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器。
如果元数据中记录的数据量小于第一阈值,则说明该元数据不会给服务器增加过多的负载量,所以可以直接将该元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器。其中,第一阈值可以根据需求设定,对此本申请实施例不加以限定。
比如,如果数据小于1MB,Dispatcher就直接分发给本服务器的Slave的Receiver。因为对于小数据而言,通过网络分发到其它服务器执行,所耗费的总时间还不如直接在本服务器执行。
子步骤243,如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器。
对于分布式模式下的数据迁移,如果元数据记录的数据量不小于第一阈值,此时为了均衡集群中各服务器的负载量,即让各服务器的负载量不会相差太大,可以将该元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器。
比如,如果数据大于等于1MB,Dispatcher就将该数据分发给其他服务器的slave的Receiver。
在本申请另一个优选的实施例中,步骤240,包括:
子步骤241,提取元数据中记录的数据量大小。
子步骤242,如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器。
子步骤243,如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器。
在本申请实施例中,为了避免过大的元数据在传输的过程中效率太低,所以可以另外设置一个第二阈值,同样的,第二阈值可以根据需求设定,但是第二阈值必须大于第一阈值,对此本申请实施例不加以限定。
如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器。
子步骤244,如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片。
而若元数据中记录的数据量不小于第二阈值,则说明此时该元数据的数据量过大,为了保证数据迁移的速度,可以将该元数据对应的大文件进行切片处理,将大文件分为若干个较小的切片,相当于将元数据分为相应个数的数据切片。具体地,可以通过调用对大文件切片的上层接口,对大文件切片的上层接口可以通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片。
其中,可以将大文件分成若干个数据量大小相同的切片,也可以随机切成若干个数据量大小不完全相同的切片,但是需要保证各切片的数据量小于第二阈值,若其中存在数据量不小于第二阈值的切片,则需要对该切片再次进行分切。而且,每次切片的数量可以根据需求设定,对此本申请实施例不加以限定。
子步骤245,将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
在将元数据对应的大文件切片后,则可以对该元数据的不同切片的切片信息,也即各切片中包含的数据,生成不同的同步任务,然后可以按照当前集群中各服务器的负载从低到高的顺序,分别将各同步任务分发给负载从低到高,对应同步任务个数的服务器的工作组件的接收器。例如,若生成5个同步任务,则按照当前集群中各服务器的负载从低到高的顺序,选出负载最低的5个服务器,然后将5个同步任务分别分发到5个服务器的工作组件的接收器,使每个服务器的工作组件的接收器都接收到一个同步任务,且任意两个服务器的工作组件的接收器接收到的同步任务不为同一个同步任务。
其中,可以随机将5个同步任务分发到5个服务器的工作组件的接收器,也可以按照一定顺序,例如按照同步任务的数据量从大到小,服务器的负载从低到高的对应关系,将5个同步任务分发到5个服务器的工作组件的接收器,对此本申请实施例不加以限定。
步骤250,由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
在本申请实施例中,同步任务中包含了待迁移的元数据第一系统中的文件信息,但是同步任务中并不包含待迁移的元数据,也即当前同步任务所需要迁移的实际数据。同步任务所需要迁移的实际数据仍存储于第一系统中。所以,需要从第一系统中获取同步任务所需要迁移的实际数据,具体地,可以由负责执行该同步任务的服务器的工作组件的接收器在收到同步任务后,执行获取实际数据的上层接口,获取实际数据的上层接口即可以通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取迁移任务的实际数据,也即同步任务所需要迁移的实际数据。
步骤260,由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
在获取了同步任务对用需要迁移的实际数据之后,即可以将实际数据同步至第二系统,具体地,可以由工作组件的同步器执行同步数据的各上层接口,同步数据的各上层接口即可以通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
在本申请另一个优选的实施例中,步骤260,包括:
子步骤261,由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
为了调节数据迁移过程中的数据传输速度,在本申请实施例中,可以输入限速指令,其中包含需要可以接受的数据迁移过程中的数据传输速度,其可以为具体的限速数值,也可以为一个速度范围,进而可以由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,同步数据的各上层接口可以通过抽象接口类调用第二系统的底层操作接口,将所述实际数据按照限速数值的速度或者是以速度范围内的数据传输速递将实际数据同步至第二系统。其中,与限速指令相应的线程可以存在于前述的工作线程池中,也可以为另外创建的一个线程,对此本申请实施例不加以限定。
在本申请实施例中,可以接收将第一系统中的数据迁移至第二系统的迁移任务,所述第一系统和第二系统为多个系统中的任意两个系统,然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
从而实现了任意两个数据端可以进行双向的数据传输和迁移,包括数据端内部的bucket间迁移。其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
另外,本申请可以支持分布式数据传输,可以极大提升数据迁移的效率。比以第一系统和第二系统为两个地区的OSS为例,从一个地区OSS的一个bucket的数据传输到另一个地区的bucket中,测试方法采用普通网络路径,先从一个bucket下载出来,通过内网络链路,再上传存储到另外一个bucket。其传输采用分布式集群环境:阿里云杭州ECS(Elastic Compute Service,云服务器),单台服务器配置为4核CPU、4G内存、500Mbps内网带宽,总共5个节点。其测试示例图下表(一):
表(一)
其中,效率一列单位是MB/s(兆比特每秒)。
可以看到,随着数据规模的增加,本申请的分布式传输的效率优势更加明显,跟集群的节点规模成正比例关系。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
实施例三
参照图3,示出了本申请的一种数据迁移装置实施例的结构框图,具体可以包括如下模块:
任务接收模块310,适于接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统。
迁移模块320,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
在本申请另一个优选地实施例中,所述迁移模块320,包括:
上层接口确定子模块,适于确定属于获取数据的各上层接口,以及属于同步数据的各上层接口。
数据获取子模块,适于对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据。
数据同步子模块,适于对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
在本申请另一个优选地实施例中,所述数据获取子模块,包括:
第一底层操作接口确定子模块,适于对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口。
第一底层操作接口调用子模块,适于对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
在本申请另一个优选地实施例中,所述数据同步子模块,包括:
第二底层操作接口确定子模块,适于对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口。
第二底层操作接口调用子模块,适于对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
在本申请另一个优选地实施例中,在所述迁移模块320之后,还包括:
迁移判断模块,适于判断将第一系统中的数据迁移至第二系统是否成功;如果失败,则重复执行迁移模块,直至重试次数达到重试阈值或者在重试阈值内成功。
在本申请另一个优选地实施例中,在所述迁移模块320之后,还包括:
暂停指令判断模块,适于判断是否接收到暂停指令;如果接收到暂停指令,则进入暂停记录子模块。
暂停记录模块,适于暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置。
则进一步的,在所述暂停指令判断模块之后,还包括:
重启指令判断模块,适于判断是否接收到重启指令;如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新进入迁移模块。
在本申请另一个优选地实施例中,当第一系统为客户端文件系统时,在任务接收模块310之前,还包括:
应用程序安装模块300,适于在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
在本申请另一个优选地实施例中,在所述迁移模块320之后,还包括:
数据监控模块,适于监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;如果出现变更,则进入变更数据同步模块。
变更数据同步模块,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
在本申请另一个优选地实施例中,在所述数据获取子模块之后,还包括:
签名子模块,适于调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名。
进一步的,在所述数据同步子模块之后,还包括:
签名验证子模块,适于调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
在本申请另一个优选地实施例中,在所述迁移模块320之后,还包括:
第一文件列表获取模块,适于针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表。
第二文件列表获取模块,适于针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表。
差异提示模块,适于比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
在本申请另一个优选地实施例中,在所述上层接口确定子模块之后,还包括:
第一身份验证模块,适于针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证。
第二身份验证模块,适于针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
本申请实施例可以接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统,然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
首先,实现了任意两个数据端可以进行双向的数据传输和迁移,包括数据端内部的bucket间迁移。
其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
实施例四
参照图4,示出了本申请的一种数据迁移装置实施例的结构框图,具体可以包括如下模块:
任务接收模块410,适于接收将第一系统中的数据迁移至第二系统的迁移任务;所述第一系统和第二系统为多个系统中的任意两个系统。
迁移模块420,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。具体包括:
上层接口确定子模块421,适于确定属于获取数据的各上层接口,以及属于同步数据的各上层接口。
数据获取子模块422,适于对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据。具体包括:
元数据获取子模块4221,适于由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据。
任务分发子模块4222,适于由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器。
在本申请另一个优选地实施例中,所述任务分发子模块4222,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小。
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器。
第二元数据分发子模块,适于如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器。
在本申请另一个优选地实施例中,所述任务分发子模块4222,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小。
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器。
第三元数据分发子模块,适于如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器。
元数据切分子模块,适于如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片。
将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
实际数据获取子模块4223,适于由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
数据同步子模块423,适于对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。具体包括:
实际数据同步子模块4231,适于由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
在本申请另一个优选地实施例中,所述实际数据同步子模块4231,包括:
第一实际数据同步子模块,适于由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
在本申请实施例中,可以接收将第一系统中的数据迁移至第二系统的迁移任务,所述第一系统和第二系统为多个系统中的任意两个系统,然后调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
从而实现了任意两个数据端可以进行双向的数据传输和迁移,包括数据端内部的bucket间迁移。其次,本申请所述的数据迁移技术具有良好的扩展功能,可以实现将任意的数据终端,包括尚未支持数据迁移的云存储产品,如百度对象存储、金山对象存储,与其它任意一个数据端进行数据的双向传输迁移。
另外,本申请同时支持单机数据传输以及分布式数据传输,可以极大提升数据迁移的效率。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用同步介质(包括但不限于磁盘同步器、CD-ROM、光学同步器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性同步器,随机存取同步器(RAM)和/或非易失性内存等形式,如只读同步器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息同步。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的同步介质的例子包括,但不限于相变内存(PRAM)、静态随机存取同步器(SRAM)、动态随机存取同步器(DRAM)、其他类型的随机存取同步器(RAM)、只读同步器(ROM)、电可擦除可编程只读同步器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读同步器(CD-ROM)、数字多功能光盘(DVD)或其他光学同步、磁盒式磁带,磁带磁磁盘同步或其他磁性同步设备或任何其他非传输介质,可用于同步可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个服务器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可同步在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读同步器中,使得同步在该计算机可读同步器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据迁移方法和一种数据迁移装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (38)
1.一种数据迁移方法,其特征在于,包括:
接收将第一系统中的数据迁移至第二系统的迁移任务;
调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
2.根据权利要求1所述的方法,其特征在于,所述调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤,包括:
确定属于获取数据的各上层接口,以及属于同步数据的各上层接口;
对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据;
对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
3.根据权利要求2所述的方法,其特征在于,对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口的步骤,包括:
对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口;
对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
4.根据权利要求2或3所述的方法,其特征在于,对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口的步骤,包括:
对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口;
对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
5.根据权利要求2所述的方法,其特征在于,所述对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据的步骤,包括:
由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据;
由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器;
由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
6.根据权利要求5所述的方法,其特征在于,所述对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统的步骤,包括:
由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
7.根据权利要求5或6所述的方法,其特征在于,所述管理组件在集群的一台服务器中,所述工作组件在集群的各台服务器中。
8.根据权利要求7所述的方法,其特征在于,所述由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器的步骤,包括:
提取元数据中记录的数据量大小;
如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器;
9.根据权利要求7所述的方法,其特征在于,所述由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器的步骤,包括:
提取元数据中记录的数据量大小;
如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器;
如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片;
将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
10.根据权利要求8所述的方法,其特征在于,所述集群的各台服务器中之间采用JGroups通信协议传输数据。
11.根据权利要求6所述的方法,其特征在于,所述由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统的步骤,包括:
由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
12.根据权利要求1或2所述的方法,其特征在于,调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
判断将第一系统中的数据迁移至第二系统是否成功;
如果失败,则重复执行调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤,直至重试次数达到重试阈值或者在重试阈值内成功。
13.根据权利要求1或2所述的方法,其特征在于,在调用对应所述迁移任务的各上层接口,通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的过程中,还包括:
判断是否接收到暂停指令;
如果接收到暂停指令,则暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置;
则进一步的,在暂停将第一系统的数据迁移至第二系统之后,还包括:
判断是否接收到重启指令;
如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新调用对应所述迁移任务的各上层接口,通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤。
14.根据权利要求1或2所述的方法,其特征在于,当第一系统为客户端文件系统时,在接收将第一系统中的数据迁移至第二系统的迁移任务的步骤之前,还包括:
在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
15.根据权利要求14所述的方法,其特征在于,所述调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;
如果出现变更,则调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
16.根据权利要求2所述的方法,其特征在于,所述对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据的步骤之后,还包括:
调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名;
进一步的,对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统的步骤之后,还包括:
调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
17.根据权利要求1所述的方法,其特征在于,在调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统的步骤之后,还包括:
针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表;
针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表;
比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
18.根据权利要求2所述的方法,其特征在于,所述迁移任务由客户端发送,所述迁移任务包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。
19.根据权利要求18所述的方法,其特征在于,在确定属于获取数据的各上层接口,以及属于同步数据的各上层接口的步骤之后,还包括:
针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证;
针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
20.一种数据迁移装置,其特征在于,包括:
任务接收模块,适于接收将第一系统中的数据迁移至第二系统的迁移任务;
迁移模块,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将第一系统的数据迁移至第二系统。
21.根据权利要求20所述的装置,其特征在于,所述迁移模块,包括:
上层接口确定子模块,适于确定属于获取数据的各上层接口,以及属于同步数据的各上层接口;
数据获取子模块,适于对于属于获取数据的各上层接口,通过抽象接口类调用第一系统的底层操作接口,以从第一系统获取数据;
数据同步子模块,适于对于属于同步数据的各上层接口,通过抽象接口类调用第二系统的底层操作接口,以将从第一系统获取的数据同步至第二系统。
22.根据权利要求21所述的装置,其特征在于,所述数据获取子模块,包括:
第一底层操作接口确定子模块,适于对于属于获取数据的各上层接口中的第一上层接口,以抽象接口类中与第一上层接口对应的第一抽象类接口作为底层操作接口以直接调用;所述第一上层接口为各系统通用的接口;
第一底层操作接口调用子模块,适于对于属于获取数据的各上层接口中的第二上层接口,通过抽象接口类生成针对第一系统的第一接口类,在所述第一接口类中调用与各第二上层接口对应的底层操作接口;所述第二上层接口不为各系统通用的接口。
23.根据权利要求21或22所述的装置,其特征在于,所述数据同步子模块,包括:
第二底层操作接口确定子模块,适于对于属于同步数据的各上层接口中的第三上层接口,以抽象接口类中与第三上层接口对应的第二抽象类接口作为底层操作接口以直接调用;所述第三上层接口为各系统通用的接口;
第二底层操作接口调用子模块,适于对于属于同步数据的各上层接口中的第四上层接口,通过抽象接口类生成针对第二系统的第二接口类,在所述第二接口类中调用与各第四上层接口对应的底层操作接口;所述第四上层接口不为各系统通用的接口。
24.根据权利要求21所述的装置,其特征在于,所述数据获取子模块,包括:
元数据获取子模块,适于由管理组件的扫描器执行获取元数据的上层接口,所述获取元数据的上层接口通过抽象类接口调用第一系统的获取元数据的底层操作接口,从第一系统获取所述迁移任务对应的各元数据;
任务分发子模块,适于由管理组件的分发器,基于各元数据生成同步任务并分发给各工作组件的接收器;
实际数据获取子模块,适于由工作组件的接收器根据接收到同步任务,执行获取实际数据的上层接口,所述获取实际数据的上层接口通过抽象类接口调用第一系统的获取实际数据的底层获取接口,从第一系统获取所述迁移任务的实际数据。
25.根据权利要求24所述的装置,其特征在于,所述数据同步子模块,包括:
实际数据同步子模块,适于由工作组件的同步器执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
26.根据权利要求24或25所述的装置,其特征在于,所述管理组件在集群的一台服务器中,所述工作组件在集群的各台服务器中。
27.根据权利要求26所述的装置,其特征在于,所述任务分发子模块,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小;
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
第二元数据分发子模块,适于如果元数据记录的数据量不小于第一阈值,则将所述元数据作为同步任务分发给负载最小的服务器中的工作组件的接收器。
28.根据权利要求26所述的装置,其特征在于,所述任务分发子模块,包括:
数据量大小提取子模块,适于提取元数据中记录的数据量大小;
第一元数据分发子模块,适于如果元数据中记录的数据量小于第一阈值,直接将所述元数据作为同步任务分发给管理组件所在的服务器中的工作组件的接收器;
第三元数据分发子模块,适于如果元数据中记录的数据量不小于第一阈值但是小于第二阈值时,则将所述元数据生成同步任务分发给负载最小的服务器中的工作组件的接收器;
元数据切分子模块,适于如果元数据中记录的数据量不小于第二阈值时,则调用对大文件切片的上层接口,所述对大文件切片的上层接口通过抽象接口类调用第二系统的对大文件切片的底层操作接口,将所述元数据对应的大文件切片;
将对所述元数据的不同切片的切片信息生成同步任务,并分发给负载低的多个服务器的工作组件的接收器。
29.根据权利要求27所述的装置,其特征在于,所述集群的各台服务器中之间采用JGroups通信协议传输数据。
30.根据权利要求25所述的装置,其特征在于,所述实际数据同步子模块,包括:
第一实际数据同步子模块,适于由工作组件的同步器根据限速指令,调用与限速指令相应的线程执行同步数据的各上层接口,所述同步数据的各上层接口通过抽象接口类调用第二系统的底层操作接口,将所述实际数据同步至第二系统。
31.根据权利要求20或21所述的装置,其特征在于,在所述迁移模块之后,还包括:
迁移判断模块,适于判断将第一系统中的数据迁移至第二系统是否成功;如果失败,则重复执行迁移模块,直至重试次数达到重试阈值或者在重试阈值内成功。
32.根据权利要求20或21所述的装置,其特征在于,在所述迁移模块之后,还包括:
暂停指令判断模块,适于判断是否接收到暂停指令;如果接收到暂停指令,则进入暂停记录子模块;
暂停记录模块,适于暂停将第一系统的数据迁移至第二系统,并记录暂停时刻第一系统中已迁移的数据位置;
则进一步的,在所述暂停指令判断模块之后,还包括:
重启指令判断模块,适于判断是否接收到重启指令;如果接收到重启指令,则根据暂停时刻第一系统中已迁移的数据位置开始,重新进入迁移模块。
33.根据权利要求20或21所述的装置,其特征在于,当第一系统为客户端文件系统时,在任务接收模块之前,还包括:
应用程序安装模块,适于在客户端中安装应用程序,所述应用程序针对指定文件模拟各底层操作接口。
34.根据权利要求33所述的装置,其特征在于,在所述迁移模块之后,还包括:
数据监控模块,适于监控客户端文件系统是否与最近一次迁移到第二系统的数据出现变更;如果出现变更,则进入变更数据同步模块;
变更数据同步模块,适于调用对应所述迁移任务的各上层接口,并由各上层接口通过抽象接口类调用第一系统和第二系统的底层操作接口,以将客户端文件系统的变更数据同步至第二系统。
35.根据权利要求21所述的装置,其特征在于,在所述数据获取子模块之后,还包括:
签名子模块,适于调用签名的上层接口,并由所述签名的上层接口调用第一系统的签名的底层操作接口,对所述数据进行签名;
进一步的,在所述数据同步子模块之后,还包括:
签名验证子模块,适于调用签名认证的上层接口,并由所签名认证的上层接口调用第二系统的签名认证的底层操作接口,对所述数据进行签名验证。
36.根据权利要求20所述的装置,其特征在于,在所述迁移模块之后,还包括:
第一文件列表获取模块,适于针对第一系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第一系统的底层操作接口,获取第一系统的文件列表;
第二文件列表获取模块,适于针对第二系统调用文件列表的上层接口,并由所述调用文件列表的上层接口通过抽象接口类调用第二系统的底层操作接口,获取第二系统的文件列表;
差异提示模块,适于比较第一系统的文件列表和第二系统的文件列表,并将两者之间的差异提示给客户端。
37.根据权利要求21所述的装置,其特征在于,所述迁移任务由客户端发送,所述迁移任务包括第一系统的标识信息、用户在第一系统的身份信息、待迁移数据在第一系统中的文件信息、第二系统的标识信息、用户在第二系统的身份信息。
38.根据权利要求37所述的装置,其特征在于,在所述上层接口确定子模块之后,还包括:
第一身份验证模块,适于针对第一系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第一系统的底层操作接口,对用户在第一系统的身份信息进行验证;
第二身份验证模块,适于针对第二系统调用身份验证的上层接口,并由所述身份验证的上层接口通过抽象接口类调用第二系统的底层操作接口,对用户在第二系统的身份信息进行验证。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610202889.0A CN107291750B (zh) | 2016-03-31 | 2016-03-31 | 一种数据迁移方法和装置 |
TW106105966A TWI739804B (zh) | 2016-03-31 | 2017-02-22 | 資料遷移方法和裝置 |
PCT/CN2017/077722 WO2017167100A1 (zh) | 2016-03-31 | 2017-03-22 | 一种数据迁移方法和装置 |
US16/147,376 US11354283B2 (en) | 2016-03-31 | 2018-09-28 | Data migration method and apparatus |
US17/659,448 US11940965B2 (en) | 2016-03-31 | 2022-04-15 | Data migration method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610202889.0A CN107291750B (zh) | 2016-03-31 | 2016-03-31 | 一种数据迁移方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291750A true CN107291750A (zh) | 2017-10-24 |
CN107291750B CN107291750B (zh) | 2020-11-06 |
Family
ID=59963473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610202889.0A Active CN107291750B (zh) | 2016-03-31 | 2016-03-31 | 一种数据迁移方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11354283B2 (zh) |
CN (1) | CN107291750B (zh) |
TW (1) | TWI739804B (zh) |
WO (1) | WO2017167100A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021647A (zh) * | 2017-11-30 | 2018-05-11 | 郑州云海信息技术有限公司 | 一种文件迁移方法、系统、介质及设备 |
CN109358899A (zh) * | 2018-12-05 | 2019-02-19 | 江苏风云科技服务有限公司 | 共享货架中资源版本的更新方法及装置 |
CN110413418A (zh) * | 2019-06-25 | 2019-11-05 | 北京三快在线科技有限公司 | 缓存同步装置及方法,缓存同步系统、电子设备 |
CN111459415A (zh) * | 2020-04-15 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 跨云数据迁移方法、装置、设备及存储介质 |
CN112019585A (zh) * | 2019-05-31 | 2020-12-01 | 北京车和家信息技术有限公司 | 云存储管理方法、系统、电子设备及计算机可读存储介质 |
CN112073811A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种文件传输调度方法及显示设备 |
CN112905984A (zh) * | 2021-03-09 | 2021-06-04 | 浙江网商银行股份有限公司 | 权限控制方法、装置及电子设备 |
CN114579180A (zh) * | 2022-04-28 | 2022-06-03 | 北京聚通达科技股份有限公司 | 数据迁移的方法、装置、电子设备及存储介质 |
CN115134349A (zh) * | 2022-06-06 | 2022-09-30 | 蚂蚁区块链科技(上海)有限公司 | 一种执行传输任务的方法及装置 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291750B (zh) | 2016-03-31 | 2020-11-06 | 阿里巴巴集团控股有限公司 | 一种数据迁移方法和装置 |
WO2021243339A1 (en) * | 2020-05-29 | 2021-12-02 | Pollen, Inc. | Rerouting resources for management platforms |
US11954532B2 (en) | 2020-05-29 | 2024-04-09 | Pollen, Inc. | Reconciling resource management platforms |
CN113312147B (zh) * | 2021-06-11 | 2022-12-30 | 中国科学技术大学 | 一种对象存储跨集群海量数据迁移方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079902A (zh) * | 2007-06-29 | 2007-11-28 | 清华大学 | 海量数据分级存储方法 |
CN101282345A (zh) * | 2008-03-03 | 2008-10-08 | 北京航空航天大学 | 一种基于形式化描述和状态迁移的xml转换方法 |
US20120284233A1 (en) * | 2011-05-05 | 2012-11-08 | Hitachi, Ltd. | Method and apparatus of data protection |
CN103052938A (zh) * | 2010-10-14 | 2013-04-17 | 株式会社日立制作所 | 数据迁移系统和数据迁移方法 |
US20130218901A1 (en) * | 2012-02-16 | 2013-08-22 | Apple Inc. | Correlation filter |
CN103605728A (zh) * | 2013-11-18 | 2014-02-26 | 浪潮(北京)电子信息产业有限公司 | 一种数据分级存储方法及系统 |
CN104424283A (zh) * | 2013-08-30 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种数据迁移的系统和数据迁移的方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249866B1 (en) * | 1997-09-16 | 2001-06-19 | Microsoft Corporation | Encrypting file system and method |
GB0011954D0 (en) * | 2000-05-17 | 2000-07-05 | Univ Surrey | Protocol stacks |
US20040098419A1 (en) * | 2002-11-18 | 2004-05-20 | International Business Machines Corporation | Method and apparatus for a migration assistant |
US7805583B1 (en) * | 2003-04-23 | 2010-09-28 | Emc Corporation | Method and apparatus for migrating data in a clustered computer system environment |
US7448022B1 (en) * | 2004-02-10 | 2008-11-04 | Prasad Ram | Dynamic software composition in a component-based software system |
US7624283B2 (en) * | 2006-02-13 | 2009-11-24 | International Business Machines Corporation | Protocol for trusted platform module recovery through context checkpointing |
JP5331555B2 (ja) * | 2009-04-23 | 2013-10-30 | 株式会社日立製作所 | データ移行システムおよびデータ移行方法 |
JP5284905B2 (ja) * | 2009-08-12 | 2013-09-11 | 富士通株式会社 | データ移行方法、及びプログラム |
WO2011126902A2 (en) * | 2010-03-30 | 2011-10-13 | Exoprise Systems Inc. | Systems and methods for selecting an alternative computing infrastructure and facilitating the migration and adoption thereto |
CN103019614B (zh) * | 2011-09-23 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 分布式存储系统管理装置及方法 |
CN103856724B (zh) * | 2012-12-05 | 2017-03-29 | 成都索贝数码科技股份有限公司 | 一种制作应急系统 |
US9098364B2 (en) * | 2013-07-09 | 2015-08-04 | Oracle International Corporation | Migration services for systems |
US9461969B2 (en) * | 2013-10-01 | 2016-10-04 | Racemi, Inc. | Migration of complex applications within a hybrid cloud environment |
US10313243B2 (en) * | 2015-02-24 | 2019-06-04 | Commvault Systems, Inc. | Intelligent local management of data stream throttling in secondary-copy operations |
WO2016138474A1 (en) * | 2015-02-26 | 2016-09-01 | Bittitan, Inc. | Data migration systems and methods including archive migration |
US10324914B2 (en) * | 2015-05-20 | 2019-06-18 | Commvalut Systems, Inc. | Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files |
US10157196B2 (en) * | 2015-08-12 | 2018-12-18 | Salesforce.Com, Inc. | Intra-platform data migration |
US10331656B2 (en) * | 2015-09-25 | 2019-06-25 | Microsoft Technology Licensing, Llc | Data migration validation |
US10496291B2 (en) * | 2015-12-18 | 2019-12-03 | Sap Se | Maintaining data integrity during data migration |
CN107291750B (zh) | 2016-03-31 | 2020-11-06 | 阿里巴巴集团控股有限公司 | 一种数据迁移方法和装置 |
-
2016
- 2016-03-31 CN CN201610202889.0A patent/CN107291750B/zh active Active
-
2017
- 2017-02-22 TW TW106105966A patent/TWI739804B/zh active
- 2017-03-22 WO PCT/CN2017/077722 patent/WO2017167100A1/zh active Application Filing
-
2018
- 2018-09-28 US US16/147,376 patent/US11354283B2/en active Active
-
2022
- 2022-04-15 US US17/659,448 patent/US11940965B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101079902A (zh) * | 2007-06-29 | 2007-11-28 | 清华大学 | 海量数据分级存储方法 |
CN101282345A (zh) * | 2008-03-03 | 2008-10-08 | 北京航空航天大学 | 一种基于形式化描述和状态迁移的xml转换方法 |
CN103052938A (zh) * | 2010-10-14 | 2013-04-17 | 株式会社日立制作所 | 数据迁移系统和数据迁移方法 |
US20120284233A1 (en) * | 2011-05-05 | 2012-11-08 | Hitachi, Ltd. | Method and apparatus of data protection |
US20130218901A1 (en) * | 2012-02-16 | 2013-08-22 | Apple Inc. | Correlation filter |
CN104424283A (zh) * | 2013-08-30 | 2015-03-18 | 阿里巴巴集团控股有限公司 | 一种数据迁移的系统和数据迁移的方法 |
CN103605728A (zh) * | 2013-11-18 | 2014-02-26 | 浪潮(北京)电子信息产业有限公司 | 一种数据分级存储方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021647A (zh) * | 2017-11-30 | 2018-05-11 | 郑州云海信息技术有限公司 | 一种文件迁移方法、系统、介质及设备 |
CN108021647B (zh) * | 2017-11-30 | 2020-10-16 | 苏州浪潮智能科技有限公司 | 一种文件迁移方法、系统、介质及设备 |
CN109358899B (zh) * | 2018-12-05 | 2021-07-30 | 江苏风云科技服务有限公司 | 共享货架中资源版本的更新方法及装置 |
CN109358899A (zh) * | 2018-12-05 | 2019-02-19 | 江苏风云科技服务有限公司 | 共享货架中资源版本的更新方法及装置 |
CN112019585A (zh) * | 2019-05-31 | 2020-12-01 | 北京车和家信息技术有限公司 | 云存储管理方法、系统、电子设备及计算机可读存储介质 |
CN112073811B (zh) * | 2019-06-10 | 2023-02-28 | 海信视像科技股份有限公司 | 一种文件传输调度方法及显示设备 |
CN112073811A (zh) * | 2019-06-10 | 2020-12-11 | 海信视像科技股份有限公司 | 一种文件传输调度方法及显示设备 |
CN110413418B (zh) * | 2019-06-25 | 2022-04-05 | 北京三快在线科技有限公司 | 缓存同步装置及方法,缓存同步系统、电子设备 |
CN110413418A (zh) * | 2019-06-25 | 2019-11-05 | 北京三快在线科技有限公司 | 缓存同步装置及方法,缓存同步系统、电子设备 |
CN111459415A (zh) * | 2020-04-15 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 跨云数据迁移方法、装置、设备及存储介质 |
CN112905984A (zh) * | 2021-03-09 | 2021-06-04 | 浙江网商银行股份有限公司 | 权限控制方法、装置及电子设备 |
CN114579180A (zh) * | 2022-04-28 | 2022-06-03 | 北京聚通达科技股份有限公司 | 数据迁移的方法、装置、电子设备及存储介质 |
CN115134349A (zh) * | 2022-06-06 | 2022-09-30 | 蚂蚁区块链科技(上海)有限公司 | 一种执行传输任务的方法及装置 |
CN115134349B (zh) * | 2022-06-06 | 2024-02-23 | 蚂蚁区块链科技(上海)有限公司 | 一种执行传输任务的方法、装置、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107291750B (zh) | 2020-11-06 |
US20190034422A1 (en) | 2019-01-31 |
US11940965B2 (en) | 2024-03-26 |
US20220245101A1 (en) | 2022-08-04 |
TW201741901A (zh) | 2017-12-01 |
WO2017167100A1 (zh) | 2017-10-05 |
US11354283B2 (en) | 2022-06-07 |
TWI739804B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291750A (zh) | 一种数据迁移方法和装置 | |
US10565086B2 (en) | Service modeling and virtualization | |
CN107395659A (zh) | 一种业务受理及共识的方法及装置 | |
CN109120678A (zh) | 用于分布式存储系统的服务托管的方法和装置 | |
CN108351806A (zh) | 分布式基于流的数据库触发器 | |
US11188561B2 (en) | Prioritizing microservices on a container platform for a restore operation | |
CN105306585B (zh) | 一种多数据中心的数据同步方法 | |
CN106302806A (zh) | 一种数据同步方法、系统、同步获取方法及相关装置 | |
CN111124277A (zh) | 一种深度学习数据集缓存方法、系统、终端及存储介质 | |
CN107040578A (zh) | 数据同步方法、装置和系统 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US10911314B2 (en) | Systems and methods for determining entry points for mapping a network | |
CN113315754B (zh) | 容器出访防火墙智能联动方法及装置、设备、介质 | |
CN111338893A (zh) | 进程日志处理方法、装置、计算机设备以及存储介质 | |
CN105553732B (zh) | 一种分布式网络模拟方法及系统 | |
CN104793981B (zh) | 一种虚拟机集群的在线快照管理方法及装置 | |
CN109902028A (zh) | Acl特性的自动化测试方法、装置、设备及存储介质 | |
CN110417741A (zh) | 一种过滤安全组的方法和装置 | |
CN108170508A (zh) | 批量创建虚拟机的方法、装置、设备及其存储介质 | |
CN103501251B (zh) | 断网情况下的数据包处理方法及装置 | |
CN103034584A (zh) | 测试分布式锁的方法和装置 | |
CN115293365A (zh) | 机器学习模型的管理方法、装置、管理平台和存储介质 | |
CN111104404B (zh) | 基于分布式对象的数据存储方法及装置 | |
CN113407629A (zh) | 数据同步的方法、装置、电子设备及存储介质 | |
CN107040564A (zh) | 云存储的数据同步方法、数据同步服务器及云存储系统 |
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 |