CN109491807A - 一种数据交换方法、装置和*** - Google Patents

一种数据交换方法、装置和*** Download PDF

Info

Publication number
CN109491807A
CN109491807A CN201811295464.4A CN201811295464A CN109491807A CN 109491807 A CN109491807 A CN 109491807A CN 201811295464 A CN201811295464 A CN 201811295464A CN 109491807 A CN109491807 A CN 109491807A
Authority
CN
China
Prior art keywords
file destination
data
subfile
metadata
filename
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.)
Pending
Application number
CN201811295464.4A
Other languages
English (en)
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.)
Inspur Software Group Co Ltd
Original Assignee
Inspur Software Group 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 Inspur Software Group Co Ltd filed Critical Inspur Software Group Co Ltd
Priority to CN201811295464.4A priority Critical patent/CN109491807A/zh
Publication of CN109491807A publication Critical patent/CN109491807A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Abstract

本发明提供了一种数据交换方法、装置和***,该方法包括:接收数据存储端发送的待交换的目标文件;根据所述目标文件的文件名生成所述目标文件对应的元数据;将所述目标文件对应的元数据存储到InData‑Kudu对象存储的元数据集群中,并将所述目标文件存储到所述InData‑Kudu对象存储的数据存储集群中;接收数据接收端发送的所述目标文件的文件名;根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据;根据所述目标文件对应的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端。本方案能够提高数据交换过程中用户的使用体验。

Description

