掌桥专利:专业的专利平台
掌桥专利
首页

一种数据传输方法、装置、电子设备以及存储介质

文献发布时间:2023-06-19 16:06:26



技术领域

本公开涉及通信技术领域,具体而言,涉及一种数据传输方法、装置、电子设备以及存储介质。

背景技术

随着互联网技术的发展,企业以及个人用户对于文件传输的效率以及质量的要求也在逐渐增高。在现有的技术方案中,在管理和传输文件过程中最常用的方式是通过FTP(File Transfer Protocol,文件传输协议)进行传输。然而,FTP在传输大文件和海量文件时往往传输耗时较长。因此,针对传输大文件和海量文件的情况,亟待一种更高效,实用性更强的传输方式。

发明内容

本公开实施例至少提供一种数据传输方法、装置、电子设备以及存储介质。

第一方面,本公开实施例提供了一种数据传输方法,应用于数据传输端,包括:获取待传输数据,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块;确定所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;向分布式消息中间件RocketMQ传输所述至少一个待传输的数据块和所述待传输的数据块的第一传输信息。

一种可选的实施方式中,所述对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块,包括:对所述待传输数据进行加密,并对加密之后的待传输数据进行分块处理,得到所述至少一个待传输的数据块;或者对所述待传输数据进行数据分块处理,得到初始数据块,并对所述初始数据块进行加密处理,得到所述至少一个待传输的数据块。

一种可选的实施方式中,所述方法还包括:获取数据接收端返回的第一校验信息;其中,所述第一校验信息为所述数据接收端基于接收到的数据块生成的校验信息;对所述待传输数据进行计算,得到所述待传输数据的校验信息,得到第二校验信息;将所述第一校验信息和所述第二校验信息进行比对,得到第一比对结果,其中,所述第一比对结果用于表征所述数据接收端接收到的数据块是否完整。

一种可选的实施方式中,所述第一校验信息为所述数据接收端接收到的每个数据块的校验信息,所述第二校验信息为所述至少一个待传输的数据块中每个数据块的校验信息;所述将所述第一校验信息和所述第二校验信息进行比对,得到第一比对结果,包括:将所述第一校验信息和所述第二校验信息进行匹配,得到至少一个匹配校验组,其中,相同匹配校验组中所包含的校验信息对应相同的数据块;将每个匹配校验组中的第一校验信息和第二校验信息进行比对,得到每个所述匹配校验组的比对结果,以根据所述比对结果确定所述数据接收端接收到的数据块是否完整。

一种可选的实施方式中,所述第一校验信息为所述数据接收端接收到的每个数据块的校验信息,所述第二校验信息为所述至少一个待传输的数据块中每个数据块的校验信息;所述将所述第一校验信息和所述第二校验信息进行比对,所述方法还包括:获取所述第一校验信息的数量,得到第一数量;并获取所述第二校验信息的数量,得到第二数量;在所述第一数量和所述第二数量不相同的情况下,将成功传输至所述数据接收端的数据块的第二校验信息和所述第一校验信息进行比对,得到第二比对结果;并确定未成功传输至所述数据接收端的数据块。

一种可选的实施方式中,所述确定未成功传输至所述数据接收端的数据块,包括:获取包含所述数据接收端接收到的每个数据块的标识信息的第一标识信息,并获取包含所述至少一个待传输的数据块中每个待传输的数据块的标识信息的第二标识信息。将所述第一标识信息中包含且第二标识信息中不包含的标识信息确定为目标标识信息,并将所述目标标识信息所对应的数据块确定为所述未成功传输至数据接收端的数据块。

一种可选的实施方式中,所述方法还包括:在根据所述比对结果确定出所述数据接收端接收到的数据块不完整的情况下,确定所述至少一个待传输的数据块中未成功发送到所述数据接收端的目标数据块;确定所述目标数据块的第二传输信息,其中,所述第二传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;向所述分布式消息中间件RocketMQ重新传输所述目标数据块和所述第二传输信息。

第二方面,本公开实施例提供了另一种数据传输方法,应用于分布式消息中间件RocketMQ,包括:获取数据传输端发送的至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块。

一种可选的实施方式中,所述按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块,包括:根据所述至少一个待传输的数据块的第一传输信息中的接收地址,确定数据接收端的设备信息,所述设备信息包括以下至少之一:数量、种类、设备优先级;按照所述设备信息和所述第一传输信息,生成至少一个目标传输队列,其中,一个目标传输队列对应一个数据接收端,所述目标传输队列用于指示传输至对应数据接收端的数据块;按照每个所述目标传输队列向所述数据接收端传输所述至少一个待传输的数据块。

