CN110209344A - 迁移对象存储的方法、装置和计算机可读存储介质 - Google Patents

迁移对象存储的方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN110209344A
CN110209344A CN201810832304.2A CN201810832304A CN110209344A CN 110209344 A CN110209344 A CN 110209344A CN 201810832304 A CN201810832304 A CN 201810832304A CN 110209344 A CN110209344 A CN 110209344A
Authority
CN
China
Prior art keywords
storage
migration
name
interface
object name
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
Application number
CN201810832304.2A
Other languages
English (en)
Other versions
CN110209344B (zh
Inventor
刘畅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810832304.2A priority Critical patent/CN110209344B/zh
Publication of CN110209344A publication Critical patent/CN110209344A/zh
Application granted granted Critical
Publication of CN110209344B publication Critical patent/CN110209344B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于云存储/计算领域,公开了一种迁移对象存储的方法、装置和计算机可读存储介质,以降低对象存储服务迁移时的各项成本。所述方法包括:将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,将各种迁移任务分别封装一个对应的任务类;调用遍历接口,以获取对象名;访问迁移任务队列;根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储迁移对象名对应的对象。本发明提供的技术方案一方面最大程度地实现了开发迁移工具时代码的复用,从而大大降低了开发成本;另一方面降低了用户学习、使用迁移工具的成本。

Description

迁移对象存储的方法、装置和计算机可读存储介质
技术领域
本发明涉及云存储/计算领域,尤其涉及一种迁移对象存储的方法、装置和计算机可读存储介质。
背景技术
对象存储服务是指提供对象存储的服务,目前广泛应用于云计算或云存储领域。所谓对象存储(Object Storage),是相对于传统的块存储和文件存储而言的一种新型的网络存储架构,从其特征而言,对象存储是支持海量用户远程访问的无限容量廉价存储系统。对象存储的基本单位是对象,一个对象实际上就是文件的数据和一组属性信息(即元数据Meta Data)的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等。目前主流的对象存储服务包括亚马逊提供的对象存储服务S3、阿里云提供的对象存储服务OSS以及腾讯云提供的对象存储服务COS等,而在各种对象存储服务之间进行数据迁移则是用户可能需要频繁执行的业务操作。
现有的一种迁移对象存储方法是针对每个对象存储服务提供一个迁移工具,如此,有多少对象存储服务就需要提供多少相应的对象存储服务迁移工具。例如,若要将阿里云的OSS迁移至七牛存储服务,则要开发一套支持将阿里云的OSS迁移至七牛存储服务的迁移工具,若要将阿里云的OSS迁移至腾讯云的COS,则又需要针对性地开发一套支持将阿里云的OSS迁移至腾讯云的COS的迁移工具。
显然,针对不同的对象存储服务,上述的对象存储服务迁移方案缺乏一定的通用性,从而导致迁移工具的开发方开发成本和用户学习、使用成本的攀升。
发明内容
本发明实施例的主要目的在于提供一种迁移对象存储的方法、装置和计算机可读存储介质,以降低对象存储服务迁移时的各项成本。
为实现上述目的,本发明实施例第一方面提供迁移对象存储的方法,所述方法包括:
将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
调用所述遍历接口,以获取所述对象名;
访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
为实现上述目的,本发明实施例第二方面提供迁移对象存储的装置,所述装置包括:
第一封装模块,用于将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
第二封装模块,用于将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
第一调用单元,用于调用所述遍历接口,以获取所述对象名;
访问单元,用于访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
第二调用单元,用于根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
为实现上述目的,本发明实施例第三方面提供一种计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下方法的步骤:
将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
调用所述遍历接口,以获取所述对象名;
访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
为实现上述目的,本发明实施例第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下方法的步骤:
将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
调用所述遍历接口,以获取所述对象名;
访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
从上述本发明实施例提供的技术方案可知,一方面,与现有技术需要针对每种对象存储服务都开发一套迁移工具相比,本发明提供的技术方案由于对不同的对象存储服务和迁移任务进行了封装,屏蔽了不同对象存储服务或不同迁移任务的差异性,开发人员只需按照封装后的对象存储服务提供的遍历接口、下载接口和/或上传接口进行简单的配置文件的修改或接口的调用,即可实现不同对象存储服务的迁移,最大程度地实现了代码的复用,从而大大降低了开发成本;另一方面,由于对迁移任务和对象存储服务进行了封装,用户在使用迁移工具针对不同的对象存储服务进行对象存储的迁移时,并不会因为对象存储服务的不同感受到使用的差异,给用户的使用体验是一致的,从而降低了用户学习、使用迁移工具的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的计算设备的结构框图;
图2为本发明实施例提供的迁移对象存储的方法的流程图;
图3为本发明实施例提供的迁移对象存储的装置的结构框图;
图4为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图5为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图6为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图7-a为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图7-b为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图7-c为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图7-d为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图8-a为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图8-b为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图8-c为本发明另一实施例提供的迁移对象存储的装置的结构框图;
图8-d为本发明另一实施例提供的迁移对象存储的装置的结构框图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了一种计算设备的结构框图。本发明实施例提供的迁移对象存储的方法可应用于如图1所示的计算设备10中,计算设备10可以但不限于包括:需依靠电池维持正常运行且支持网络及下载功能的智能手机、笔记本、平板电脑、穿戴智能设备、个人电脑、服务器等。
如图1所示,计算设备10包括存储器101、存储控制器102,一个或多个(图中仅示出一个)处理器103、外设接口104、射频模块105、按键模块106、音频模块107以及触控屏幕108。这些组件通过一条或多条通讯总线/信号线109相互通讯。
可以理解,图1所示的结构仅为示意,其并不对计算设备的结构造成限定。计算设备10还可包括比图1所示更多或者更少的组件,或者具有与图1所示不同的配置。图1所示的各组件可以采用硬件、软件或其组合实现。
存储器101可用于存储软件程序以及模块,如本发明实施例中的迁移对象存储的方法及计算设备对应的程序指令/模块,处理器103通过运行存储在存储器101内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的迁移对象存储的方法。例如,该方法包括:将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;调用所述遍历接口,以获取所述对象名;访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。进一步地,所述根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储获取对象名对应的对象,包括:若迁移任务队列为空,则调用下载接口以传入对象名;根据传入的对象名,从源对象存储下载对象名对应的对象至本地。进一步地,所述根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储获取对象名对应的对象,包括:若迁移任务队列为满,则调用上传接口以传入对象名;根据传入的对象名,将对象名对应的对象上传至目标对象存储。进一步地,所述根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储获取对象名对应的对象,包括:若迁移任务队列为空,则调用下载接口以传入对象名;根据传入的对象名,从源对象存储下载对象名对应的对象;访问迁移任务队列;若迁移任务队列为满,则调用上传接口以传入对象名,根据传入的对象名,将已下载对象上传至目标对象存储。进一步地,所述方法还包括:对从对象存储和/或向对象存储获取对象名对应的对象进行记录。进一步地,所述封装后的迁移任务还包含对象存储服务中对象的对应文件的长度,方法还包括:根据文件的长度,对迁移的对象的完整度进行校验。
存储器101可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器101可进一步包括相对于处理器103远程设置的存储器,这些远程存储器可以通过网络连接至计算设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理器103以及其他可能的组件对存储器101的访问可在存储控制器102的控制下进行。
外设接口104将各种输入/输入装置耦合至CPU以及存储器101。处理器103运行存储器101内的各种软件、指令以执行计算设备10的各种功能以及进行数据处理。
在一些实施例中,外设接口104,处理器103以及存储控制器102可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
射频模块105用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。射频模块105可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。射频模块105可与各种网络如互联网、企业内部网、预置类型的无线网络进行通讯或者通过预置类型的无线网络与其他设备进行通讯。上述的预置类型的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的预置类型的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(Global System for MobileCommunication,GSM),增强型移动通信技术(Enhanced Data GSM Environment,EDGE),宽带码分多址技术(Wideband Code Division Multiple Access,W-CDMA),码分多址技术(Code Division Access,CDMA),时分多址技术(Time Division Multiple Access,TDMA),蓝牙,无线保真技术(Wireless-Fidelity,WiFi)(如美国电气和电子工程师协会标准IEEE802.11a、IEEE 802.11b、IEEE802.11g和/或IEEE 802.11n),网络电话(Voice overInternet Protocal,VoIP),全球微波互联接入(Worldwide Interoperability forMicrowave Access,Wi-Max),其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议。
按键模块106提供用户向计算设备进行输入的接口,用户可以通过按下不同的按键以使计算设备10执行不同的功能。
音频模块107向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。音频电路从外设接口104处接收声音数据,将声音数据转换为电信息,将电信息传输至扬声器。扬声器将电信息转换为人耳能听到的声波。音频电路还从麦克风处接收电信息,将电信号转换为声音数据,并将声音数据传输至外设接口104中以进行进一步的处理。音频数据可以从存储器101处或者通过射频模块105获取。此外,音频数据也可以存储至存储器101中或者通过射频模块105进行发送。在一些实例中,音频模块107还可包括一个耳机播孔,用于向耳机或者其他设备提供音频接口。
触控屏幕108在计算设备与用户之间同时提供一个输出及输入界面。具体地,触控屏幕108向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频、及其任意组合。一些输出结果是对应于一些用户界面对象。触控屏幕108还接收用户的输入,例如用户的点击、滑动等手势操作,以便用户界面对象对这些用户的输入做出响应。检测用户输入的技术可以是基于电阻式、电容式或者其他任意可能的触控检测技术。触控屏幕108显示单元的具体实例包括但并不限于液晶显示器或发光聚合物显示器。
基于上述计算设备,本发明实施例提供的一种迁移对象存储的方法的流程图如附图2所示,主要包括如下步骤S201至S205,详细说明如下:
S201,将各种对象存储服务分别封装一个对应的服务类,封装的服务类包括公共接口,其中,公共接口包括遍历接口和传输接口,传输接口包括下载接口和/或上传接口。
在本发明实施例中,将各种对象存储服务分别封装一个对应的服务类(class),实际上是屏蔽了各种不同对象存储服务的差异性。封装后的对象存储服务,其对应的服务类所提供的遍历接口、下载接口和/或上传接口是对各种不同对象存储服务的共性的一种提取,即各种对象存储服务在被封装为对应的服务类后,对外提供具有普适性的遍历接口、下载接口和/或上传接口,不因对象存储服务的不同,对外呈现的遍历接口有所不同、对外呈现的下载接口有所不同或者对外呈现的上传接口有所不同。
至于具体的封装方法,若采用面向对象的编程方法,可以采用基类来封装所有对象存储服务的共性,将其抽象为一个带有若干配置项的容器,容器内包含的是文件,即对象存储服务中的对象。
S202,将各种迁移任务分别封装一个对应的任务类,其中,封装的任务类包含对象存储服务中对象的对象名。
迁移任务即迁移对象存储中对象的任务,一个迁移任务被封装为一个对应的任务类(class)后,其可被所有对象存储服务识别,封装后的迁移任务所对应的任务类至少包含对象存储服务中对象的对象名这一属性。在本发明实施例中,对象名用于描述哪个对象要被迁移,所有的对象都为“foo/bar/a.txt”这种形式,在前述实施例的封装对象存储服务的具体实现中,根据每个对象存储服务的特殊需求来映射到对应的文件。
S203,调用遍历接口,以获取对象存储服务中对象的对象名。
在本发明实施例中,所有被封装的对象存储服务所对应的服务类都通过遍历接口来枚举所包含的文件。因为一个对象存储服务可以存储海量的文件,若直接将所有文件全量的加载到内存中,或者写到本地文件中,则整个迁移对象存储的性能较低且不灵活,因此,在本发明实施例中,可以在遍历接口处使用迭代器(iterator)模式来实现流式的访问海量文件列表,换言之,当调用遍历接口时,仅仅是获取对象名,但不去获知该对象名对应对象的内部表示,例如,该对象具体包含的内容是什么,等等。
S204,访问迁移任务队列,其中,迁移任务队列的访问基于生产者/消费者模型的机制。
所谓基于生产者/消费者模型的机制,是一种等待/通知机制,描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是缓冲区空时消费者不能消费,缓冲区满时生产者不能生产。生产者/模型作为一种重要的模型,它的优点在于解耦。这是因为多了一个缓冲区,生产者和消费者并不直接相互调用,如此,生产者和消费者的代码发生变化,都不会对对方产生影响,即,将生产者和消费者之间的强耦合解开,变为了生产者和缓冲区之间以及消费者和缓冲区之间的弱耦合。此外,该模型的另一优点是通过平衡生产者和消费者的处理能力来提高整体处理数据的速度。若消费者直接从生产者拿数据,如果生产者生产的速度很慢,但消费者消费的速度很快,则消费者就得占用CPU的时间片白白等在那边。有了生产者/消费者模型,生产者和消费者就是两个独立的并发体,生产者将生产出来的数据置入缓冲区而不必管消费者;消费者类似,只需从缓冲区去取数据而不必管生产者,缓冲区满了就不生产,缓冲区空了就不消费,使生产者/消费者的处理能力达到一个动态的平衡。
在本发明实施例中,迁移任务队列就相当于上述生产者/消费者模型中的缓冲区,其中缓存的是迁移任务。源对象存储即相当于上述生产者/消费者模型中的生产者,目标对象存储就相当于上述生产者/消费者模型中的消费者。
S205,根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储迁移对象名对应的对象。
采用访问机制基于生产者/消费者模型的迁移任务队列,作为整个系统多个组件的桥梁,使得整个系统的结构清晰,拓展方便。当迁移任务队列为内存实现的单机消息队列时,本发明实现的对象存储迁移工具就是高性能的单机版迁移工具,安装与使用极其简单。当需要迁移大量的文件时,则可以使用无修改的使用独立的分布式消息队列,本发明实现的对象存储迁移工具就成为了一个高性能的多机版的分布式服务。
作为本发明一个实施例,根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储获取对象名对应的对象可以包括步骤Sa1和Sa2
Sa1,若迁移任务队列未满,则调用下载接口以传入对象名。
本实施例中,传入到下载接口的对象名是调用遍历接口所获取的对象名。如前所述,迁移任务队列的访问基于生产者/消费者模型,因此,只有在迁移任务队列未满,即迁移任务队列还有存储的空间时,调用下载接口传入对象名才可从源对象存储下载对象。
Sa2,根据传入的对象名,从源对象存储下载对象名对应的对象。
若不考虑对象的上传,上述步骤Sa1和Sa2提供的实施例,其应用场景可以是将对象存储向本地迁移,即,将对象存储的对象下载至本地。
作为本发明一个实施例,根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储迁移对象名对应的对象可以包括步骤Sb1和Sb2
Sb1,若迁移任务队列未空,则调用上传接口以传入对象名。
本实施例中,传入到上传接口的对象名是调用遍历接口所获取的对象名。如前所述,迁移任务队列的访问基于生产者/消费者模型,因此,迁移任务队列未空,即迁移任务队列还有迁移任务时,调用上传接口传入对象名才可向目标对象存储上传对象。
Sb2,根据传入的对象名,将对象名对应的对象上传至目标对象存储。
若不考虑对象的下载,上述步骤Sb1和Sb2提供的实施例,其应用场景可以是将本地对象向对象存储迁移,即,将本地的对象上传至对象存储。
作为本发明一个实施例,根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储迁移对象名对应的对象可以包括步骤Sc1至Sc5
Sc1,若迁移任务队列未满,则调用下载接口以传入对象名。
Sc2,根据传入的对象名,从源对象存储下载对象名对应的对象。
Sc3,访问迁移任务队列。
Sc4,若迁移任务队列未空,则调用上传接口以传入对象名;
Sc5,根据传入的对象名,将对象名对应的对象上传至目标对象存储。
参照上述实施例对步骤Sa1、Sa2、Sb1和Sb2的说明,显然,步骤Sc1至Sc5的应用场景是对象存储之间对象的迁移,即,将对象从作为源对象存储的对象存储迁移至作为目标对象存储的对象存储。
在上述本发明实施例中,还包括对从对象存储和/或向对象存储迁移的对象名对应的对象进行记录,如此,可以在迁移过程中,因故中断迁移而重启迁移时,避免再次迁移已经被迁移了的对象。具体实现时,可以是基于LevelDB的Filter实现,即,对Filter类进行抽象,用来过滤已经做了迁移的机器,将已经迁移成功的对象记录到Filter中,在重新迁移时,避免再次迁移相同的对象。
在上述本发明实施例中,还包括根据对象对应的文件的长度,对迁移的对象的完整度进行校验。在本发明实施例中,封装后的迁移任务还包含文件长度这一属性,文件长度用于描述被迁移对象对应文件的大小(默认单位可以是字节),该属性用于校验迁移对象存储时的文件完整性,保障在迁移过程中,不会因为网络或者软件BUG等问题,造成数据不一致等问题。在具体实施时,可以通过检查所下载的对象的文件长度是否与迁移任务中所描述的该对象的文件长度一致,若一致,则表明迁移的对象是完整的,否则,不完整,从而实现根据文件的长度,对迁移的对象的完整度进行校验。
需要说明的是,在本发明实施例中,封装后的迁移任务除了包含对象名和文件长度等属性之外,还可以包含一些特殊的属性。特殊的属性采用预留字段供开发人员使用;在某些特殊的情况下,上述对象名和文件长度等属性还不足以完成对象下载或者上传时,特殊的属性就会被使用。典型的例子如URL迁移时,不仅要获知对象名,还需要获知该对象名对应对象的URL信息。
为了更进一步地说明附图2示例的本发明的技术方案,本发明以从本地迁移文件到对象存储服务或者对象存储服务之间迁移对象为例:
假设要从本地迁移到OSS即阿里云提供的对象存储服务或COS即腾讯云提供的对象存储服务,现有技术的方法是针对文件系统提供的接口和OSS或COS提供的接口,开发一套工具通过调用这些接口来遍历文件名和上传文件到OSS或COS。若要从S3即亚马逊AWS的对象存储服务迁移对象到OSS或COS,则由于文件系统提供的接口与S3提供的接口完全不一样,因此又需要针对S3提供的接口开发一套工具来实现从S3到OSS或COS的对象迁移。而本发明提供的技术方案是针对各种对象存储服务,例如S3、OSS和COS提供统一的遍历接口、下载接口和上传接口这三种接口,并且对迁移任务也提供了封装,这样,不管对象存储服务怎样迁移对象,都只需要调用这些接口来实现,而不会针对每一个对象存储服务都去开发一套工具。例如,若需要从S3迁移对象到OSS,则只需要调用遍历接口获取到对象名,调用下载接口将这些对象名传入下载接口,从S3下载对象名对应的对象后,调用上传接口,将这些对象名对应的对象上传到OSS,从而完成对象的迁移;又如,若需要从COS迁移对象到OSS,则也只需要调用与前述例子相同的遍历接口获取到对象名,调用与前述例子相同的下载接口将这些对象名传入下载接口,从COS下载对象名对应的对象后,调用与前述例子相同的上传接口,将这些对象名对应的对象上传到OSS,从而完成对象的迁移。从上述实例可以看出,遍历接口、下载接口和上传接口这三种接口并不会因为对象存储服务的不同而不同,而现有技术却需要针对每种对象存储服务写一套接口,然后,针对这些接口写一套方法,例如,若需要从S3迁移对象到OSS,现有技术是针对S3写一套接口,并针对这套接口写一套方法,同时还要针对OSS写另一套接口,并针对OSS的接口写另一套方法;若需要从COS迁移对象到OSS,现有技术是针对COS写一套接口,并针对COS的接口写一套方法;当遇到不同于上述三种对象存储服务之间迁移对象时,则又需要写不同的接口和方法,这些对迁移工具的开发者而言不仅工作量巨大,而且每进行一次对象的迁移,都需要学习一次迁移工具的开发,成本太高。
从上述附图2示例的迁移对象存储的方法可知,一方面,与现有技术需要针对每种对象存储服务都开发一套迁移工具相比,本发明提供的技术方案由于对不同的对象存储服务和迁移任务进行了封装,屏蔽了不同对象存储服务或不同迁移任务的差异性,开发人员只需按照封装后的对象存储服务提供的遍历接口、下载接口和/或上传接口进行简单的配置文件的修改或接口的调用,即可实现不同对象存储服务的迁移,最大程度地实现了代码的复用,从而大大降低了开发成本;另一方面,由于对迁移任务和对象存储服务进行了封装,用户在使用迁移工具针对不同的对象存储服务进行对象存储的迁移时,并不会因为对象存储服务的不同感受到使用的差异,给用户的使用体验是一致的,从而降低了用户学习、使用迁移工具的成本。
请参阅图3,为本发明实施例提供的迁移对象存储的装置。为了便于说明,仅示出了与本发明实施例相关的部分。图3提供的迁移对象存储的装置主要包括第一封装模块301、第二封装模块302、第一调用单元303、访问单元304和第二调用单元305,详细说明如下:
第一封装模块301,用于将各种对象存储服务进行封装,所述封装后的对象存储服务可提供公共接口,其中,公共接口包括遍历接口和传输接口,传输接口包括下载接口和/或上传接口;
第二封装模块302,用于将各种迁移任务进行封装,所述封装后的迁移任务包含对象存储服务中对象的对象名;
第一调用单元303,用于调用遍历接口,以获取对象存储服务中对象的对象名;
访问单元304,用于访问迁移任务队列,其中,迁移任务队列的访问基于生产者/消费者模型的机制;
第二调用单元305,用于根据迁移任务队列是否为空,调用传输接口以传入获取的对象名,从对象存储和/或向对象存储迁移对象名对应的对象。
需要说明的是,本发明实施例提供的装置,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
附图3示例的第二调用单元305可以包括第三调用单元401和下载单元402,如附图4示例迁移对象存储的装置,其中:
第三调用单元401,用于若迁移任务队列未满,则调用下载接口以传入对象名;
下载单元402,用于根据传入的对象名,从源对象存储下载对象名对应的对象。
附图3示例的第二调用单元305可以包括第四调用单元501和上传单元502,如附图5示例迁移对象存储的装置,其中:
第四调用单元501,用于若迁移任务队列未空,则调用上传接口以传入对象名;
上传单元502,用于根据传入的对象名,将对象名对应的对象上传至目标对象存储。
附图3示例的第二调用单元305可以包括第三调用单元401、下载单元402、访问单元601、第四调用单元501和上传单元502,如附图6示例迁移对象存储的装置,其中:
第三调用单元401,用于若迁移任务队列未满,则调用下载接口以传入对象名;
下载单元402,用于根据传入的对象名,从源对象存储下载对象名对应的对象;
访问单元601,用于访问迁移任务队列;
第四调用单元501,用于若迁移任务队列未空,则调用上传接口以传入对象名;
上传单元502,用于根据传入的对象名,将对象名对应的对象上传至目标对象存储。
上述附图3至附图6任一示例的迁移对象存储的装置还可以包括记录模块701,如附图7-a至附图7-d所示任一示例的迁移对象存储的装置。记录模块701用于对从对象存储和/或向对象存储迁移的对象名对应的对象进行记录。
上述附图3至附图6任一示例的迁移对象存储的装置中,封装后的迁移任务还包含对象存储服务中对象的对应文件的长度,附图3至附图6任一示例的迁移对象存储的装置还可以包括校验模块801,如附图8-a至附图8-d所示任一示例的迁移对象存储的装置。校验模块801用于根据文件的长度,对迁移的对象的完整度进行校验。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的迁移对象存储的方法、装置、计算设备和计算机可读存储介质的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种迁移对象存储的方法,其特征在于,所述方法包括:
将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
调用所述遍历接口,以获取所述对象名;
访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
2.如权利要求1所述迁移对象存储的方法,其特征在于,所述根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象,包括:
若所述迁移任务队列未满,则调用所述下载接口以传入所述对象名;
根据所述传入的对象名,从源对象存储下载所述对象名对应的对象。
3.如权利要求1所述迁移对象存储的方法,其特征在于,所述根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象,包括:
若所述迁移任务队列未空,则调用所述上传接口以传入所述对象名;
根据所述传入的对象名,将所述对象名对应的对象上传至目标对象存储。
4.如权利要求1所述迁移对象存储的方法,其特征在于,所述根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象,包括:
若所述迁移任务队列未满,则调用所述下载接口以传入所述对象名;
根据所述传入的对象名,从源对象存储下载所述对象名对应的对象;
访问所述迁移任务队列;
若所述迁移任务队列未空,则调用所述上传接口以传入所述对象名;
根据所述传入的对象名,将所述对象名对应的对象上传至目标对象存储。
5.如权利要求1至4任意一项所述迁移对象存储的方法,其特征在于,所述方法还包括:
对所述从对象存储和/或向对象存储迁移的所述对象名对应的对象进行记录。
6.如权利要求1至4任意一项所述迁移对象存储的方法,其特征在于,所述封装后的迁移任务还包含所述对象存储服务中对象的对应文件的长度,方法还包括:
根据所述文件的长度,对所述迁移的对象的完整度进行校验。
7.一种迁移对象存储的装置,其特征在于,所述装置包括:
第一封装模块,用于将各种对象存储服务分别封装一个对应的服务类,所述封装的服务类包括公共接口,所述公共接口包括遍历接口和传输接口,所述传输接口包括下载接口和/或上传接口;
第二封装模块,用于将各种迁移任务分别封装一个对应的任务类,所述封装的任务类包含所述对象存储服务中对象的对象名;
第一调用单元,用于调用所述遍历接口,以获取所述对象名;
访问单元,用于访问迁移任务队列,所述迁移任务队列的访问基于生产者/消费者模型的机制;
第二调用单元,用于根据所述迁移任务队列是否为空,调用所述传输接口以传入所述获取的对象名,从对象存储和/或向对象存储迁移所述对象名对应的对象。
8.如权利要求7所述迁移对象存储的装置,其特征在于,所述第二调用单元包括:
第三调用单元,用于若所述迁移任务队列未满,则调用所述下载接口以传入所述对象名;
下载单元,用于根据所述传入的对象名,从源对象存储下载所述对象名对应的对象。
9.如权利要求7所述迁移对象存储的装置,其特征在于,所述第二调用单元包括:
第四调用单元,用于若所述迁移任务队列未空,则调用所述上传接口以传入所述对象名;
上传单元,用于根据所述传入的对象名,将所述对象名对应的对象上传至目标对象存储。
10.如权利要求7所述迁移对象存储的装置,其特征在于,所述第二调用单元包括:
第三调用单元,用于若所述迁移任务队列未满,则调用所述下载接口以传入所述对象名;
下载单元,用于根据所述传入的对象名,从源对象存储下载所述对象名对应的对象;
访问单元,用于访问所述迁移任务队列;
第四调用单元,用于若所述迁移任务队列未空,则调用所述上传接口以传入所述对象名;
上传单元,用于根据所述传入的对象名,将所述对象名对应的对象上传至目标对象存储。
11.如权利要求7至10任意一项所述迁移对象存储的装置,其特征在于,所述装置还包括:
记录模块,用于对所述从对象存储和/或向对象存储迁移的所述对象名对应的对象进行记录。
12.如权利要求7至10任意一项所述迁移对象存储的装置,其特征在于,所述封装后的迁移任务还包含所述对象存储服务中对象的对应文件的长度,装置还包括:
校验模块,用于根据所述文件的长度,对所述迁移的对象的完整度进行校验。
13.一种计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述方法的步骤。
14.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述方法的步骤。
CN201810832304.2A 2018-07-26 2018-07-26 迁移对象存储的方法、装置和计算机可读存储介质 Active CN110209344B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810832304.2A CN110209344B (zh) 2018-07-26 2018-07-26 迁移对象存储的方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810832304.2A CN110209344B (zh) 2018-07-26 2018-07-26 迁移对象存储的方法、装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110209344A true CN110209344A (zh) 2019-09-06
CN110209344B CN110209344B (zh) 2022-02-18

Family

ID=67779872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810832304.2A Active CN110209344B (zh) 2018-07-26 2018-07-26 迁移对象存储的方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110209344B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240855A (zh) * 2019-12-31 2020-06-05 中国建设银行股份有限公司 Api调试系统、方法、存储介质和计算机设备
CN111273870A (zh) * 2020-01-20 2020-06-12 深圳奥思数据科技有限公司 云存储系统间海量数据迭代迁移方法、设备及存储介质
CN117009292A (zh) * 2023-08-08 2023-11-07 海尔消费金融有限公司 文件数据迁移系统、方法、计算机设备和可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014008793A1 (zh) * 2012-07-10 2014-01-16 华为技术有限公司 一种tcp数据传输方法、tcp卸载引擎及系统
CN106953893A (zh) * 2017-02-15 2017-07-14 北京百度网讯科技有限公司 云存储系统间的数据迁移
CN107943572A (zh) * 2017-11-16 2018-04-20 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质
CN108021336A (zh) * 2016-10-31 2018-05-11 甲骨文国际公司 用于无缝数据迁移的数据布局方案

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014008793A1 (zh) * 2012-07-10 2014-01-16 华为技术有限公司 一种tcp数据传输方法、tcp卸载引擎及系统
CN108021336A (zh) * 2016-10-31 2018-05-11 甲骨文国际公司 用于无缝数据迁移的数据布局方案
CN106953893A (zh) * 2017-02-15 2017-07-14 北京百度网讯科技有限公司 云存储系统间的数据迁移
CN107943572A (zh) * 2017-11-16 2018-04-20 平安科技(深圳)有限公司 数据迁移方法、装置、计算机设备和存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240855A (zh) * 2019-12-31 2020-06-05 中国建设银行股份有限公司 Api调试系统、方法、存储介质和计算机设备
CN111273870A (zh) * 2020-01-20 2020-06-12 深圳奥思数据科技有限公司 云存储系统间海量数据迭代迁移方法、设备及存储介质
CN111273870B (zh) * 2020-01-20 2023-06-06 深圳奥思数据科技有限公司 云存储系统间海量数据迭代迁移方法、设备及存储介质
CN117009292A (zh) * 2023-08-08 2023-11-07 海尔消费金融有限公司 文件数据迁移系统、方法、计算机设备和可读存储介质

Also Published As

Publication number Publication date
CN110209344B (zh) 2022-02-18

Similar Documents

Publication Publication Date Title
CN107402788B (zh) 资源打包管理方法与装置
CN105677335B (zh) 提高移动终端首次开机速度的方法及装置
WO2020063019A1 (zh) 信息处理方法、装置、存储介质、电子设备及系统
CN105528229B (zh) 提高移动终端首次开机速度的方法及装置
CN104965848B (zh) 一种前端资源加载方法及装置
CN105955787B (zh) 一种用于Android系统的插件加载方法及装置
TW201441829A (zh) 頁面處理方法和裝置以及頁面生成方法和裝置
TW200405703A (en) System for multimedia rendering in a portable device
CN110209344A (zh) 迁移对象存储的方法、装置和计算机可读存储介质
CN104679627B (zh) 测试方法及装置
US10445223B1 (en) Service virtualization platform
WO2020052337A1 (zh) 信息处理方法、装置、存储介质及电子设备
CN104424241B (zh) 基于二维码的网站链接处理方法、装置及系统
CN104798082A (zh) 用于提供用于数据流的隐私策略的方法和装置
CN105701122A (zh) 一种日志收集方法、装置及系统
CN111580879A (zh) 小程序的运行方法、装置、电子设备及计算机存储介质
CN104038510A (zh) iOS系统透明代理的实现方法及系统
CN113190464A (zh) mock测试方法、装置、电子设备及介质
CN106301885A (zh) 统一业务管理的方法和系统
CN104700003B (zh) 一种文件加壳及脱壳方法、装置及系统
CN107463422A (zh) 代码部署方法及装置、电子设备
CN104239317A (zh) 在浏览器中实现图片编辑的方法及装置
US11818491B2 (en) Image special effect configuration method, image recognition method, apparatus and electronic device
CN107809437A (zh) 一种融合通信登录方法、装置和计算机可读存储介质
CN105893235B (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