一种数据交换方法、装置和***
技术领域
本发明涉及计算机技术领域,特别涉及一种数据交换方法、装置和***。
背景技术
InData-Kudu组件作为一种独立于hadoop体系的一个组件,是在Apache Kudu组件基础上增加和增强了一些功能,形成了独立于Hadoop体系的一个新组件。Indata-Kudu通过底层存储结构化引擎以及非结构化存储引擎提供数据存储服务。其中,结构化引擎由Apache Kudu服务提供,非结构化存储引擎由对象存储服务提供。而且Indata-Kudu在Apache Kudu的基础上能够支持文件、图片等非结构化数据的存储,同时,Indata-Kudu在Apache Kudu的基础上提供高效的分布式查询引擎,并支持标准SQL对结构化和非结构化数据进行查询、分析。另外,InData-Kudu填补Apache Kudu自身对非结构化数据存储的不足,提供快速的非结构化数据存储功能。InData-Kudu对象存储是InData-Kudu组件的存储服务。
不同应用信息***、不同企业、不同部门之间经常需要通过计算机网络进行数据交换,目前一般可以通过文件***、数据库或者消息中间件实现数据交换,其中文件***和数据库无法很好的支持大文件交换,因此通常采用消息中间件实现大文件交换。
针对通过消息中间件实现数据交换的方式,数据发送方将待交换的文件拆分成多个小的消息放到消息队列中处理,数据接收方从消息队列中顺序取出消息内容并组成文件,但是在实际数据交换过程中数据接收方无法根据文件名来获取消息内容,导致用户的使用体验较差。
发明内容
本发明实施例提供了一种数据交换方法、装置和***,能够提升数据交换过程中用户的使用体验。
第一方面,本发明实施例提供了一种数据交换方法,包括:
接收数据存储端发送的待交换的目标文件;
根据所述目标文件的文件名生成所述目标文件对应的元数据;
将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中;
接收数据接收端发送的所述目标文件的文件名;
根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据;
根据所述目标文件对应的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端。
可选地,当所述目标文件的数据容量大于预设的容量阈值时,
所述根据所述目标文件的文件名生成所述目标文件对应的元数据,包括:
针对所述目标文件所包括的至少两个子文件中的每一个所述子文件,根据所述子文件的文件名生成与所述子文件对应的元数据,其中,所述至少两个子文件由所述数据存储端对所述目标文件进行拆分而获得,所述子文件对应的元数据包括所述子文件的文件名和ID,所述子文件的文件名包括所述目标文件的文件名信息;
所述将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中,包括:
分别将每一个所述子文件对应的元数据存储到所述InData-Kudu对象存储的元数据集群中,并分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中。
可选地,当所述目标文件的数据容量大于预设的容量阈值时,
所述根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据,包括:
根据所述目标文件的文件名从所述元数据集群中获取每一个所述子文件对应的元数据;
所述根据所述目标文件的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端,包括:
分别根据每一个所述子文件对应的元数据,从所述数据存储集群中读取所述子文件,并将读取到的各个所述子文件发送给所述数据接收端。
可选地,
所述分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中,包括:
针对每一个所述子文件,在所述数据存储集群中的至少两个存储节点上分别对所述子文件进行存储。
第二方面,本发明实施例还提供了一种数据交换装置,包括:数据接收单元、元数据生成单元、数据存储单元、文件名接收单元、元数据读取单元和数据发送单元;
所述数据接收单元,用于接收数据存储端发送的待交换的目标文件;
所述元数据生成单元,用于根据所述目标文件的文件名生成所述目标文件对应的元数据,其中,所述目标文件由所述数据接收单元接收获得;
所述数据存储单元,用于将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述数据接收单元接收到的所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中,其中,所述目标文件对应的元数据由所述元数据生成单元生成;
所述文件名接收单元,用于接收数据接收端发送的所述目标文件的文件名;
所述元数据读取单元,用于根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据,其中,所述目标文件的文件名由所述文件名接收单元接收获得,所述目标文件对应的元数据由所述数据存储单元存储;
所述数据发送单元,用于根据所述目标文件对应的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端,其中,所述目标文件对应的元数据由所述元数据读取单元读取获得。
可选地,当所述目标文件的数据容量大于预设的容量阈值时,
所述元数据生成单元,用于针对所述目标文件所包括的至少两个子文件中的每一个所述子文件,根据所述子文件的文件名生成与所述子文件对应的元数据,其中,所述至少两个子文件由所述数据存储端对所述目标文件进行拆分而获得,所述子文件对应的元数据包括所述子文件的文件名和ID,所述子文件的文件名包括所述目标文件的文件名信息;
所述数据存储单元,用于分别将每一个所述子文件对应的元数据存储到所述InData-Kudu对象存储的元数据集群中,并分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中。
可选地,当所述目标文件的数据容量大于预设的容量阈值时,
所述元数据读取单元,用于根据所述目标文件的文件名从所述元数据集群中获取每一个所述子文件对应的元数据;
所述数据发送单元,用于分别根据每一个所述子文件对应的元数据,从所述数据存储集群中读取所述子文件,并将读取到的各个所述子文件发送给所述数据接收端。
可选地,
所述数据存储单元,用于针对每一个所述子文件,在所述数据存储集群中的至少两个存储节点上分别对所述子文件进行存储。
第三方面,本发明实施例还提供了一种数据交换***,包括:第二方面提供的任意一种数据交换装置、InData-Kudu对象存储、至少一个数据存储端和至少一个数据接收端;
每一个所述数据存储端,用于分别向所述数据交换装置发送待交换的目标文件;
每一个所述数据接收端,用于分别向所述数据交换装置发送所需的所述目标文件的文件名,并接收所述数据交换装置发送的所述目标文件;
所述InData-Kudu对象存储,用于供所述数据交换装置存储所述目标文件和所述目标文件的元数据。
可选地,
所述数据存储端,进一步用于在所述目标文件的数据容量大于预设的容量阈值时,将所述目标文件拆分为至少两个子文件,并分别为每一个所述子文件设置文件名后发送给所述数据交换装置,其中,每一个所述子文件的数据容量均小于所述容量阈值,所述子文件的文件名包括所述目标文件的文件名信息。
本发明实施例提供的数据交换方法、装置和***,在接收到数据存储端发送的待交换的目标文件后,根据目标文件的文件名生成相对应的元数据,之后将目标文件的元数据存储到InData-Kudu对象存储的元数据集群中,并将目标文件存储到InData-Kudu对象存储的数据存储集群中,在接收到数据接收端发送的目标文件的文件名后,根据目标文件的文件名从元数据集群中读取目标文件的元数据,进而可以根据读取到的元数据从数据存储集群中读取目标文件,并将读取到的目标文件发送给数据接收端,实现数据存储端与数据接收端之间的数据交换。由此可见,数据存储端将待交换的目标文件存储到InData-Kudu对象存储后,数据接收端可以根据目标文件的文件名从InData-Kudu对象存储获取目标文件,使得数据交换过程中数据接收方可以根据文件名来获取待交换的文件,从而可以提升数据交换过程中用户的使用体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种数据交换方法的流程图;
图2是本发明一个实施例提供的一种数据交换装置所在设备的示意图;
图3是本发明一个实施例提供的一种数据交换装置的示意图;
图4是本发明一个实施例提供的一种数据交换***的示意图;
图5是本发明一个实施例提供的另一种数据交换方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种数据交换方法,该方法可以包括以下步骤:
步骤101:接收数据存储端发送的待交换的目标文件;
步骤102:根据目标文件的文件名生成目标文件对应的元数据;
步骤103:将目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将目标文件存储到InData-Kudu对象存储的数据存储集群中;
步骤104:接收数据接收端发送的目标文件的文件名;
步骤105:根据目标文件的文件名从元数据集群中获取目标文件对应的元数据;
步骤106:根据目标文件对应的元数据从数据存储集群中读取目标文件,并将读取到的目标文件发给数据接收端。
本发明实施例提供的数据交换方法,在接收到数据存储端发送的待交换的目标文件后,根据目标文件的文件名生成相对应的元数据,之后将目标文件的元数据存储到InData-Kudu对象存储的元数据集群中,并将目标文件存储到InData-Kudu对象存储的数据存储集群中,在接收到数据接收端发送的目标文件的文件名后,根据目标文件的文件名从元数据集群中读取目标文件的元数据,进而可以根据读取到的元数据从数据存储集群中读取目标文件,并将读取到的目标文件发送给数据接收端,实现数据存储端与数据接收端之间的数据交换。由此可见,数据存储端将待交换的目标文件存储到InData-Kudu对象存储后,数据接收端可以根据目标文件的文件名从InData-Kudu对象存储获取目标文件,使得数据交换过程中数据接收方可以根据文件名来获取待交换的文件,从而可以提升数据交换过程中用户的使用体验。
可选地,在图1所示数据交换方法的基础上,当目标文件的数据容量大于预设的容量阈值时,在步骤101所接收到的目标文件包括有至少两个子文件,而这些子文件是由数据存储端对一个整体的目标文件拆分而获得,每一个子文件的数据容量均小于上述容量阈值。相应地,步骤102和步骤103可以通过如下方式实现:
步骤102根据目标文件的文件名生成相应的元数据时,可以针对目标文件包括的每一个文件,根据该子文件的文件名生成与该子文件对象的元数据,将至少两个子文件对应的至少两个元数据作为目标文件对应的元数据。其中,每一个子文件对应的元数据均包括该子文件的文件名和该子文件的ID,并且每一个子文件的文件名都包括有目标文件的文件名信息。
步骤103对目标文件和目标文件对应的元数据进行存储时,可以分别将每一个子文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并分别将每一个子文件存储到InData-Kudu对象存储的数据存储集群中。
在待交换的目标文件的数据容量较大时,将目标文件拆分成多个数据容量较小的子文件,进而将各个子文件存储到InData-Kudu对象存储的数据存储集群中,并将各个子文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,存储过程可以通过多个线程并行实现,从而可以提升将待交换数据存储到InData-Kudu对象存储的效率,并保证数据传输的可靠性。
可选地,当目标文件的数据容量大于预设的容量阈值时,在上述实施例将目标文件包括的各个子文件以及各个子文件对应的元数据存储到InData-Kudu对象存储的基础上,步骤105和步骤106可以通过如下方式实现:
在步骤105根据目标文件的文件名获取目标文件对应的元数据时,可以根据目标文件的文件名从InData-Kudu对象存储的元数据集群中获取目标文件所包括的每一个子文件对应的元数据。
在步骤106根据目标文件对应的元数据读取目标文件,并将读取到的目标文件发给数据接收端时,可以分别根据获取到的每一个子文件对应的元数据,从InData-Kudu对象存储的数据存储集群中读取相对应的子文件,进而将读取到的各个子文件发送给数据接收端。
具体地,在接收到数据接收端发送的目标文件的文件名后,由于目标文件所包括子文件的文件名中包括有目标文件的文件名信息,而目标文件所包括子文件对应的元数据中包括有子文件的文件名,因此根据目标文件的文件名可以从InData-Kudu对象存储的元数据集群中获取对应于目标文件的每一个子文件的元数据。
子文件的元数据包括有子文件的文件名和子文件的ID,其中子文件的ID是由InData-Kudu对象存储为子文件分配的身份标识。在从InData-Kudu对象存储的元数据集群中获取对应于目标文件的各个子文件的元数据后,针对获取到的每一个元数据,根据该元数据包括的ID从InData-Kudu对象存储的数据存储集群中读取相对应的子文件。在读取到目标文件包括的所有子文件后,将读取到的所有子文件发送给数据接收端,实现数据存储端与数据接收端之间的数据交换。
需要说明的是,子文件的文件名除了包括有目标文件的文件名信息外,还包括有子文件的编码信息,编码信息标识了在对目标文件进行拆分是的规则,即可以根据文件名中包括的编码信息对各个子文件进行组合,从而获得目标文件。在将目标文件包括的各个子文件发送给数据接收端后,数据接收端可以根据各个子文件的文件名中包括的编码信息对各个子文件进行顺序组合,获得目标文件。
例如,目标文件的文件名为abc.dat,该目标文件被拆分后形成13个子文件,12个子文件的文件名分别为abc.dat::0、abc.dat::1、abc.dat::2、abc.dat::3、abc.dat::4、abc.dat::5、abc.dat::6、abc.dat::7、abc.dat::8、abc.dat::9、abc.dat::10、abc.dat::11和abc.dat::12。其中,“::”之前的部分为目标文件的文件名信息,“::”之后的部分为编码信息。在将这13个子文件发送给数据接收端后,数据接收端可以根据各个子文件的文件名中包括的编码信息,对这13个子文件进行顺序组合,获得目标文件abc.dat。
由于每个子文件的文件名中都包括有相对应的编码信息,根据编码信息可以对各个子文件进行顺序组合获得目标文件,因此在向数据接收端发送各个子文件时无需按照特定的队列顺序进行发送,从而可以采用多线程并行的方式向数据接收端发送子文件,以缩短将子文件发送给数据接收端所需的时间,从而可以提升数据交换双方进行数据交换的效率。
另外,在从InData-Kudu对象存储的元数据集群中获取到目标文件所包括各个子文件的元数据后,可以通过多线程并行的方式根据读取到的元数据从InData-Kudu对象存储的数据存储集群中读取子文件,以缩短从数据存储集群中读取子文件所需的时间,从而可以进一步提升数据交换双方进行数据交换的效率。
可选地,在将目标文件包括的各个子文件存储到InData-Kudu对象存储的数据存储集群中时,针对目标文件包括的每一个子文件,可以在数据存储集群中的至少两个存储节点上分别对该子文件进行存储。
InData-Kudu对象存储包括有元数据集群和数据存储集群,其中,数据存储集群包括有多个存储节点。在将目标文件包括的各个子文件存储到数据存储集群中时,针对目标文件包括的每一个子文件,可以将该子文件存储到不同的存储节点上。这样,每一个子文件在至少一个存储节点上有冗余备份,当一个存储节点上的子文件被损坏或丢失后,可以从具有冗余备份的其他存储节点上读取到所需的子文件,从而可以保证数据交换的高可用性。
需要说明的是,上述各个实施例提供的数据交换方法,将待交换的文件作为一个对象存储到InData-Kudu对象存储上,InData-Kudu对象存储所支持的对象小到1个字节,大到可至TB级,从而可以满足各种大文件和小文件的交换,从而具有广泛的适用性。
如图2、图3所示,本发明实施例提供了一种数据交换装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的数据交换装置所在设备的一种硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的数据交换装置,包括:数据接收单元301、元数据生成单元302、数据存储单元303、文件名接收单元304、元数据读取单元305和数据发送单元306;
数据接收单元301,用于接收数据存储端发送的待交换的目标文件;
元数据生成单元302,用于根据目标文件的文件名生成目标文件对应的元数据,其中,目标文件由数据接收单元301接收获得;
数据存储单元303,用于将目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将数据接收单元301接收到的目标文件存储到InData-Kudu对象存储的数据存储集群中,其中,目标文件对应的元数据由元数据生成单元302生成;
文件名接收单元304,用于接收数据接收端发送的目标文件的文件名;
元数据读取单元305,用于根据目标文件的文件名从元数据集群中获取目标文件对应的元数据,其中,目标文件的文件名由文件名接收单元304接收获得,目标文件对应的元数据由数据存储单元303存储;
数据发送单元306,用于根据目标文件对应的元数据从数据存储集群中读取目标文件,并将读取到的目标文件发给数据接收端,其中,目标文件对应的元数据由元数据读取单元305读取获得。
可选地,在图3所示数据交换装置的基础上,当目标文件的数据容量大于预设的容量阈值时,
元数据生成单元302,用于针对目标文件所包括的至少两个子文件中的每一个子文件,根据子文件的文件名生成与子文件对应的元数据,其中,至少两个子文件由数据存储端对目标文件进行拆分而获得,子文件对应的元数据包括子文件的文件名和ID,子文件的文件名包括目标文件的文件名信息;
数据存储单元303,用于分别将每一个子文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并分别将每一个子文件存储到InData-Kudu对象存储的数据存储集群中。
可选地,在图3所示数据交换装置的基础上,当目标文件的数据容量大于预设的容量阈值时,
元数据读取单元305,用于根据目标文件的文件名从元数据集群中获取每一个子文件对应的元数据;
数据发送单元306,用于分别根据每一个子文件对应的元数据,从数据存储集群中读取子文件,并将读取到的各个子文件发送给数据接收端。
可选地,在图3所示数据交换装置的基础上,
数据存储单元306,用于针对每一个子文件,在数据存储集群中的至少两个存储节点上分别对子文件进行存储。
需要说明的是,上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
另外需要说明的是,本发明实施例提供的数据交换装置可以部署在InData-Kudu对象存储中。
如图4所示,本发明一个实施例提供了数据交换***,包括:上述任意一个实施例提供的数据交换装置401、InData-Kudu对象存储402、至少一个数据存储端403和至少一个数据接收端404;
每一个数据存储端403,用于分别向数据交换装置401发送待交换的目标文件;
每一个数据接收端404,用于分别向数据交换装置401发送所需的目标文件的文件名,并接收数据交换装置401发送的目标文件;
InData-Kudu对象存储402,用于供数据交换装置存储目标文件和目标文件的元数据。
本发明实施例提供的数据交换***,当一个数据存储端需要与一个或多个数据接收端进行数据交换时,该数据存储端将待交换的目标文件发给数据交换装置,数据交换装置将目标文件存储到InData-Kudu对象存储中,之后需要该目标文件的数据接收端向数据交换装置发送该目标文件的文件名,数据交换装置根据接收到的文件名从InData-Kudu对象存储中读取目标文件,并将读取到的目标文件发送给相应的数据接收端,实现数据存储端与数据接收端之间的数据交换。由此可见,在数据交换过程中数据接收端通过输入文件名便可以获取到待交换的文件,从而可以提升数据交换过程中用户的使用体验。
可选地,在图4所示数据交换***的基础上,当数据存储端403所要交换的目标数据的数据容量超过预先设定的容量阈值时,数据存储端403可以将待交换的目标文件拆分成至少两个子文件,并分别为拆分出的每一个子文件设置文件名后发送给数据交换装置401,其中,拆分出的每一个子文件的数据容量均小于预设的容量阈值,并且子文件的文件名包括有模板文件的文件名信息。
当待交换的目标文件的数据容量较大时,为了缩短数据存储端向数据交换装置发送目标文件所需的时间,数据存储端将目标文件拆分成多个子文件,这样数据存储端便可以通过多线程并发的方式向数据交换装置发送子文件,从而可以提升数据交换的效率。另外,数据存储端在对子文件设置文件名时,子文件的文件名中包括有目标文件的文件名信息,这样数据交换装置将子文件存储到InData-Kudu对象存储后,可以根据目标文件的文件名从InData-Kudu对象存储读取子文件,以保证数据交换过程的正常执行。
需要说明的是,在上述数据交换***中数据存储端和数据接收端是相对的概念,用户通过客户端向数据交换装置发送待交换的目标文件时,客户端为数据存储端,用户通过客户端向数据交换装置发送目标文件的文件名时,客户端为数据接收端。因此,同一个客户端在不同数据交换场景下可以作为数据存储端或者数据接收端。
下面结合图4所示的数据交换***,以对数据容量大于预设的容量阈值的目标文件进行交换为例,对本发明实施例提供的数据交换方法作进一步详细说明,如图5所示,该方法可以包括以下步骤:
步骤501:数据存储端对目标文件进行拆分,获得多个子文件。
在本发明实施例中,当数据存储端需要将一个目标文件发送给一个或多个数据接收端时,如果该目标文件的数据容量大于预先设定的容量阈值,数据存储端对该目标文件进行拆分,获得多个不大于容量阈值的子文件,并根据目标文件的文件和拆分规则对各个子文件进行命名。
例如,数据存储端A要将其拥有的目标文件X发送给数据接收端B和数据接收端C,目标文件X的文件名为abc.bat,目标文件X的数据容量为24.5G,而预先设定的容量阈值为2G。数据存储端A将目标文件X拆分成13个子文件,这13个子文件的文件名分别为abc.dat::0、abc.dat::1、abc.dat::2、abc.dat::3、abc.dat::4、abc.dat::5、abc.dat::6、abc.dat::7、abc.dat::8、abc.dat::9、abc.dat::10、abc.dat::11和abc.dat::12,其中,“::”之前的部分为目标文件X的文件名,“::”之后的部分为与拆分规则相对应的编码信息,前12个子文件的数据容量均为2GB,最后一个子文件的数据容量为0.5GB。
步骤502:数据存储端将拆分出的各个子文件发送给数据交换装置。
在本发明实施例中,数据存储端在将目标文件拆分成多个子文件,并分别为每一个子文件设置文件名后,数据存储端以多线程并行的方式将拆分出的各个子文件发送给数据交换装置。
例如,数据存储端A创建4个并行的线程,通过这4个并行的线程将拆分出的13个子文件发送给数据交换装置。
步骤503:数据交换装置分别获取每一个子文件的元数据。
在本发明实施例中,数据交换装置接收到数据存储端发送的子文件,针对接收到的每一个子文件,数据交换装置根据为该子文件配备ID,生成包括有该子文件的文件名、ID、长度len等信息的元数据。
例如,数据交换装置在接收到数据存储端所发送的13个子文件后,分别为每一个子文件分配ID,并分别生成对应于每一个子文件的元数据,其中,元数据包括相应子文件的文件名和ID。13个子文件的元数据分别为元数据0至元数据12,依次对应子文件abc.dat::0至子文件abc.dat::12。
步骤504:数据交换装置将元数据存储到InData-Kudu对象存储的元数据集群中,并将各个子文件存储到InData-Kudu对象存储的数据存储集群中。
在本发明实施例中,数据交换装置在获取到各个子文件的元数据后,将各个子文件的元数据存储到InData-Kudu对象存储的元数据集群中,并将各个子文件存储到InData-Kudu对象存储的数据存储集群中。具体地,在向InData-Kudu对象存储的数据存储集群中存储子文件时,针对每一个子文件,分别将该子文件存储到InData-Kudu对象存储的数据存储集群包括的多个存储节点中。
例如,将元数据0至元数据12存储到InData-Kudu对象存储的数据存储集群中,将子文件abc.dat::0至子文件abc.dat::12存储到InData-Kudu对象存储的数据存储集群中。针对13个子文件中的每一个子文件,随机地从数据存储集群包括的多个存储节点中选择至少两个存储节点分别对该子文件进行存储。
步骤505:数据接收端向数据交换装置发送目标文件的文件名。
在本发明实施例中,当数据接收端需要获取目标文件时,数据接收端向数据交换装置发送目标文件的文件名。
例如,数据接收端B和数据接收端C分别向数据交换装置发送目标文件X的文件名abc.bat。
步骤506:数据交换装置根据目标文件的文件名从InData-Kudu对象存储的元数据集群中获取元数据。
在本发明实施例中,数据交换装置在接收到数据接收端所发送的目标文件的文件名后,将目标文件的文件名与InData-Kudu对象存储的元数据集群中所存储的元数据进行匹配,找到包括有目标文件的文件名信息的所有元数据。
例如,数据交换装置根据目标文件的文件名abc.bat,从InData-Kudu对象存储的元数据集群中获取到元数据0至元数据12这13个元数据。
步骤507:数据交换装置根据获取到的元数据从InData-Kudu对象存储的数据存储集群中读取子文件。
在本发明实施例中,针对获取到的每一个元数据,数据交换装置可以根据该元数据中包括的ID,从InData-Kudu对象存储的数据存储集群中读取相对应的子文件。
例如,根据元数据0中包括的ID,数据交换装置从InData-Kudu对象存储的数据存储集群中读取到子文件abc.dat::0,根据元数据1中包括的ID,数据交换装置从InData-Kudu对象存储的数据存储集群中读取到子文件abc.dat::1。按照这种方式,数据交换装置从InData-Kudu对象存储的数据存储集群中读取到子文件abc.dat::0至子文件abc.dat::12共计13个子文件。
步骤508:数据交换装置将读取到的子文件发送给相应的数据接收端。
在本发明实施例中,数据交换装置在读取到与目标文件的文件名相匹配的所有子文件后,通过多线程并发的方式将读取到的各个子文件发送给此前发送目标文件的文件名的数据接收端。
例如,数据交换装置创建4个并行的线程,通过这4个并行的线程将获取到的13个子文件分别发送给数据接收端B和数据接收端C。
步骤509:数据接收端对子文件进行组合,获得目标文件。
在本发明实施例中,数据接收端在接收到所有子文件后,根据各个子文件的文件名包括的编码信息对各个子文件进行组合,获得目标文件。
例如,数据接收端B在接收到13个子文件后,根据各个子文件的文件名中包括的编码信息,对子文件abc.dat::0至子文件abc.dat::12进行顺序组合,获得目标文件X。
本发明实施例还提供了一种可读介质,所述可读介质上存储有执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述各个实施例提供的数据交换方法。
本发明实施例还提供了一种存储控制器,包括:处理器、存储器和总线;
所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述各个实施例提供的数据交换方法。
综上所述,本发明各个实施例提供的数据交换方法、装置和***,至少具有如下有益效果:
1、在本发明实施例中,在接收到数据存储端发送的待交换的目标文件后,根据目标文件的文件名生成相对应的元数据,之后将目标文件的元数据存储到InData-Kudu对象存储的元数据集群中,并将目标文件存储到InData-Kudu对象存储的数据存储集群中,在接收到数据接收端发送的目标文件的文件名后,根据目标文件的文件名从元数据集群中读取目标文件的元数据,进而可以根据读取到的元数据从数据存储集群中读取目标文件,并将读取到的目标文件发送给数据接收端,实现数据存储端与数据接收端之间的数据交换。由此可见,数据存储端将待交换的目标文件存储到InData-Kudu对象存储后,数据接收端可以根据目标文件的文件名从InData-Kudu对象存储获取目标文件,使得数据交换过程中数据接收方可以根据文件名来获取待交换的文件,从而可以提升数据交换过程中用户的使用体验。
2、在本发明实施例中,在待交换的目标文件的数据容量较大时,将目标文件拆分成多个数据容量较小的子文件,进而将各个子文件存储到InData-Kudu对象存储的数据存储集群中,并将各个子文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,存储过程可以通过多个线程并行实现,从而可以提升将待交换数据存储到InData-Kudu对象存储的效率,并保证数据传输的可靠性。
3、在本发明实施例中,由于每个子文件的文件名中都包括有相对应的编码信息,根据编码信息可以对各个子文件进行顺序组合获得目标文件,因此在向数据接收端发送各个子文件时无需按照特定的队列顺序进行发送,从而可以采用多线程并行的方式向数据接收端发送子文件,以缩短将子文件发送给数据接收端所需的时间,从而可以提升数据交换双方进行数据交换的效率。
4、在本发明实施例中,在从InData-Kudu对象存储的元数据集群中获取到目标文件所包括各个子文件的元数据后,可以通过多线程并行的方式根据读取到的元数据从InData-Kudu对象存储的数据存储集群中读取子文件,以缩短从数据存储集群中读取子文件所需的时间,从而可以进一步提升数据交换双方进行数据交换的效率。
5、在本发明实施例中,InData-Kudu对象存储包括有元数据集群和数据存储集群,其中,数据存储集群包括有多个存储节点。在将目标文件包括的各个子文件存储到数据存储集群中时,针对目标文件包括的每一个子文件,可以将该子文件存储到不同的存储节点上。这样,每一个子文件在至少一个存储节点上有冗余备份,当一个存储节点上的子文件被损坏或丢失后,可以从具有冗余备份的其他存储节点上读取到所需的子文件,从而可以保证数据交换的高可用性。
6、在本发明实施例中,将待交换的文件作为一个对象存储到InData-Kudu对象存储上,InData-Kudu对象存储所支持的对象小到1个字节,大到可至TB级,从而可以满足各种大文件和小文件的交换,从而具有广泛的适用性。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种数据交换方法,其特征在于,包括:
接收数据存储端发送的待交换的目标文件;
根据所述目标文件的文件名生成所述目标文件对应的元数据;
将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中;
接收数据接收端发送的所述目标文件的文件名;
根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据;
根据所述目标文件对应的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端。
2.根据权利要求1所述的方法,其特征在于,当所述目标文件的数据容量大于预设的容量阈值时,
所述根据所述目标文件的文件名生成所述目标文件对应的元数据,包括:
针对所述目标文件所包括的至少两个子文件中的每一个所述子文件,根据所述子文件的文件名生成与所述子文件对应的元数据,其中,所述至少两个子文件由所述数据存储端对所述目标文件进行拆分而获得,所述子文件对应的元数据包括所述子文件的文件名和ID,所述子文件的文件名包括所述目标文件的文件名信息;
所述将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中,包括:
分别将每一个所述子文件对应的元数据存储到所述InData-Kudu对象存储的元数据集群中,并分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中。
3.根据权利要求2所述的方法,其特征在于,当所述目标文件的数据容量大于预设的容量阈值时,
所述根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据,包括:
根据所述目标文件的文件名从所述元数据集群中获取每一个所述子文件对应的元数据;
所述根据所述目标文件的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端,包括:
分别根据每一个所述子文件对应的元数据,从所述数据存储集群中读取所述子文件,并将读取到的各个所述子文件发送给所述数据接收端。
4.根据权利要求2或3所述的方法,其特征在于,所述分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中,包括:
针对每一个所述子文件,在所述数据存储集群中的至少两个存储节点上分别对所述子文件进行存储。
5.一种数据交换装置,其特征在于,包括:数据接收单元、元数据生成单元、数据存储单元、文件名接收单元、元数据读取单元和数据发送单元;
所述数据接收单元,用于接收数据存储端发送的待交换的目标文件;
所述元数据生成单元,用于根据所述目标文件的文件名生成所述目标文件对应的元数据,其中,所述目标文件由所述数据接收单元接收获得;
所述数据存储单元,用于将所述目标文件对应的元数据存储到InData-Kudu对象存储的元数据集群中,并将所述数据接收单元接收到的所述目标文件存储到所述InData-Kudu对象存储的数据存储集群中,其中,所述目标文件对应的元数据由所述元数据生成单元生成;
所述文件名接收单元,用于接收数据接收端发送的所述目标文件的文件名;
所述元数据读取单元,用于根据所述目标文件的文件名从所述元数据集群中获取所述目标文件对应的元数据,其中,所述目标文件的文件名由所述文件名接收单元接收获得,所述目标文件对应的元数据由所述数据存储单元存储;
所述数据发送单元,用于根据所述目标文件对应的元数据从所述数据存储集群中读取所述目标文件,并将读取到的所述目标文件发给所述数据接收端,其中,所述目标文件对应的元数据由所述元数据读取单元读取获得。
6.根据权利要求5所述的装置,其特征在于,当所述目标文件的数据容量大于预设的容量阈值时,
所述元数据生成单元,用于针对所述目标文件所包括的至少两个子文件中的每一个所述子文件,根据所述子文件的文件名生成与所述子文件对应的元数据,其中,所述至少两个子文件由所述数据存储端对所述目标文件进行拆分而获得,所述子文件对应的元数据包括所述子文件的文件名和ID,所述子文件的文件名包括所述目标文件的文件名信息;
所述数据存储单元,用于分别将每一个所述子文件对应的元数据存储到所述InData-Kudu对象存储的元数据集群中,并分别将每一个所述子文件存储到所述InData-Kudu对象存储的数据存储集群中。
7.根据权利要求6所述的装置,其特征在于,当所述目标文件的数据容量大于预设的容量阈值时,
所述元数据读取单元,用于根据所述目标文件的文件名从所述元数据集群中获取每一个所述子文件对应的元数据;
所述数据发送单元,用于分别根据每一个所述子文件对应的元数据,从所述数据存储集群中读取所述子文件,并将读取到的各个所述子文件发送给所述数据接收端。
8.根据权利要求6或7所述的装置,其特征在于,
所述数据存储单元,用于针对每一个所述子文件,在所述数据存储集群中的至少两个存储节点上分别对所述子文件进行存储。
9.一种数据交换***,其特征在于,包括:权利要求5至8中任一所述数据交换装置、InData-Kudu对象存储、至少一个数据存储端和至少一个数据接收端;
每一个所述数据存储端,用于分别向所述数据交换装置发送待交换的目标文件;
每一个所述数据接收端,用于分别向所述数据交换装置发送所需的所述目标文件的文件名,并接收所述数据交换装置发送的所述目标文件;
所述InData-Kudu对象存储,用于供所述数据交换装置存储所述目标文件和所述目标文件的元数据。
10.根据权利要求9所述的***,其特征在于,
所述数据存储端,进一步用于在所述目标文件的数据容量大于预设的容量阈值时,将所述目标文件拆分为至少两个子文件,并分别为每一个所述子文件设置文件名后发送给所述数据交换装置,其中,每一个所述子文件的数据容量均小于所述容量阈值,所述子文件的文件名包括所述目标文件的文件名信息。
CN201811295464.4A 2018-11-01 2018-11-01 一种数据交换方法、装置和*** Pending CN109491807A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811295464.4A CN109491807A (zh) 2018-11-01 2018-11-01 一种数据交换方法、装置和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811295464.4A CN109491807A (zh) 2018-11-01 2018-11-01 一种数据交换方法、装置和***