一种可选的实施方式中,所述按照每个所述目标传输队列向所述数据接收端传输所述至少一个待传输的数据块,包括:在所述数据接收端的数量为多个的情况下,创建多个传输进程,其中,一个数据接收端对应一个传输进程,一个传输进程对应多个传输线程,每个传输线程对应传输一个数据块;基于每个所述传输进程中的多个传输线程,按照每个所述目标传输队列向该传输进程对应的数据接收端发送对应的数据块。

一种可选的实施方式中,所述方法还包括:获取数据接收端返回的数据容量信息,其中,所述数据容量信息用于表征该数据接收端所能接收数据块的容量;向数据传输端返回所述数据容量信息,以使所述数据传输端根据所述数据容量信息对所述待传输数据进行数据分块处理,得到所述至少一个待传输的数据块。

第三方面,本公开实施例还提供了一种数据传输装置,安装在数据传输端,包括:第一获取模块,用于获取待传输数据,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块;确定模块,用于确定每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;第一传输模块,用于向分布式消息中间件RocketMQ传输所述至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息。

第四方面,本公开实施例还提供了另一种数据传输装置,安装在分布式消息中间件RocketMQ,包括:第二获取模块,用于获取数据传输端发送的至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;第二传输模块,用于按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块。

第五方面,本公开实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面至第二方面中任一种可能的实施方式中的步骤。

第六方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面至第二方面中任一种可能的实施方式中的步骤。

本公开实施例提供的数据传输方法、装置、电子设备以及存储介质,通过将待传输数据进行分块处理,并通过分布式消息中间件RocketMQ对上述至少一个待传输的数据块进行传输的方式,可以提高文件传输的效率,且通过设置第一传输信息的方式,可以通过实现对每个待传输的数据块进行数据传输的管理,以满足用户的各种数据传输需求。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本公开实施例所提供的一种数据传输方法的流程图;

图2示出了本公开实施例所提供的另一种数据传输方法的流程图;

图3a示出了本公开实施例所提供的一对一传输方式的示意图;

图3b示出了本公开实施例所提供的一对多传输方式的示意图;

图4示出了本公开实施例所提供的一种数据传输装置的示意图;

图5示出了本公开实施例所提供的另一种数据传输装置的示意图;

图6示出了本公开实施例所提供的一种电子设备的示意图

图7示出了本公开实施例所提供的另一种电子设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。

经研究发现,现有的数据传输方案存在传输大文件和海量文件时传输耗时较长,从而导致传输效率较低的问题。

基于上述研究,本公开提供了一种数据传输方法、装置、电子设备以及存储介质,通过将待传输数据进行分块处理,并通过分布式消息中间件RocketMQ对上述至少一个待传输的数据块进行传输的方式,可以提高文件传输的效率,且通过设置第一传输信息的方式,可以通过实现对每个待传输的数据块进行数据传输的管理,以满足用户的各种数据传输需求。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种数据传输方法进行详细介绍,本公开实施例所提供的数据传输方法的执行主体一般为具有一定计算能力的电子设备。在一些可能的实现方式中,该数据传输方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

参见图1所示,为本公开实施例提供的一种数据传输方法的流程图,应用于数据传输端,所述方法包括步骤S101~S105,其中:

S101:获取待传输数据,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块。

在本公开实施例中,在传输上述待传输数据前,首先可以获取该待传输数据的容量,并按照预设数据容量,对该待传输数据进行数据分块处理。

这里,预设数据容量可以根据不同的数据传输情况进行设置。在一种可选的实施方式中,数据传输情况的判断依据可以为待传输数据的容量。

这里,可以预先设定一个容量标准。若该待传输数据的容量未达到该容量标准,则对该待传输数据进行数据分块处理时的预设数据容量可以为固定值,例如10KB(Kilobyte,千字节)。除了10KB之外,该预设数据容量还可以设定为其他数值,此处不做具体限定。

若该待传输数据的容量达到或者超过该容量标准,则对该待传输数据进行数据分块处理时的预设数据容量可以进行适应性调整。例如,可以在上述固定值的基础上,增大该预设数据容量。

例如,上述容量标准为3GB(Gigabyte,吉字节),那么,若待传输数据的容量小于3GB,则上述预设数据容量均为10KB,也就是说,在对待传输数据进行数据分块处理时,可以将该待传输数据处理成若干个容量为10KB的待传输的数据块。

又例如,若上述待传输数据的容量为5GB,大于容量标准为3GB,那么,该预设数据容量可以为20KB,也就是说,在对待传输数据进行数据分块处理时,可以将该待传输数据处理成若干个容量为20KB的待传输的数据块。

S103:确定所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式。

