CN112822260A - 文件传输方法及装置、电子设备、存储介质 - Google Patents
文件传输方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112822260A CN112822260A CN202011643052.2A CN202011643052A CN112822260A CN 112822260 A CN112822260 A CN 112822260A CN 202011643052 A CN202011643052 A CN 202011643052A CN 112822260 A CN112822260 A CN 112822260A
- Authority
- CN
- China
- Prior art keywords
- file
- transmitted
- message
- subfile
- theme
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种文件传输方法及装置、电子设备、计算机可读存储介质,方法包括:接收端设备响应于从消息中间件获取的传输指令消息,从传输指令消息中解析出至少一个待传输文件的文件名,并以依据文件名确定消息中间件上与待传输文件对应的主题,从依据该主题从消息中间件获取文件消息,基于文件消息中待传输文件的第一哈希值对与待传输文件对应的所有文件消息的载荷文件进行哈希校验,从而在校验通过时确定收到待传输文件。本方案通过对待传输文件分片处理,极大地提高了待传输文件的传输速率。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种文件传输方法及装置、电子设备、计算机可读存储介质。
背景技术
网络传输的数据量随着网络技术的发展而日益增加,对大文件的批量上传、下载所能处理的数量及效率的要求也越来越高,同时在网络环境中针对同一份文件的多点传输需求越来越多。在分布式集群系统中,需要对系统进行版本维护、应用升级、规则库升级等操作,涉及频繁的文件传输过程。由于网络环境的复杂性,在传输过程中不可避免的会出现数据丢失的情况。对于电子商务、物联网、云计算等领域的分布式集群系统,在出现数据丢失的问题时,由于数据量巨大,重新传输的难度非常高。
发明内容
本申请实施例的目的在于提供一种文件传输方法及装置、电子设备、计算机可读存储介质,用于实现文件传输任务。
一方面,本申请提供了一种文件传输方法,应用于发送端设备,包括:
根据待传输文件的文件名,在消息中间件创建与所述待传输文件对应的主题;
对所述待传输文件进行分片处理,获得多个待传输子文件;
依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件;
当所述待传输文件对应的文件消息发送完毕后,向所述消息中间件上指定主题发送传输指令消息;其中,所述传输指令消息包括所述待传输文件的文件名。
在一实施例中,所述依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件,包括:
根据每一待传输子文件的子文件序号,计算所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量;
基于每一待传输子文件构建文件消息;其中,所述文件消息包括所述待传输子文件;
依据与所述待传输文件对应的主题、所述分区号和所述偏移量,将所述文件消息发送至所述消息中间件。
在一实施例中,所述根据每一待传输子文件的子文件序号,计算所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量,包括:
以所述子文件序号对预设分区总数进行求余运算,获得所述待传输子文件对应的分区号;
以所述子文件序号对所述分区总数进行求商运算,获得所述待传输子文件在所述分区号对应分区的偏移量。
在一实施例中,所述方法还包括:
响应于从所述消息中间件上所述指定主题获取的对应于所述待传输文件的传输完成消息,删除所述消息中间件上对应于所述待传输文件的主题。
另一方面,本申请还提供了一种文件传输方法,应用于接收端设备,包括:
响应于从消息中间件上指定主题获取的传输指令消息,从所述传输指令消息解析出至少一个待传输文件的文件名;
根据所述文件名确定所述消息中间件上与所述待传输文件对应的主题;
依据所述待传输文件对应的主题,从所述消息中间件获取文件消息;其中,所述文件消息包括所述待传输文件的第一哈希值;
对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与所述待传输文件的第一哈希值是否一致;
若一致,确定接收到所述待传输文件。
在一实施例中,所述文件消息包括子文件序号列表,所述子文件序号列表包括所述待传输文件中所有待传输子文件的子文件序号,所述方法还包括:
如果所述计算结果与所述第一哈希值不一致,依据所述子文件序号列表确定每一缺失的待传输子文件的子文件序号;
根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息。
在一实施例中,所述文件消息包括待传输子文件的第二哈希值和待传输子文件在所述待传输文件中的偏移量;
在所述对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算之前,所述方法还包括:
对所述文件消息的载荷文件进行哈希计算,并判断计算结果与所述第二哈希值是否一致;
如果一致,依据所述待传输子文件在所述待传输文件中的偏移量,将所述载荷文件写入对应于所述待传输文件的磁盘文件。
在一实施例中,所述方法还包括:
如果所述载荷文件的计算结果与所述第二哈希值不一致,根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息。
在一实施例中,所述根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息,包括:
以所述子文件序号对预设分区总数进行求余运算,获得所述待传输子文件对应的分区号;
以所述子文件序号对所述分区总数进行求商运算,获得所述待发送子文件在所述分区号对应分区的偏移量;
依据所述待传输文件对应的主题、所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量,从所述消息中间件获取文件消息。
在一实施例中,所述传输指令消息包括至少两个待传输文件的文件名,所述方法还包括:
并行执行针对每一待传输文件的接收处理步骤。
在一实施例中,所述方法还包括:
当接收到所述传输指令消息中所有文件名对应的待传输文件,依据所述指定主题向所述消息中间件发送传输完成消息。
另一方面,本申请还提供了一种文件传输装置,应用于发送端设备,包括:
创建模块,用于根据待传输文件的文件名,在消息中间件创建与所述待传输文件对应的主题;
切分模块,用于对所述待传输文件进行分片处理,获得多个待传输子文件;
第一发送模块,用于依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件;
第二发送模块,用于当所述待传输文件对应的文件消息发送完毕后,向所述消息中间件上指定主题发送传输指令消息;其中,所述传输指令消息包括所述待传输文件的文件名。
另一方面,本申请还提供了一种文件传输装置,应用于接收端设备,包括:
解析模块,用于响应于从消息中间件上指定主题获取的传输指令消息,从所述传输指令消息解析出至少一个待传输文件的文件名;
第一确定模块,用于根据所述文件名确定所述消息中间件上与所述待传输文件对应的主题;
获取模块,用于依据所述待传输文件对应的主题,从所述消息中间件获取文件消息;其中,所述文件消息包括所述待传输文件的第一哈希值;
计算模块,用于对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与所述待传输文件的第一哈希值是否一致;
第二确定模块,用于若一致,确定接收到所述待传输文件。
进一步的,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述应用于发送端设备的文件传输方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述应用于发送端设备的文件传输方法。
进一步的,本申请还提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述应用于接收端设备的文件传输方法。
另外,本申请还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述应用于接收端设备的文件传输方法。
在本申请方案中,发送端设备依据待传输文件的文件名在消息中间件创建主题之后,对待传输文件进行分片处理,获得待传输子文件,通过主题和待传输子文件的子文件序号将待传输子文件发送至消息中间件之后,接收端设备可以从消息中间件获取携带待传输子文件的文件消息,并对获取到的待传输文件下所有文件消息的载荷文件进行哈希校验,从而确定是否接收到完整的待传输文件。由于通过消息中间件传输文件,解决了跨网络文件批量传输的问题,且通过对待传输文件分片处理,可极大地提高待传输文件的传输速率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的文件传输方法的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请另一实施例提供的电子设备的结构示意图;
图4为本申请一实施例提供的文件传输方法的流程示意图;
图5为本申请另一实施例提供的文件传输方法的流程示意图;
图6为本申请一实施例提供的文件消息发送方法的流程示意图;
图7为本申请一实施例提供的重新获取文件消息的方法的流程示意图;
图8为本申请一实施例提供的文件传输装置的框图;
图9为本申请另一实施例提供的文件传输装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的文件传输方法的应用场景示意图。如图1所示,该应用场景包括发送端200和接收端300;发送端200可以是服务器、服务器集群或云计算中心,可以通过消息中间件进行文件传输;接收端300可以是服务器、服务器集群或云计算中心,可以通过消息中间件接收文件;其中,消息中间件可以以分片-副本的形式对外提供消息服务,数据被拆分成多份分别位于不同的服务器上,且不同分片数据具有多个副本。当消息中间件中存在服务器发生故障后,其它服务器替代故障的服务器对外提供消息服务。
如图2所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图2中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是上述发送端200,用于执行应用于发送端设备的文件传输方法。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的应用于发送端设备的文件传输方法。
如图3所示,本实施例提供另一种电子设备2,包括:至少一个处理器21和存储器22,图3中以一个处理器21为例。处理器21和存储器22通过总线20连接,存储器22存储有可被处理器21执行的指令,指令被处理器21执行,以使电子设备2可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备2可以是上述接收端300,用于执行应用于接收端设备的文件传输方法。
存储器22可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器21执行以完成本申请提供的应用于发送端设备的文件传输方法。
参见图4,为本申请一实施例提供的文件传输方法的流程示意图,如图4所示,该方法可以包括以下步骤410-步骤440。
步骤410:根据待传输文件的文件名,在消息中间件创建与待传输文件对应的主题。
其中,待传输文件是需要从发送端设备传输至接收端设备的文件。
消息中间件可以是Kafka、RocketMQ等任意一种。
发送端设备在执行传输任务时,可能需要传输一个或多个待传输文件。发送端设备可以对每一待传输文件的文件名进行哈希计算,获得32位的哈希值,作为命名哈希值。其中,命名哈希值用于对消息中间件的主题进行命名。发送端设备可以以命名哈希值为名在消息中间件中创建主题(Topic),从而得到与每一个待传输文件对应的主题。
步骤420:对待传输文件进行分片处理,获得多个待传输子文件。
其中,待传输子文件中从待传输文件中切分得到的文件,同一待传输文件对应的所有待传输子文件可以组成该待传输文件。
示例性的,发送端设备可以依据预设的待传输子文件的文件大小(比如:1兆字节)对待传输文件进行分片处理,从而得到多个待传输子文件。
示例性的,发送端设备可以依据消息中间件上分区总数对待传输文件进行分片处理,得到对应于每一分区的待传输子文件。这里,在RocketMQ中分区指消息队列,分区总数为一个主题内消息队列总数。
步骤430:依据与待传输文件对应的主题和待传输子文件的子文件序号,将基于待传输子文件构建的文件消息发送至消息中间件。
其中,待传输子文件的子文件序号由发送端设备在切分时分配,一般可以是从0开始的自然数。
发送端设备可以依据待传输子文件的子文件序号,确定该待传输子文件在待传输文件对应主题下的分区和在该分区的偏移量,从而基于待传输子文件构建文件消息,并将文件消息发送至消息中间件。
文件消息是承载待传输子文件的消息,每一文件消息可以包含待传输文件的文件名、待传输文件的文件长度、待传输文件的哈希值(下文称为第一哈希值)、子文件序号列表(包含待传输文件中所有待传输子文件的子文件序号)、待传输子文件、待传输子文件的子文件序号、待传输子文件的哈希值(下文称为第二哈希值)、待传输子文件的文件长度、待传输子文件在待传输文件中的偏移量、待传输子文件在所要发送的分区的偏移量。
步骤440:当待传输文件对应的文件消息发送完毕后,向消息中间件上指定主题发送传输指令消息;其中,传输指令消息包括待传输文件的文件名。
发送端设备可以将与每一待传输子文件对应的文件消息发送至消息中间件,当从待传输文件下所有待传输子文件对应的文件消息均发送完毕时,可以确定已将该待传输文件发送至消息中间件。
当传输任务中所有待传输文件都发送至消息中间件时,发送端设备可以向消息中间件上指定主题发送传输指令消息。这里,指定主题是发送端设备和接收端设备之间用于传递与文件传输任务相关消息的主题,指定主题的主题名可预先配置在发送端设备和接收端设备;传输指令消息用于指示当前存在文件传输任务,传输指令消息可以携带文件名列表,该文件名列表包括本次传输任务中所有待传输文件的文件名。
为保证接收端设备和发送端设备可以互相传输消息,上述指定主题下可以包括两个第一分区和第二分区。发送端设备可以向指定主题的第一分区发送上述传输指令消息。
通过上述步骤410至步骤440的方法,发送端设备可以将待传输文件分片处理后发送至消息中间件,使得接收端设备可以根据消息订阅的方式从消息中间件获取上述待传输文件。将待传输文件切分成待传输子文件后,以待传输子文件构建通过消息中间件传输的文件消息,而消息中间件的大吞吐量可保证文件消息的快速传输。
参见图5,为本申请另一实施例提供的文件传输方法的流程示意图,如图5所示,该方法可以包括以下步骤510-步骤550。
步骤510:响应于从消息中间件上指定主题获取的传输指令消息,从传输指令消息解析出至少一个待传输文件的文件名。
接收端设备可以监听指定主题第一分区中的消息,从而可以在指定主题第一分区中出现传输指令消息后,及时获取该传输指令消息。
接收端设备从传输指令消息中解析出文件名列表,从而获得至少一个待传输文件的文件名。
步骤520:根据文件名确定消息中间件上与待传输文件对应的主题。
针对每一待传输文件的文件名,接收端设备可以对文件名进行哈希计算,获得32位的哈希值,作为命名哈希值。接收端设备可以确定名为命名哈希值的主题是对应于待传输文件的主题。
步骤530:依据待传输文件对应的主题,从消息中间件获取文件消息;其中,文件消息包括待传输文件的第一哈希值。
接收端设备在确定消息中间件上用于传输待传输文件的主题之后,可以从上述主题获取文件消息。
步骤540:对与待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与待传输文件的第一哈希值是否一致。
步骤550:若一致,确定接收到待传输文件。
接收端设备在获取文件消息后,可以从文件消息中解析出载荷文件。其中,载荷文件是文件消息传输的文件,在文件消息未出错的情况下,载荷文件为待传输子文件。
接收端设备可以为待传输文件创建磁盘文件,用于写入构成待传输文件的待传输子文件。接收端设备可以依据文件消息中待传输子文件在待传输文件中的偏移量,将文件消息中的载荷文件写入磁盘文件。在将载荷文件写入磁盘文件后,接收端设备可以记录该文件消息中待传输子文件的子文件序号、待传输子文件的第二哈希值、待传输子文件所在文件消息在分区中的偏移量、待传输子文件在待传输文件中的偏移量、待传输子文件的文件长度。
接收端设备在获得与待传输文件对应的主题中所有文件消息,并将文件消息的载荷文件写入磁盘文件后,可以对磁盘文件进行哈希计算,并判断计算结果与待传输文件的第一哈希值是否一致。一方面,两者不一致,说明存在错误的文件消息。另一方面,两者一致,说明接收到完整的待传输文件。
通过上述步骤510至步骤550的方法,接收端设备可以从消息中间件中获取多个文件消息,并以文件消息中的载荷文件写入磁盘文件,当磁盘文件通过哈希校验后,接收端设备获得待传输文件。
在一实施例中,参见图6,为本申请一实施例提供的文件消息发送方法的流程示意图,如图6所示,发送端设备在执行将文件消息发送至消息中间件时,可以执行如下步骤431-步骤433。
步骤431:根据每一待传输子文件的子文件序号,计算待传输子文件对应的分区号和在分区号对应分区的偏移量。
发送端设备可以以待传输子文件的子文件序号进行计算,从而得到待传输子文件对应的分区号和偏移量。这里,分区号指示发送待传输子文件的分区,偏移量指示待传输子文件在该分区的位置。
示例性的,发送端设备可以基于子文件序号对预设分区总数进行求余运算,获得待传输子文件对应的分区号。发送端设备可以以该子文件序号对分区总数进行求商运算,获得待传输子文件在分区号对应分区的偏移量。这里,分区总数是常量,发送端设备在创建与待传输文件对应的主题时可以确定分区总数。通过如下公式(1)表示分区号的计算过程:
d=M%C (1)
其中,d为分区号;M为子文件序号;C为分区总数。
通过如下公式(2)表示偏移量的计算过程:
r=M/C (2)
其中,r为偏移量;M为子文件序号;C为分区总数。
步骤432:基于每一待传输子文件构建文件消息;其中,文件消息包括待传输子文件。
步骤433:依据与待传输文件对应的主题、分区号和偏移量,将文件消息发送至消息中间件。
发送端设备可以基于待传输子文件构建文件消息,并依据待传输文件对应的主题、计算出的与待传输子文件对应的分区号和偏移量,将文件消息发送至消息中间件,从而将待传输子文件写入分区号指示分区中偏移量对应的位置。
通过上述措施,发送端设备可以依据子文件序号确定消息中间件中待传输子文件的存储位置,并写入以待传输子文件构建的文件消息。
在一实施例中,接收端设备在执行步骤540之前,可以对文件消息中的载荷文件进行哈希计算,并判断计算结果与文件消息中的第二哈希值是否一致。一方面,如果一致,说明载荷文件就是文件消息需要携带的待传输子文件,接收端设备可以依据待传输子文件在待传输文件中的偏移量将载荷文件写入磁盘文件。另一方面,如果不一致,说明文件消息出错,载荷文件并非待传输子文件。
在一实施例中,当载荷文件的哈希计算结果与第二哈希值不一致时,接收端设备可以根据文件消息中待传输子文件的子文件序号和待传输文件对应的主题,重新从消息中间件获取文件消息。
接收端设备可以基于待传输子文件的子文件序号确定该待传输子文件在消息中间件中的位置,从而重新获取携带该待传输子文件的文件消息。
在一实施例中,接收端设备在执行步骤540时,若确定待传输文件对应的所有文件消息中载荷文件的计算结果与第一哈希值不一致,可以确定存在错误的文件消息或者存在待传输子文件缺失的问题。
接收端设备可以依据文件消息中的子文件序号列表确定以每一缺失的待传输子文件的子文件序号。
一种情况下,由于接收端设备在将文件消息中载荷文件写入磁盘文件时,会记录文件消息中待传输子文件的子文件序号,接收端设备可以比对已经记录的子文件序号和子文件序号列表中的子文件序号,从而确定尚未写入磁盘文件的待传输子文件的子文件序号。
另一种情况下,如果接收端设备在将载荷文件写入磁盘文件前,未对载荷文件进行哈希校验,可以依据已经记录的待传输子文件在待传输文件中的偏移量和待传输子文件的文件长度,重新从磁盘文件中获取各载荷文件,并对载荷文件进行哈希校验。具体过程参照前文相关描述,在此不再赘述。当载荷文件通过哈希校验时,可以在子文件序号列表中添加标记,从而确定未通过哈希校验的载荷文件,相应的,确定该尚未写入磁盘文件的待传输文件的子文件序号。
接收端设备可以基于每一待传输子文件的子文件序号确定该待传输子文件在消息中间件中的位置,从而重新获取携带该待传输子文件的文件消息。
在一实施例中,参见图7,为本申请一实施例提供的重新获取文件消息的方法的流程示意图,如图7所示,该方法可以包括以下步骤710-步骤740。
步骤710:以子文件序号对预设分区总数进行求余运算,获得待传输子文件对应的分区号。
步骤720:以子文件序号对分区总数进行求商运算,获得待发送子文件在分区号对应分区的偏移量。
接收端设备可以以待传输子文件的子文件序号对预设分区总数进行求余运算,获得待传输子文件对应的分区号。接收端设备可以以该子文件序号对分区总数进行求商运算,获得待传输子文件在分区号对应分区的偏移量。这里,分区总数是常量,发送端设备可以通过传输指令消息传输与待传输文件对应的分区总数,使得接收端设备可以获知分区总数。计算过程可参照前文公式(1)和公式(2)。
步骤730:依据待传输文件对应的主题、待传输子文件对应的分区号和在分区号对应分区的偏移量,从消息中间件获取文件消息。
在计算出待传输子文件对应的分区号和在分区号对应分区的偏移量之后,接收端设备可以向消息中间件发起消息获取请求,该消息获取请求携带主题的名称、分区号和偏移量,从而重新从消息中间件获取文件消息。
接收端设备可以继续对文件消息中的载荷文件进行哈希验证,并在验证通过后将载荷文件写入对应于待传输文件的磁盘文件。
通过该措施,接收端设备可以依据待传输文件对应的主题和待传输子文件的子文件序号,从消息中间件重新获取携带待传输子文件的文件消息,从而在载荷文件哈希交易未通过或待传输子文件丢失的情况下,重新获取待传输子文件,而无需对整个待传输文件进行重传,大大提升了接收端设备接收文件的速率。
在一实施例中,接收端设备从传输指令消息中解析出至少两个待传输文件的文件名时,可以并行执行针对每一待传输文件的接收处理步骤。示例性的,接收端设备可以创建进程池,从进程池中为每一待传输文件分配对应的进程,从而由该进程执行上述步骤520至步骤550、以及后续相关的文件接收处理步骤。其中,每一进程包含多个线程,线程数量可以与分区总数相同,每一线程从对应分区获取文件消息,进一步提升文件传输速率。
在一实施例中,接收端设备可以检查文件名列表中各文件名对应的待传输文件是否传输完成,当接收到传输指令消息中所有文件名对应的待传输文件,接收端设备可以依据指定主题向消息中间件发送传输完成消息。接收端设备可以向指定主题的第二分区发送上述传输完成消息,该传输完成消息可以携带已完成传输的待传输文件的文件名,用于表示接收完成文件名对应的待传输文件。
在一实施例中,发送端设备可以监听消息中间件上指定主题第二分区中的消息,从而可以在指定主题第二分区中出现传输完成消息之后,可以删除消息中间件上对应于待传输文件的主题。
发送端设备可以从传输完成消息中解析出若干文件名,并依据文件名进行哈希计算后,获得命名哈希值,从而可在消息中间件中删除命名哈希值对应的主题和主题中的文件消息。
至此,文件传输过程结束。
参见图8,为本发明一实施例的一种文件传输装置,应用于发送端设备,如图8所示,该装置可以包括:
创建模块810,用于根据待传输文件的文件名,在消息中间件创建与所述待传输文件对应的主题;
切分模块820,用于对所述待传输文件进行分片处理,获得多个待传输子文件;
第一发送模块830,用于依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件;
第二发送模块840,用于当所述待传输文件对应的文件消息发送完毕后,向所述消息中间件上指定主题发送传输指令消息;其中,所述传输指令消息包括所述待传输文件的文件名。
参见图9,为本申请另一实施例提供的文件传输装置的框图,应用于接收端设备,如图9所示,该装置可以包括:
解析模块910,用于响应于从消息中间件上指定主题获取的传输指令消息,从所述传输指令消息解析出至少一个待传输文件的文件名;
第一确定模块920,用于根据所述文件名确定所述消息中间件上与所述待传输文件对应的主题;
获取模块930,用于依据所述待传输文件对应的主题,从所述消息中间件获取文件消息;其中,所述文件消息包括所述待传输文件的第一哈希值;
计算模块940,用于对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与所述待传输文件的第一哈希值是否一致;
第二确定模块950,用于若一致,确定接收到所述待传输文件。
上述装置中各个模块的功能和作用的实现过程具体详见上述文件传输方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (17)
1.一种文件传输方法,应用于发送端设备,其特征在于,包括:
根据待传输文件的文件名,在消息中间件创建与所述待传输文件对应的主题;
对所述待传输文件进行分片处理,获得多个待传输子文件;
依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件;
当所述待传输文件对应的文件消息发送完毕后,向所述消息中间件上指定主题发送传输指令消息;其中,所述传输指令消息包括所述待传输文件的文件名。
2.根据权利要求1所述的方法,其特征在于,所述依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件,包括:
根据每一待传输子文件的子文件序号,计算所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量;
基于每一待传输子文件构建文件消息;其中,所述文件消息包括所述待传输子文件;
依据与所述待传输文件对应的主题、所述分区号和所述偏移量,将所述文件消息发送至所述消息中间件。
3.根据权利要求2所述的方法,其特征在于,所述根据每一待传输子文件的子文件序号,计算所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量,包括:
以所述子文件序号对预设分区总数进行求余运算,获得所述待传输子文件对应的分区号;
以所述子文件序号对所述分区总数进行求商运算,获得所述待传输子文件在所述分区号对应分区的偏移量。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于从所述消息中间件上所述指定主题获取的对应于所述待传输文件的传输完成消息,删除所述消息中间件上对应于所述待传输文件的主题。
5.一种文件传输方法,应用于接收端设备,其特征在于,包括:
响应于从消息中间件上指定主题获取的传输指令消息,从所述传输指令消息解析出至少一个待传输文件的文件名;
根据所述文件名确定所述消息中间件上与所述待传输文件对应的主题;
依据所述待传输文件对应的主题,从所述消息中间件获取文件消息;其中,所述文件消息包括所述待传输文件的第一哈希值;
对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与所述待传输文件的第一哈希值是否一致;
若一致,确定接收到所述待传输文件。
6.根据权利要求5所述的方法,其特征在于,所述文件消息包括子文件序号列表,所述子文件序号列表包括所述待传输文件中所有待传输子文件的子文件序号,所述方法还包括:
如果所述计算结果与所述第一哈希值不一致,依据所述子文件序号列表确定每一缺失的待传输子文件的子文件序号;
根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息。
7.根据权利要求5所述的方法,其特征在于,所述文件消息包括待传输子文件的第二哈希值和待传输子文件在所述待传输文件中的偏移量;
在所述对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算之前,所述方法还包括:
对所述文件消息的载荷文件进行哈希计算,并判断计算结果与所述第二哈希值是否一致;
如果一致,依据所述待传输子文件在所述待传输文件中的偏移量,将所述载荷文件写入对应于所述待传输文件的磁盘文件。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
如果所述载荷文件的计算结果与所述第二哈希值不一致,根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息。
9.根据权利要求6或8所述的方法,其特征在于,所述根据所述待传输子文件的子文件序号和所述待传输文件对应的主题,从所述消息中间件获取文件消息,包括:
以所述子文件序号对预设分区总数进行求余运算,获得所述待传输子文件对应的分区号;
以所述子文件序号对所述分区总数进行求商运算,获得所述待发送子文件在所述分区号对应分区的偏移量;
依据所述待传输文件对应的主题、所述待传输子文件对应的分区号和在所述分区号对应分区的偏移量,从所述消息中间件获取文件消息。
10.根据权利要求5所述的方法,其特征在于,所述传输指令消息包括至少两个待传输文件的文件名,所述方法还包括:
并行执行针对每一待传输文件的接收处理步骤。
11.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当接收到所述传输指令消息中所有文件名对应的待传输文件,依据所述指定主题向所述消息中间件发送传输完成消息。
12.一种文件传输装置,应用于发送端设备,其特征在于,包括:
创建模块,用于根据待传输文件的文件名,在消息中间件创建与所述待传输文件对应的主题;
切分模块,用于对所述待传输文件进行分片处理,获得多个待传输子文件;
第一发送模块,用于依据与所述待传输文件对应的主题和所述待传输子文件的子文件序号,将基于所述待传输子文件构建的文件消息发送至所述消息中间件;
第二发送模块,用于当所述待传输文件对应的文件消息发送完毕后,向所述消息中间件上指定主题发送传输指令消息;其中,所述传输指令消息包括所述待传输文件的文件名。
13.一种文件传输装置,应用于接收端设备,其特征在于,包括:
解析模块,用于响应于从消息中间件上指定主题获取的传输指令消息,从所述传输指令消息解析出至少一个待传输文件的文件名;
第一确定模块,用于根据所述文件名确定所述消息中间件上与所述待传输文件对应的主题;
获取模块,用于依据所述待传输文件对应的主题,从所述消息中间件获取文件消息;其中,所述文件消息包括所述待传输文件的第一哈希值;
计算模块,用于对与所述待传输文件对应的所有文件消息的载荷文件进行哈希计算,并判断计算结果与所述待传输文件的第一哈希值是否一致;
第二确定模块,用于若一致,确定接收到所述待传输文件。
14.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任意一项所述的文件传输方法。
15.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-4任意一项所述的文件传输方法。
16.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求5-10任意一项所述的文件传输方法。
17.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求5-10任意一项所述的文件传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643052.2A CN112822260B (zh) | 2020-12-31 | 2020-12-31 | 文件传输方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011643052.2A CN112822260B (zh) | 2020-12-31 | 2020-12-31 | 文件传输方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112822260A true CN112822260A (zh) | 2021-05-18 |
CN112822260B CN112822260B (zh) | 2023-06-09 |
Family
ID=75856537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011643052.2A Active CN112822260B (zh) | 2020-12-31 | 2020-12-31 | 文件传输方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112822260B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114040222A (zh) * | 2021-12-24 | 2022-02-11 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种多媒体文件防篡改播放方法、处理方法及装置 |
CN114265638A (zh) * | 2021-12-24 | 2022-04-01 | 北京天融信网络安全技术有限公司 | 基于插件兼容的通信方法、装置、设备及存储介质 |
CN114785805A (zh) * | 2022-04-18 | 2022-07-22 | 北京高途云集教育科技有限公司 | 一种数据传输方法、装置、电子设备以及存储介质 |
CN115250181A (zh) * | 2022-07-22 | 2022-10-28 | 中国电信股份有限公司 | 基于Kafka的文件验证传输方法、装置、设备及存储 |
CN116028247A (zh) * | 2023-03-27 | 2023-04-28 | 中新宽维传媒科技有限公司 | 一种基于消息中间件的文件采集系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035786A1 (zh) * | 2015-09-01 | 2017-03-09 | 深圳好视网络科技有限公司 | 一种流媒体文件的播放校验方法、装置和系统 |
CN107748790A (zh) * | 2017-11-01 | 2018-03-02 | 北京奇艺世纪科技有限公司 | 一种线上服务系统、数据加载方法、装置及设备 |
CN107979613A (zh) * | 2017-12-28 | 2018-05-01 | 明博教育科技股份有限公司 | 一种保障jms消息安全认证的实现方法和系统 |
CN108234539A (zh) * | 2016-12-14 | 2018-06-29 | 北京金山云网络技术有限公司 | 一种文件上传、下载、传输方法及装置 |
CN109088933A (zh) * | 2018-08-21 | 2018-12-25 | 中国平安人寿保险股份有限公司 | 大批量名单传送方法、获取方法及相应的装置、电子设备 |
CN110019240A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团北京有限公司 | 一种业务数据交互方法、装置及系统 |
CN110831010A (zh) * | 2019-10-21 | 2020-02-21 | 上海鹄恩信息科技有限公司 | 一种多通道数据发送及接收方法及装置和数据传输系统 |
CN110908788A (zh) * | 2019-12-02 | 2020-03-24 | 北京锐安科技有限公司 | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 |
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
US20200125572A1 (en) * | 2018-10-19 | 2020-04-23 | Oracle International Corporation | Integrating kafka data-in-motion with data-at-rest tables |
CN111913837A (zh) * | 2020-08-17 | 2020-11-10 | 普元信息技术股份有限公司 | 大数据环境下实现分布式中间件消息恢复策略管理的系统 |
-
2020
- 2020-12-31 CN CN202011643052.2A patent/CN112822260B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017035786A1 (zh) * | 2015-09-01 | 2017-03-09 | 深圳好视网络科技有限公司 | 一种流媒体文件的播放校验方法、装置和系统 |
CN108234539A (zh) * | 2016-12-14 | 2018-06-29 | 北京金山云网络技术有限公司 | 一种文件上传、下载、传输方法及装置 |
CN107748790A (zh) * | 2017-11-01 | 2018-03-02 | 北京奇艺世纪科技有限公司 | 一种线上服务系统、数据加载方法、装置及设备 |
CN107979613A (zh) * | 2017-12-28 | 2018-05-01 | 明博教育科技股份有限公司 | 一种保障jms消息安全认证的实现方法和系统 |
CN110019240A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团北京有限公司 | 一种业务数据交互方法、装置及系统 |
CN109088933A (zh) * | 2018-08-21 | 2018-12-25 | 中国平安人寿保险股份有限公司 | 大批量名单传送方法、获取方法及相应的装置、电子设备 |
US20200125572A1 (en) * | 2018-10-19 | 2020-04-23 | Oracle International Corporation | Integrating kafka data-in-motion with data-at-rest tables |
CN110955857A (zh) * | 2019-10-18 | 2020-04-03 | 苏宁云计算有限公司 | 一种用于高并发环境的业务处理方法及装置 |
CN110831010A (zh) * | 2019-10-21 | 2020-02-21 | 上海鹄恩信息科技有限公司 | 一种多通道数据发送及接收方法及装置和数据传输系统 |
CN110908788A (zh) * | 2019-12-02 | 2020-03-24 | 北京锐安科技有限公司 | 基于Spark Streaming的数据处理方法、装置、计算机设备及存储介质 |
CN111913837A (zh) * | 2020-08-17 | 2020-11-10 | 普元信息技术股份有限公司 | 大数据环境下实现分布式中间件消息恢复策略管理的系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114040222A (zh) * | 2021-12-24 | 2022-02-11 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种多媒体文件防篡改播放方法、处理方法及装置 |
CN114265638A (zh) * | 2021-12-24 | 2022-04-01 | 北京天融信网络安全技术有限公司 | 基于插件兼容的通信方法、装置、设备及存储介质 |
CN114265638B (zh) * | 2021-12-24 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 基于插件兼容的通信方法、装置、设备及存储介质 |
CN114785805A (zh) * | 2022-04-18 | 2022-07-22 | 北京高途云集教育科技有限公司 | 一种数据传输方法、装置、电子设备以及存储介质 |
CN114785805B (zh) * | 2022-04-18 | 2024-04-12 | 北京高途云集教育科技有限公司 | 一种数据传输方法、装置、电子设备以及存储介质 |
CN115250181A (zh) * | 2022-07-22 | 2022-10-28 | 中国电信股份有限公司 | 基于Kafka的文件验证传输方法、装置、设备及存储 |
CN116028247A (zh) * | 2023-03-27 | 2023-04-28 | 中新宽维传媒科技有限公司 | 一种基于消息中间件的文件采集系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112822260B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112822260B (zh) | 文件传输方法及装置、电子设备、存储介质 | |
CN113067883B (zh) | 数据传输方法、装置、计算机设备及存储介质 | |
CN110781070B (zh) | 大数据测试验证方法、装置、计算机设备及存储介质 | |
CN110096419A (zh) | 接口日志的获取方法、接口日志管理服务器及业务服务器 | |
CN110932918B (zh) | 日志数据采集方法、装置及存储介质 | |
US20170337208A1 (en) | Collecting test results in different formats for storage | |
CN113220660A (zh) | 一种数据迁移方法、装置、设备及可读存储介质 | |
CN110851471A (zh) | 分布式日志数据处理方法、装置以及系统 | |
CN114157500A (zh) | 数据包处理方法及电子设备、存储介质 | |
US20150088958A1 (en) | Information Processing System and Distributed Processing Method | |
CN112084114B (zh) | 用于测试接口的方法和装置 | |
CN112969198A (zh) | 数据传输方法、终端及存储介质 | |
CN110442439B (zh) | 任务进程处理方法、装置和计算机设备 | |
CN113381907A (zh) | 日志采集方法及装置、电子设备、存储介质 | |
CN111078975B (zh) | 一种多节点增量式数据采集系统及采集方法 | |
CN113852610B (zh) | 报文处理方法、装置、计算机设备和存储介质 | |
CN111182047B (zh) | 用于在跨网络的大数据平台之间转移文件的方法和系统 | |
CN105988917B (zh) | 异常信息获取方法及装置 | |
US10592388B1 (en) | Methods for facilitating more efficient network message exchange and analysis and devices thereof | |
CN110401576B (zh) | 网络交互测试方法及装置 | |
CN110309191B (zh) | 存储业务数据的方法、装置和系统 | |
CN112988828A (zh) | 消息推送方法及电子设备 | |
CN110362464B (zh) | 软件分析方法及设备 | |
CN114371866A (zh) | 业务系统的版本重构测试方法、装置和设备 | |
CN112818204A (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 |