Publications (1)

Publication Number Publication Date
CN109491807A true CN109491807A (zh) 2019-03-19

Family

ID=65693546

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811295464.4A Pending CN109491807A (zh) 2018-11-01 2018-11-01 一种数据交换方法、装置和***

Country Status (1)

Country Link
CN (1) CN109491807A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309526A (zh) * 2020-02-26 2020-06-19 中国工商银行股份有限公司 文件备份、恢复方法及其装置
CN112199427A (zh) * 2020-09-24 2021-01-08 中国建设银行股份有限公司 一种数据处理方法和***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577503A (zh) * 2012-08-10 2014-02-12 鸿富锦精密工业(深圳)有限公司 云端文件存储***及方法
CN104408091A (zh) * 2014-11-11 2015-03-11 清华大学 分布式文件***的数据存储方法及***
CN106959997A (zh) * 2017-02-04 2017-07-18 深圳市中博科创信息技术有限公司 基于集群文件***的文件处理方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577503A (zh) * 2012-08-10 2014-02-12 鸿富锦精密工业(深圳)有限公司 云端文件存储***及方法
CN104408091A (zh) * 2014-11-11 2015-03-11 清华大学 分布式文件***的数据存储方法及***
CN106959997A (zh) * 2017-02-04 2017-07-18 深圳市中博科创信息技术有限公司 基于集群文件***的文件处理方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111309526A (zh) * 2020-02-26 2020-06-19 中国工商银行股份有限公司 文件备份、恢复方法及其装置
CN111309526B (zh) * 2020-02-26 2023-08-15 中国工商银行股份有限公司 文件备份、恢复方法及其装置
CN112199427A (zh) * 2020-09-24 2021-01-08 中国建设银行股份有限公司 一种数据处理方法和***