在本公开实施例中,在对上述待传输数据进行分块处理后,就可以确定该待传输数据所对应的待传输的数据块的第一传输信息。

这里,每个待传输的数据块的第一传输信息可以相同,还可以不同,例如,针对每个数据块,均设置了对应的第一传输信息。

接收地址可以为数据接收端的IP(Internet Protocol)地址。其中,该数据接收端为接收待传输数据的设备端。

传输时间可以为将该待传输的数据块传输至数据接收端的时间或者该数据接收端接收该数据块的时间。具体的,针对每个传输时间,可以为其设置对应的传输模式,例如,该传输模式可以为立即传输或者延迟传输,比如,可以设置传输时间T所对应的传输模式为立即传输,如果达到传输时间T,则立即对得到的至少一个待传输的数据块进行传输。

除此之外,该传输时间还可以设置为数据分块处理完成的时间。此时,立即传输可以理解为在对待传输数据进行分块处理之后,即对得到的至少一个待传输的数据块进行传输。

在本公开实施例中,传输时间也可以设置为延时传输,即在到达传输时间之后,延迟预设时间段之后对上述至少一个待传输的数据块进行传输。

例如,获取待传输数据的时间为13:00,传输时间设置为13:15分,且预设时间段为15分钟,此时,可以在到达传输时间之后,延迟至13:30对数据块进行传输。

假设,上述待传输数据中可以包含至少一个待传输文件,那么每个待传输文件对应着至少一个待传输的数据块。此时,在设置上述传输优先级时,就可以根据待传输数据中每个待传输文件的优先级确定所属于该待传输文件的至少一个待传输的数据块的传输顺序。

最后,上述传输方式可以为根据通信协议和上述数据接收端确定的传输方式,例如,有线传输、无线传输、以太网传输等。

S105:向分布式消息中间件RocketMQ传输所述至少一个待传输的数据块和所述待传输的数据块的第一传输信息。

在本公开实施例中,可以将上述至少一个待传输的数据块和该待传输的数据块所对应的第一传输信息传输至上述分布式消息中间件RocketMQ,以使该分布式消息中间件RocketMQ按照上述第一传输信息对待传输的数据块进行传输。

通过上述描述可知,在本公开实施例中,通过将待传输数据进行分块处理,并通过分布式消息中间件RocketMQ对上述至少一个待传输的数据块进行传输的方式,可以提高文件传输的效率,且通过设置第一传输信息的方式,可以通过实现对每个待传输的数据块进行数据传输的管理,以满足用户的各种数据传输需求。

在本公开实施例中,步骤S101,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块时,还可以对该待传输数据进行加密处理,具体包括如下方式:

方式一:

对所述待传输数据进行加密,并对加密之后的待传输数据进行分块处理,得到所述至少一个待传输的数据块。

在本公开实施例中,可以先对待传输数据进行加密,然后再对加密之后的待传输数据进行数据分块处理。具体的,在对上述待传输数据进行加密时,可以根据上述第一传输信息中的传输方式,在预设的至少一种加密方式中,选择任一加密方式作为目标加密方式,并通过该目标加密方式对该待传输数据进行加密。

具体的,上述预设加密方式可以为对称加密算法加密、MD5(Message DigestAlgorithm5,消息摘要算法第五版)加密、Base64加密、钥匙串加密等。除此之外,能够实现数据加密的加密方式均在本公开的保护范围内。

方式二:

对所述待传输数据进行数据分块处理,得到初始数据块,并对所述初始数据块进行加密处理,得到所述至少一个待传输的数据块。

在本公开实施例中,可以先对待传输数据进行数据分块处理,再对得到的初始数据块进行加密,从而得到该待传输数据的至少一个待传输的数据块。

具体的,在对上述初始数据块进行加密时,可以采用全部加密算法或者部分加密算法。例如,在采用全部加密算法进行加密时,可以对上述待传输数据中的初始数据块进行逐一加密。

在采用部分加密算法时,可以按照该部分加密算法中所指示的加密部位对初始数据块进行加密。例如,可以设置待传输数据中的加密节点,并对该节点之前的初始数据块,或者对该节点之后的初始数据块进行逐一加密。

通过上述描述可知,在本公开实施例中,可以通过不同的加密方式对该待传输数据进行加密处理,从而提高传输过程中的安全性。

在本公开实施例中,上述分布式消息中间件RocketMQ将上述至少一个待传输的数据块传输至数据接收端后,还可以对该数据接收端接收到的数据块进行校验,从而确定该数据接收端接收到的数据块的完整性。具体校验方法包括如下过程:

(1)获取数据接收端返回的第一校验信息;其中,所述第一校验信息为所述数据接收端基于接收到的数据块生成的校验信息。

(2)对所述待传输数据进行计算,得到所述待传输数据的校验信息,得到第二校验信息。

(3)将所述第一校验信息和所述第二校验信息进行比对,得到第一比对结果,其中,所述第一比对结果用于表征所述数据接收端接收到的数据块是否完整。

在一种可选的实施方式中,上述数据接收端在接收到数据块后,就可以计算该数据接收端接收到的数据块的第一校验信息,并将该第一校验信息通过上述分布式消息中间件RocketMQ返回至数据传输端。例如,该第一校验信息可以为该数据接收端接收到的数据块的MD5值。

然后,数据传输端,还可以对待传输数据的MD5值进行计算,并将该待传输数据的MD5值确定为第二校验信息。

在上述数据传输端接收到上述第一校验信息之后,就可以将该第一校验信息所对应的MD5值和第二校验信息所对应的MD5值进行比对,得到第一比对结果。其中,该第一比对结果用于表征上述第一校验信息所对应的MD5值和第二校验信息所对应的MD5值是否相同,若相同,则说明上述数据接收端接收到的数据块为上述至少一个待传输的数据块;若不相同,则说明上述数据接收端接收到的数据块不完整,即未完整接收到上述至少一个待传输的数据块。

在另一种可选的实施方式中,还可以通过上述分布式消息中间件RocketMQ将上述数据传输端计算得到的第二校验信息传输至数据接收端,以使该数据接收端对第一校验信息和第二校验信息进行比对,得到用于表征该数据接收端接收到的数据块是否完整的第一比对结果。

通过上述描述可知,在本公开实施例中,数据接收端在接收到上述分布式消息中间件RocketMQ发送的数据块后,还可以通过上述第一校验信息以及第二校验信息,确定上述数据接收端接收到的数据块是否完整,从而在传输过程中因为意外断电等情况造成数据丢失时,确定数据接收端对数据块的接收情况。

在本公开实施例中,在第一校验信息为所述数据接收端接收到的每个数据块的校验信息,所述第二校验信息为所述至少一个待传输的数据块中每个数据块的校验信息的情况下,将所述第一校验信息和所述第二校验信息进行比对,得到第一比对结果,具体包括如下过程:

(1)将所述第一校验信息和所述第二校验信息进行匹配,得到至少一个匹配校验组,其中,相同匹配校验组中所包含的校验信息对应相同的数据块。

(2)将每个匹配校验组中的第一校验信息和第二校验信息进行比对,得到每个所述匹配校验组的比对结果,以根据所述比对结果确定所述数据接收端接收到的数据块是否完整。

在本公开实施例中,在确定校验信息时,还可以以数据块为基本单位进行确定。

具体的,在确定上述第一校验信息时,可以对上述数据接收端接收到的每个数据块的MD5值进行计算,并得到包含接收到的每个数据块的MD5值的第一校验信息。

在确定上述第二校验信息,可以对上述待传输数据进行数据分块处理之后得到的至少一个待传输的数据块的MD5值进行计算,并得到包含每个待传输的数据块的MD5值的第二校验信息。

然后,在对上述第一校验信息和第二校验信息进行比对时,可以先根据数据块的标识信息对第一校验信息和第二校验信息中所指示的相同的数据块进行匹配,得到至少一个匹配校验组。

接下来,就可以对每个匹配校验组中的两个数据块的MD5值进行比对,得到每个匹配校验组的校验结果,若该匹配校验组中的两个数据块的MD5值相同,则该匹配校验组的校验结果输出为1;若该匹配校验组中的两个数据块的MD5值不相同,则该匹配校验组的校验结果输出为0。

另外的,若存在上述第二校验信息中所指示的数据块在上述第一校验数据中无法查找到相同的数据块的情况,则校验结果直接输出为0。

若上述全部匹配校验组得校验结果输出均为1,则确定上述数据接收端接收到的数据块为完整的,若上述全部匹配校验组得校验结果存在0,则确定上述数据接收端接收到的数据块为不完整的。

通过上述描述可知,在本公开实施例中,在对上述第一校验信息和第二校验信进行比对时,还可以以数据块为基础单位进行比对,从而提高了比对结果的准确性。

在本公开实施例中,将所述第一校验信息和所述第二校验信息进行比对,还包括如下过程:

(1)获取所述第一校验信息的数量,得到第一数量;并获取所述第二校验信息的数量,得到第二数量。

(2)在所述第一数量和所述第二数量不相同的情况下,将成功传输至所述数据接收端的数据块的第二校验信息和所述第一校验信息进行比对,得到第二比对结果;并确定未成功传输至所述数据接收端的数据块。