Similar Documents

Publication Publication Date Title
CN101009516B (zh) 一种进行数据同步的方法、***及装置
CN107395665A (zh) 一种区块链业务受理及业务共识方法及装置
CN108933805A (zh) 一种文件传输方法及***
CN112395300B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
US9152466B2 (en) Organizing file events by their hierarchical paths for multi-threaded synch and parallel access system, apparatus, and method of operation
CN103986694B (zh) 分布式计算机数据存储***中多副本一致性的控制方法
CN104348859B (zh) 文件同步方法、装置、服务器、终端及***
CN106156070B (zh) 一种查询方法、文件合并方法与相关装置
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN109508326B (zh) 用于处理数据的方法、装置和***
CN105159604A (zh) 一种磁盘数据读写方法和***
CN106407442B (zh) 一种海量文本数据处理方法及装置
CN106095923A (zh) 一种在有序榜单中添加上榜数据的方法及***
CN109710584A (zh) 一种利用云消息服务平台实现文件双向同步的方法及装置
CN105681426B (zh) 异构***
CN104156381A (zh) Hadoop分布式文件***的副本存取方法、装置和Hadoop分布式文件***
CN109799948A (zh) 一种数据存储方法及装置
CN104462483A (zh) 数据同步方法、装置及***
CN104123280A (zh) 文件比对方法和设备
CN108573014A (zh) 一种文件同步方法、装置、电子设备及可读存储介质
CN104980489A (zh) 使用匹配的网络名称的安全集合同步
CN113076304A (zh) 一种分布式版本管理方法、装置和***
CN105049524B (zh) 一种基于hdfs的大规模数据集装载的方法
CN109491807A (zh) 一种数据交换方法、装置和***
CN105407044B (zh) 一种基于nfs的云存储网关***的实现方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190319