在本公开实施例中,首先,可以获取数据接收端接收到的数据块的第一校验信息的第一数量,并获取上述至少一个待传输的数据块的第一校验信息的第二数量。然后,就可以对上述第一数量和第二数量进行比对,得到用于表征该数据接收端接收到的数据块是否完整的第二比对结果。

其中,若上述第一数量和第二数量相同,则可以执行以下步骤:将所述第一校验信息和所述第二校验信息进行匹配,得到至少一个匹配校验组,其中,相同匹配校验组中所包含的校验信息对应相同的数据块;并将每个匹配校验组中的第一校验信息和第二校验信息进行比对,得到每个所述匹配校验组的比对结果,以根据所述比对结果确定所述数据接收端接收到的数据块是否完整。

若上述第一数量和第二数量不相同,则确定上述接收端接收到的数据块为不完整的。此时,为了进一步校验成功传输至数据接收端的数据块的完整性,还可以将成功传输至数据接收端的数据块的第二校验信息和第一校验信息进行比对,得到第二比对结果,从而根据第二比对结果确定成功传输至数据接收端的数据块是否为完整的。例如,第二比对结果为一致,则说明成功传输至数据接收端的数据块是完整的,否则,是不完整的。

除此之外,还可以根据第一数量和第二数量,确定未成功传输至数据接收端的数据块。

通过上述描述可知,在本公开实施例中,在对上述第一校验信息和第二校验信进行比对时,还可以根据数据接收端接收到的数据块数量和至少一个待传输的数据块的数量的比对结果确定数据接收端接收到的数据是否完整,从而提高了比对结果的准确性。

在本公开实施例中,确定未成功传输至所述数据接收端的数据块,具体包括如下过程:

(1)获取包含所述数据接收端接收到的每个数据块的标识信息的第一标识信息,并获取包含所述至少一个待传输的数据块中每个待传输的数据块的标识信息的第二标识信息。

(2)将所述第一标识信息中包含且第二标识信息中不包含的标识信息确定为目标标识信息,并将所述目标标识信息所对应的数据块确定为所述未成功传输至数据接收端的目标数据块。

在本公开实施例中,可以将数据接收端接收到的数据块的第一标识信息和至少一个待传输的数据块的第二标识信息进行比对,从而确定出目标标识信息,并将该目标标识信息所对应的数据块确定为未成功传输至数据接收端的数据块。

通过上述描述可知,在本公开实施例中,还可以确定出未成功传输至数据接收端的数据块,从而实现因突发情况导致传输中断时的数据续传。

在本公开实施例中,在根据所述比对结果确定出所述数据接收端接收到的数据块不完整的情况下,所述方法还包括如下过程:

(1)确定所述至少一个待传输的数据块中未成功发送到所述数据接收端的目标数据块;

(2)确定所述目标数据块的第二传输信息,其中,所述第二传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

(3)向所述分布式消息中间件RocketMQ重新传输所述目标数据块和所述第二传输信息。

在本公开实施例中,根据上述目标标识信息确定出目标数据块后,就可以确定出该目标数据块的第二传输信息。

其中,上述第二传输信息中所包含的参数和上述第一传输信息中所包含的参数可以为相同的,具体参数的内容可能不同。

另外的,上述第二传输信息中所包含的参数的数值和上述第一传输信息中所包含参数的数值还可以为不相同的。例如,上述数据接收端的数量为三个,分别为P1,P2和P3,其中,只有数据接收端P2未接收到上述目标数据块。那么,在确定上述第二传输信息时,上述接收地址以及传输方式均根据该数据接收端P2的设备信息进行确定。

在确定出上述目标数据块以及该目标数据块所对应的第二传输信息后,就可以将该目标数据块以及第二传输信息传输至上述分布式消息中间件RocketMQ。

通过上述描述可知,在本公开实施例中,在确定出未成功发送到数据接收端的目标数据块后,还可以确定该目标数据块的第二传输信息,以使得上述分布式消息中间件RocketMQ根据该第二传输信息将该目标数据块传输至对应的数据接收端,从而保证数据续传的准确性。

参见图2所示,为本公开实施例提供的另一种数据传输方法的流程图,应用于分布式消息中间件RocketMQ,所述方法包括步骤S201~S203,其中:

S201:获取数据传输端发送的至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

S203:按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块。

在本公开实施例中,上述分布式消息中间件RocketMQ在进行至少一个待传输的数据块的传输时,可以按照该至少一个待传输的数据块所对应的第一传输信息进行传输。

具体的,上述分布式消息中间件RocketMQ可以实现针对待传输数据的管理以及通过多种传输方式对待传输数据进行传输,例如,传输方式可以为一对一传输或者一对多传输,针对待传输数据的管理可以为接收地址的配置,传输时间的设置,按照优先级以及不同的传输方式进行传输等。

方式一:一对一传输

如图3a所示,一对一传输即一个数据传输端通过上述分布式消息中间件RocketMQ将至少一个待传输的数据块传输至一个数据接收端。因此,在一对一传输的传输方式中,上述至少一个待传输的数据块所对应的接收地址为一个。

方式一:一对多传输

如图3b所示,一对多传输即一个数据传输端通过上述分布式消息中间件RocketMQ将至少一个待传输的数据块传输至多个数据接收端,在图3b中,数据接收端分别为P1、P2、P3。因此,在一对多传输的传输方式中,上述至少一个待传输的数据块所对应的接收地址为多个,针对每个传输地址都可以创建独立的传输进程,并针对每个传输进程设置不同的传输时间以及传输方式。

通过上述描述可知,在本公开实施例中,上述分布式消息中间件RocketMQ可以实现针对待传输数据的管理以及多种传输方式对待传输数据进行传输,从而提高了本公开技术方案的适用性,同时提高了用户的数据传输体验。

在本公开实施例中,步骤S203,按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块,具体包括如下过程:

(1)根据所述至少一个待传输的数据块的第一传输信息中的接收地址,确定数据接收端的设备信息,所述设备信息包括以下至少之一:数量、种类、设备优先级。

(2)按照所述设备信息和所述第一传输信息,生成至少一个目标传输队列,其中,一个目标传输队列对应一个数据接收端,所述目标传输队列用于指示传输至对应数据接收端的数据块。

(3)按照每个所述目标传输队列向所述数据接收端传输所述至少一个待传输的数据块。

在本公开实施例中,首先可以根据第一传输信息中的数据接收端的接收地址,确定出该数据接收端的设备信息。

在本公开实施例中,分布式消息中间件RocketMQ在获取到待传输的数据块的第一传输信息之后,可以确定第一传输信息中的接收地址,并根据该接收地址确定数据接收端的设备信息,例如,确定数据接收端的数量,其中,可以将相同接收地址所对应的设备确定为一个数据接收端;还可以确定每个数据接收端的种类,以及每个数据接收端的设备优先级。

在确定出设备信息之后,就可以根据设备信息和第一传输信息,为每个数据接收端生成一个目标传输队列,该目标传输队列中包含向对应的数据接收端传输的数据块,该目标传输队列可以为先进先出队列。

比如,在数据接收端的数量为多个的情况下,可以在待传输的数据块中确定所属于每个数据接收端的数据块,并按照每个数据块的传输优先级,将该数据块的传输顺序进行排序,得到排序队列,其中,该排序队列即为该数据接收端所对应的目标传输队列。

在为每个数据接收端确定出对应的目标传输队列之后,就可以按照每个目标传输队列向数据接收端传输所述至少一个待传输的数据块。

在一个可选的实施方式中,在数据接收端的数量为多个的情况下,可以在分布式消息中间件RocketMQ和每个数据接收端之间建立一个对应传输进程,该传输进程可以实现数据块的分布式同步传输,即可以分布式消息中间件RocketMQ可以同时通过每个传输进程,向多个数据接收端同时进行数据块的传输。

需要说明的是,若分布式消息中间件RocketMQ和数据接收端之间所允许创建的传输进程的数量小于数据接收端的数量,则可以按照设备优先级建立对应的传输进程。例如,可以首先为设备优先级较高的数据接收端建立对应的传输进程。

通过上述描述可知,在本公开实施例中,还可以根据数据接收端的设备信息和第一传输信息确定出上述至少一个待传输的数据块的目标传输队列,并按照该目标传输队列对该至少一个待传输的数据块进行传输,从而提高用户在进行数据传输操作时的操作体验。

在本公开实施例中,按照每个所述目标传输队列向所述数据接收端传输所述至少一个待传输的数据块,具体包括如下过程:

(1)在所述数据接收端的数量为多个的情况下,创建多个传输进程,其中,一个数据接收端对应一个传输进程,一个传输进程对应多个传输线程,每个传输线程对应传输一个数据块。

(2)基于每个所述传输进程中的多个传输线程,按照每个所述目标传输队列向该传输进程对应的数据接收端发送对应的数据块。

在本公开实施例中,在进行数据传输时,针对每个数据接收端都可以创建一个传输进程,其中,该传输进程用于传输上述至少一个待传输的数据块。

针对每个传输进程,可以包含多个传输线程。这里,每个传输进程用于实现向每个数据接收端传输对应的数据块,每个传输进程中的每个传输线程,用于传输每个数据块。

例如,数据接收端包含P1、P2和P3,则可以在分布式消息中间件RocketMQ和每个数据接收端之间建立一个传输进程,比如,Q1、Q2和Q3。针对每个传输进程,可以对应创建多个创建线程。例如,针对传输进程Q1,可以为其创建多个传输线程,该传输线程用于对该数据接收端P1所对应的目标传输队列中的数据块进行传输。

通过上述描述可知,在本公开实施例中,针对多个数据接收端,不仅可以实现分布式同步传输,针对每个数据接收端所对应的多个数据块,还可以通过多个传输线程实现同步式分布传输,以提高数据传输的效率。

在本公开实施例中,在对上述待传输数据进行数据分块处理,得到至少一个待传输的数据块之前,所述方法还包括如下过程:

(1)获取数据接收端返回的数据容量信息,其中,所述数据容量信息用于表征该数据接收端所能接收数据块的容量。

(2)向数据传输端返回所述数据容量信息,以使所述数据传输端根据所述数据容量信息对所述待传输数据进行数据分块处理,得到所述至少一个待传输的数据块。

在本公开实施例中,在对上述待传输数据进行分块处理之前,首先可以通过分布式消息中间件RocketMQ获取数据接收端返回的数据容量信息,并按照该数据容量信息对待传输数据进行分块处理,从而得到至少一个待传输的数据块。

例如,若上述数据接收端返回的数据容量为50KB,待传输数据的容量为2GB,那么,在对该待传输数据进行数据分块处理时,可以将该待传输数据处理为容量为50KB的至少一个待传输的数据块。

应理解的是,若上述数据接收端的数量为多个,那么,每个数据接收端的数据容量信息可能为不同的。因此,在一种可选的实施方式中,数据传输端在接收到每个数据接收端返回的不相同的数据容量信息时,可以将待传输数据分别按照每个数据接收端返回的不相同的数据容量信息进行数据分块处理。

例如,若上述数据接收端为P1和P2,其中,P1返回的数据容量信息为30KB,P2返回的数据容量信息为50KB,根据上述设备信息中的设备优先级确定出P1为优先传输。

那么,首先可以通过数据分块处理将上述待传输数据处理为容量30KB的至少一个待传输的数据块,在通过针对P1的传输进程对该容量30KB的至少一个待传输的数据块传输结束后,就可以将上述待传输数据处理为容量50KB的至少一个待传输的数据块,并通过针对P2的传输进程对该容量50KB的至少一个待传输的数据块进行传输。

通过上述描述可知,在本公开实施例中,还可以适应数据接收端返回的数据容量信息,对上述待传输数据进行数据分块处理,从而进一步提高了数据传输的速度。

综上,在本公开实施例中,通过将待传输数据进行分块处理,并通过分布式消息中间件RocketMQ对上述至少一个待传输的数据块进行传输的方式,可以提高文件传输的效率,且通过设置第一传输信息的方式,可以通过实现对每个待传输的数据块进行数据传输的管理,以满足用户的各种数据传输需求。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与数据传输方法对应的数据传输装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述数据传输方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

参照图4所示,为本公开实施例提供的一种数据传输装置的示意图,所述装置包括:第一获取模块41、确定模块42、第一传输模块43;其中,

第一获取模块41,用于获取待传输数据,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块;

确定模块42,用于确定每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

第一传输模块43,用于向分布式消息中间件RocketMQ传输所述至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息。

本公开实施例通过将待传输数据进行分块处理,并通过分布式消息中间件RocketMQ对上述至少一个待传输的数据块进行传输的方式,可以提高文件传输的效率,且通过设置第一传输信息的方式,可以通过实现对每个待传输的数据块进行数据传输的管理,以满足用户的各种数据传输需求。

一种可能的实施方式中,第一获取模块41,还用于:对所述待传输数据进行加密,并对加密之后的待传输数据进行分块处理,得到所述至少一个待传输的数据块;或者对所述待传输数据进行数据分块处理,得到初始数据块,并对所述初始数据块进行加密处理,得到所述至少一个待传输的数据块。

一种可能的实施方式中,该装置还用于:获取数据接收端返回的第一校验信息;其中,所述第一校验信息为所述数据接收端基于接收到的数据块生成的校验信息;对所述待传输数据进行计算,得到所述待传输数据的校验信息,得到第二校验信息;将所述第一校验信息和所述第二校验信息进行比对,得到第一比对结果,其中,所述第一比对结果用于表征所述数据接收端接收到的数据块是否完整。

一种可能的实施方式中,该装置还用于:将所述第一校验信息和所述第二校验信息进行匹配,得到至少一个匹配校验组,其中,相同匹配校验组中所包含的校验信息对应相同的数据块;将每个匹配校验组中的第一校验信息和第二校验信息进行比对,得到每个所述匹配校验组的比对结果,以根据所述比对结果确定所述数据接收端接收到的数据块是否完整。

一种可能的实施方式中,该装置还用于:获取所述第一校验信息的数量,得到第一数量;并获取所述第二校验信息的数量,得到第二数量;在所述第一数量和所述第二数量不相同的情况下,将成功传输至所述数据接收端的数据块的第二校验信息和所述第一校验信息进行比对,得到第二比对结果;并确定未成功传输至所述数据接收端的数据块。

一种可能的实施方式中,该装置还用于:获取包含所述数据接收端接收到的每个数据块的标识信息的第一标识信息,并获取包含所述至少一个待传输的数据块中每个待传输的数据块的标识信息的第二标识信息。将所述第一标识信息中包含且第二标识信息中不包含的标识信息确定为目标标识信息,并将所述目标标识信息所对应的数据块确定为所述未成功传输至数据接收端的数据块。

一种可能的实施方式中,该装置还用于:在根据所述比对结果确定出所述数据接收端接收到的数据块不完整的情况下,确定所述至少一个待传输的数据块中未成功发送到所述数据接收端的目标数据块;确定所述目标数据块的第二传输信息,其中,所述第二传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;向所述分布式消息中间件RocketMQ重新传输所述目标数据块和所述第二传输信息。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

参照图5所示,为本公开实施例提供的另一种数据传输装置的示意图,所述装置包括:第二获取模块51、第二传输模块52;其中,

第二获取模块51,用于获取数据传输端发送的至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

第二传输模块52,用于按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块。

一种可能的实施方式中,第二传输模块52,还用于:根据所述至少一个待传输的数据块的第一传输信息中的接收地址,确定数据接收端的设备信息,所述设备信息包括以下至少之一:数量、种类、设备优先级;按照所述设备信息和所述第一传输信息,生成至少一个目标传输队列,其中,一个目标传输队列对应一个数据接收端,所述目标传输队列用于指示传输至对应数据接收端的数据块;按照每个所述目标传输队列向所述数据接收端传输所述至少一个待传输的数据块。

一种可能的实施方式中,第二传输模块52,还用于:在所述数据接收端的数量为多个的情况下,创建多个传输进程,其中,一个数据接收端对应一个传输进程,一个传输进程对应多个传输线程,每个传输线程对应传输一个数据块;基于每个所述传输进程中的多个传输线程,按照每个所述目标传输队列向该传输进程对应的数据接收端发送对应的数据块。

一种可能的实施方式中,该装置还用于:获取数据接收端返回的数据容量信息,其中,所述数据容量信息用于表征该数据接收端所能接收数据块的容量;向数据传输端返回所述数据容量信息,以使所述数据传输端根据所述数据容量信息对所述待传输数据进行数据分块处理,得到所述至少一个待传输的数据块。

关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。

对应于图1中的数据传输方法,本公开实施例还提供了一种电子设备600,如图6所示,为本公开实施例提供的电子设备600结构示意图,包括:

处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述电子设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:

获取待传输数据,对所述待传输数据进行数据分块处理,得到至少一个待传输的数据块;

确定所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

向分布式消息中间件RocketMQ传输所述至少一个待传输的数据块和所述待传输的数据块的第一传输信息。

对应于图2中的数据传输方法,本公开实施例还提供了另一种电子设备700,如图7所示,为本公开实施例提供的电子设备700结构示意图,包括:

处理器71、存储器72、和总线73;存储器72用于存储执行指令,包括内存721和外部存储器722;这里的内存721也称内存储器,用于暂时存放处理器71中的运算数据,以及与硬盘等外部存储器722交换的数据,处理器71通过内存721与外部存储器722进行数据交换,当所述电子设备700运行时,所述处理器71与所述存储器72之间通过总线73通信,使得所述处理器71执行以下指令:

获取数据传输端发送的至少一个待传输的数据块和每个所述待传输的数据块的第一传输信息,其中,所述第一传输信息包括以下至少之一:接收地址、传输时间、传输优先级、传输方式;

按照每个所述待传输的数据块的第一传输信息,向数据接收端传输所述至少一个待传输的数据块。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的数据传输方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的数据传输方法的步骤,具体可参见上述方法实施例,在此不再赘述。

其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

相关技术
  • 数据传输方法、数据传输装置、电子设备及存储介质
  • 数据传输方法、数据传输装置、电子设备和存储介质
技术分类

06120114699900