CN115987972A - 文件传输方法、装置、电子设备及计算机可读存储介质 - Google Patents
文件传输方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115987972A CN115987972A CN202211715687.8A CN202211715687A CN115987972A CN 115987972 A CN115987972 A CN 115987972A CN 202211715687 A CN202211715687 A CN 202211715687A CN 115987972 A CN115987972 A CN 115987972A
- Authority
- CN
- China
- Prior art keywords
- file
- threads
- target file
- target
- thread
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种文件传输方法、装置、电子设备及计算机可读存储介质。其中,该方法包括:根据目标文件的文件信息确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列;通过与所述读线程数量相同的传输线程读取所述源端数据缓存队列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列;通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。本申请实施例通过根据目标文件的文件信息设置相应数量的读线程、传输线程以及写线程以实现对目标文件的传输,能够实现小文件并行传输,大文件分块后并行传输,提高文件传输效率。
Description
技术领域
本申请涉及数据传输领域,具体而言,涉及一种文件传输方法、装置、电子设备及计算机可读存储介质。
背景技术
随着互联网的迅速发展,各个机构已广泛利用互联网向外提供服务,如政府对外提供便民服务的接口,这类场景中的文件同步需求较为特殊:文件服务器至少有一个位于有保密和安全需求的内部网络,另一个可能与互联网连通供外界操作,也可能是其他的安全域,它们的数据传输需要经过隔离设备的转发才能实现。为了尽可能不使用客户端软件,避免客户端被破解的风险,政府和用户的交互通常使用公有的文件传输协议和网络通信协议,将所有数据同步与清洗功能的实现都放在安全数据交换设备上。但是随着各种业务的快速发展,对文件的同步的效率和准确率提出了更高的要求,目前的这种文件传输方法传输效率较低,不能满足大量文件同步需求。
发明内容
有鉴于此,本申请实施例的目的在于提供一种文件传输方法、装置、电子设备及计算机可读存储介质,能够提高文件传输的效率。
第一方面,本申请实施例提供了一种文件传输方法,包括:根据目标文件的文件信息确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列;通过与所述读线程数量相同的传输线程读取所述源端数据缓存队列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列;通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。
在上述实现过程中,通过根据目标文件的文件信息设置相应数量的读线程、传输线程以及写线程以实现对目标文件的传输。对于大文件可以设
置多个读线程、传输线程以及写线程对该目标文件的各个文件块进行并行5传输,对于小文件也可以通过设置多个读线程、传输线程以及写线程对各个小文件进行并行传输,提高了目标文件的传输效率。
在一个实施例中,所述根据目标文件的文件信息确定相应数量的读线程读取所述目标文件,包括:判断所述目标文件的文件大小是否大于大文
件阈值;若所述目标文件的文件大小大于所述大文件阈值,则根据所述目0标文件的文件大小和预设线程分配规则确定所述读线程的数量;通过所述数量的读线程读取所述目标文件。
在上述实现过程中,通过将目标文件的文件大小和大文件阈值进行比较,在确定目标文件为大文件后,进一步基于比较结果和预设的线程分配
规则确定该目标文件需要的读线程数量,以通过多个读线程读取目标文件,5以将大文件分块后进行并行传输,提高了文件传输效率。
在一个实施例中,所述通过所述数量的读线程读取所述目标文件,包括:每个所述读线程分别从所述目标文件的不同偏移地址读取所述目标文件的一部分,并确定相应的任务编号。
在上述实现过程中,每个读线程分别从目标文件的不同偏移地址读取0目标文件的一部分,且确定该目标文件各个部分相应的任务编号,在实现对大文件分块并行传输的同时,还能对目标文件的各个部分的先后顺序进行标记,以在对目标文件分部分传输后,能够将该目标文件还原,在提高目标文件的传输效率的同时,提高了目标文件传输的准确性。
在一个实施例中,所述通过写线程将所述目的端数据缓存队列中的所5述目标文件写入到目的端文件服务器,包括:根据所述任务编号将所述目
的端数据缓存队列中的所述目标文件的各个部分合并后,通过所述写线程写入到目的端文件服务器。
在上述实现过程中,在将目标文件写入到目的端文件服务器前,先将目标文件的各个部分按照任务编号进行合并后,以将目标文件还原到与传输前一致,提高了目标文件传输的准确性。
在一个实施例中,所述根据所述目标文件的文件大小和预设线程分配规则确定所述读线程的数量之后,所述方法还包括:判断当前的线程的数量是否满足所述目标文件所需线程的数量,所述线程包括读线程、传输线程和写线程;若不满足,则根据当前的线程的数量和所述目标文件所需线程的数量的差异产生相应数量的线程和数据缓存队列,所述数据缓存队列包括源端数据缓存队列和目的端数据缓存队列。
在上述实现过程中,在当前的线程的数量不能满足目标文件所需的线程的数量时,可以根据当前的线程的数量和目标文件所需线程的数量的差值确定需要生产的线程数量,以生产相应数量的线程,实现目标文件的并行传输,提高文件传输效率。
在一个实施例中,所述方法还包括:若所述目标文件的文件大小小于所述大文件阈值,则根据当前的读线程的数量读取相应数量的所述目标文件。
在上述实现过程中,在确定出目标文件为小文件时,可以根据目标文件的数量确定相应数量的读线程读取对应的目标文件,以实现多个目标文件的并行传输,提高目标文件的传输效率。
在一个实施例中,所述方法还包括:轮询验证所述读线程、所述传输线程和所述写线程的状态;若存在无响应线程,则删除所述无响应线程传输的文件。
在上述实现过程中,在轮询时若发现无响应线程,则将该无响应线程传输的文件删除,以防止无响应线程在传输文件时出错导致被传输的文件发生错误,提高了文件传输的准确性。
第二方面,本申请实施例还提供一种文件传输装置,包括:读取模块:
用于根据目标文件的文件大小确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列;传输模
块:用于通过与所述读线程数量相同的传输线程读取所述源端数据缓存队5列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列;写入模块:用于通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储
器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运0行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一
方面的任一种可能的实施方式中的方法的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上
述第一方面,或第一方面的任一种可能的实施方式中文件传输方法的步骤。5为使本申请的上述目的、特征和优点能更明显易懂,下文特举实施例,
并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些0实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,
在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的运行场景示意图;
图2为本申请实施例提供的电子设备的方框示意图;
图3为本申请实施例提供的文件传输方法的流程图;
5图4为本申请实施例提供的文件传输装置的功能模块示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
本申请发明人经长期研究发现,目前常见的文件传输方法为:先读取配置文件获取配置信息,当某一任务的同步时间到达,启动该任务所属的文件同步操作线程,扫描到的每个待同步的文件对应一个线程;文件同步操作包括将源端文件服务器同步目录中的文件复制到目的端文件服务器同步目录中,并将源端文件服务器同步目录中的文件复制到备份目录中,备份成功后将源端文件服务器同步目录中的文件删除,确定文件同步操作成功后结束线程。
虽然上述方法解决了以往文件同步仅是将源端目录中的文件复制到目的端目录中,然后将源端目录中的文件删除,容易因异常发生导致文件丢失,可靠性差的问题,但由于需要同步的文件数量和大小不断增长,对系统安全性也提出更高要求,即内外网间需要经过多个中间服务器和物理隔离设备对数据进行清洗、杀毒后转发,同时也要求文件同步的性能在可接受的范围。若是按照上述方式,即源端文件服务器、目的端文件服务器和中间各级文件传输服务器均对需要同步的每个文件分配一个线程全程处理,由CPU分配时间片顺序完成全部任务,则很容易出现部分大文件出现读写和传输时间过长,且线程数量很多则会占用过多资源降低系统运行速度,难以满足文件同步的性能需求。
有鉴于此,本申请发明人提出一种文件传输方法,通过根据文件的大小,确定相应数量的线程传输目标文件,实现了小文件并行传输,大文件分块后并行传输,提高了文件传输效率。
为便于对本实施例进行理解,首先对执行本申请实施例所公开的一种文件传输方法的运行环境进行详细介绍。
如图1所示,是本申请实施例提供的运行场景示意图。本申请实施例
的文件传输方法应用于网络隔离场景的文件传输。该文件传输应用的文件5传输系统包括源端文件服务器、源端传输服务器、目的端传输服务器、目
的端文件服务器。
其中,源端文件服务器位于非安全域,可连接互联网,以下载相应的文件。目的端文件服务器位于安全域,连接内网,可以用于接收源端文件服务器下载并传输的文件。
0这里的源端文件服务器与目的端文件服务器通过网络及一个或多个传输服务器进行通信连接,以进行数据通信或交互。所述目的端文件服务器可以是网络服务器、数据库服务器、个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personaldigital assistant,PDA)等。
所述源端文件服务器也可以是网络服务器、数据库服务器、个人电脑5(personalcomputer,PC)、平板电脑、智能手机、个人数字助理(personaldigital assistant,PDA)等。该源端文件服务器和目的端文件服务器可以是同一种类型设备,也可以是两种不同的设备。
在一些实施例中,源端文件服务器与目的端文件服务器之间不能直接接通。上述的源端传输服务器和目的端传输服务器设置于源端文件服务器0与目的端文件服务器之间,以用于在该源端文件服务器与目的端文件服务
器直接建立连接,进行文件传输。
在该源端文件服务器、源端传输服务器、目的端传输服务器、目的端文件服务器均配置好之后,源端传输服务器向该源端文件服务器发起连接,
下载文件。源端传输服务器和目的端传输服务器通过私有协议建立连接并5转发文件数据块。目的端传输服务器在配置好策略后就维持着和目的端文件服务器的连接,在接收到合法的文件数据块后将数据写入目的端文件服务器。
为便于对本实施例进行理解,下面对执行本申请实施例所公开的文件传输方法的电子设备进行详细介绍。
可以理解地,本申请实施例中的电子设备设置在源端传输服务器和目的端传输服务器之间,以用于建立源端传输服务器和目的端传输服务器的连接。
如图2所示,是电子设备的方框示意图。电子设备100可以包括存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
上述的存储器111、存储控制器112、处理器113、外设接口114及输入输出单元115各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。上述的处理器113用于执行存储器中存储的可执行模块。
其中,存储器111可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(ProgrammableRead-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,简称EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本申请实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
上述的处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
上述的外设接口114将各种输入/输出装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
上述的输入输出单元115用于提供给用户输入数据。所述输入输出单元115可以是,但不限于,鼠标和键盘等。
本实施例中的电子设备100可以用于执行本申请实施例提供的各个方法中的各个步骤。下面通过几个实施例详细描述文件传输方法的实现过程。
请参阅图3,是本申请实施例提供的文件传输方法的流程图。下面将对图3所示的具体流程进行详细阐述。
步骤201,根据目标文件的文件信息确定相应数量的读线程读取目标文件,并将目标文件存储到与读线程对应的源端数据缓存队列。
这里的目标文件为待传输文件。该文件信息可以包括文件名称、文件大小等文件基本信息。
在一些实施例中,可以事先对该文件传输需要的信息进行配置,配置内容可以包括核心线程数、最大线程数、任务队列长度、线程空闲时间、大文件阈值等。该大文件阈值是指文件大小超过该值则认为该文件为大文件。若目标文件为大文件则需要多配置几个线程进行处理。若目标文件为小文件则每个小文件配置一个线程进行处理。这里的线程包括读线程、写线程以及传输线程等。
开始时可以根据核心线程数产生相应数量的线程,在需要传输大文件时,若线程数不够,则可以进一步产生额外的线程。该线程数不能低于核心线程数,也不能高于最大线程数。
在生成线程后,还可以根据获取的任务队列信息将生成的线程分配响应的任务,每个线程在获取到相应文件名、文件大小以及数据缓存队列头地址等信息后,执行相应的读取、写入以及传输等任务。这些线程可以分配给CPU(central processing unit,中文名称:中央处理器)的不同和以并行处理同一文件或不同文件。
上述的源端数据缓存队列与该读线程配对设置,即一个读线程对应一个源端数据缓存队列,每个源端数据缓存队列的头地址会传入一个对应的读线程。
可以理解地,在获取到目标文件信息后,可根据该目标文件的文件信息确定该目标文件是大文件还是小文件。若目标文件为大文件,可以根据该目标文件的大小进一步确定该目标文件需要配置多少个读线程才能将该目标文件读取完。若目标文件为小文件,可以根据该文件信息确定该目标文件的数量,并确定相应数量的读线程分别对每个小文件进行读取。且每个读线程在读取相应的文件或文件块之后,将该文件或文件块存储在相应的源端数据缓存队列中,以等待进行下一步处理。
步骤202,通过与读线程数量相同的传输线程读取源端数据缓存队列中的目标文件,并将目标文件存储到与写线程对应的目的端数据缓存队列。
这里设置的用于目标文件传输的传输线程的数量与读线程数量对应,每个传输线程对应一个读线程,以分别从相应的源端数据缓存队列中读取相应的目标文件,并将该目标文件再存储到相应的目的端数据缓存队列中。
上述的目的端数据缓存队列与该写线程配对设置,即一个写线程对应一个目的端数据缓存队列,每个目的端数据缓存队列的头地址会传入一个对应的写线程。
步骤203,通过写线程将目的端数据缓存队列中的目标文件写入到目的端文件服务器。
这里设置的用于目标文件传输的写线程的数量设置与传输线程数量对应,每个写线程对应一个传输线程,以分别将相应的目的端数据缓存队列中的目标文件写入到目的端文件服务器。
在上述实现过程中,通过根据目标文件的文件信息设置相应数量的读线程、传输线程以及写线程以实现对目标文件的传输。对于大文件可以设置多个读线程、传输线程以及写线程对该目标文件的各个文件块进行并行传输,对于小文件也可以通过设置多个读线程、传输线程以及写线程对各个小文件进行并行传输,提高了目标文件的传输效率。
在一种可能的实现方式中,步骤201,包括:判断目标文件的文件大小是否大于大文件阈值;若目标文件的文件大小大于大文件阈值,则根据目标文件的文件大小和预设线程分配规则确定读线程的数量;通过该数量的读线程读取目标文件。
在获取目标文件的文件信息时,可以通过从源端文件服务器同步目录下载文件,并将下载的文件与大文件阈值比较,若目标文件的文件大小大于该大文件阈值,则说明该目标文件为大文件。若目标文件的文件大小小于该大文件阈值,则说明该目标文件为小文件。
这里的预设线程分配规则可以是根据文件大小与线程关系提前设置好的线程划分规则,也可以是根据文件大小与线程关系设置的线程划分模型等。例如,目标文件大小为2G,大文件阈值为200MB,且预设线程分配规则为每个线程最多处理1G的文件块,则根据该预设线程分配规则可以确定读线程的数量为2个。若目标文件大小为2G,大文件阈值为200MB,且预设线程分配规则为每个线程最多处理500MB的文件块,则根据该预设线程分配规则可以确定读线程的数量为5个等。
在上述实现过程中,通过将目标文件的文件大小和大文件阈值进行比较,在确定目标文件为大文件后,进一步基于比较结果和预设的线程分配规则确定该目标文件需要的读线程数量,以通过多个读线程读取目标文件,以将大文件分块后进行并行传输,提高了文件传输效率。
在一种可能的实现方式中,通过该数量的读线程读取目标文件,包括:每个读线程分别从目标文件的不同偏移地址读取目标文件的一部分,并确定相应的任务编号。
可以理解地,若目标文件为大文件,则该目标文件需要配置多个读线程读取该目标文件。每个读线程分别从该目标文件的不同位置处开始读取该目标文件。例如,目标文件对应的读线程为4个,则这4个读线程分别从目标文件的4个不同偏移位置处开始读取目标文件,且第一线程读取目标文件开始的位置是目标文件的开始位置,第一读线程读取目标文件结束的位置为第二读线程读取该目标文件开始的位置,第二读线程读取目标文件结束的位置为第三读线程读取该目标文件开始的位置,第三读线程读取目标文件结束的位置为第四读线程读取该目标文件开始的位置,第四线程读取目标文件结束的位置是目标文件的结束位置。
另外,为了保证分开传输的目标文件的各个部分在传输后进行还原时,能够按照目标文件的原始顺序进行还原。各个读线程在读取目标文件时,还可以进行任务编号,以对该目标文件的各个部分的先后关系进行标记。
在上述实现过程中,每个读线程分别从目标文件的不同偏移地址读取目标文件的一部分,且确定该目标文件各个部分相应的任务编号,在实现对大文件分块并行传输的同时,还能对目标文件的各个部分的先后顺序进行标记,以在对目标文件分部分传输后,能够将该目标文件还原,在提高目标文件的传输效率的同时,提高了目标文件传输的准确性。
在一种可能的实现方式中,步骤203,包括:根据任务编号将目的端数据缓存队列中的目标文件的各个部分合并后,通过写线程写入到目的端文件服务器。
由于大文件在进行文件传输时,是将目标文件的各个部分分开传输的。在将目标文件写入到对应的目的端文件服务器之前,需要将目标文件的多个部分还原为目标文件后,再写入到目的端文件服务器。
在对目标文件的各个部分进行还原时,每个部分应当按照原目标文件中的顺序依次还原。由于任务编号是根据读线程读取目标文件的顺序确定的,在还原该目标文件时,也按照该任务编号对目标文件进行还原,保证还原后的目标文件和传输前的目标文件一致。
在上述实现过程中,在将目标文件写入到目的端文件服务器前,先将目标文件的各个部分按照任务编号进行合并后,以将目标文件还原到与传输前一致,提高了目标文件传输的准确性。
在一种可能的实现方式中,根据目标文件的文件大小和预设线程分配规则确定读线程的数量之后,该方法还包括:判断当前的线程的数量是否满足目标文件所需线程的数量。若不满足,则根据当前的线程的数量和目标文件所需线程的数量的差异产生相应数量的线程和数据缓存队列。
其中,线程包括读线程、传输线程和写线程。数据缓存队列包括源端数据缓存队列和目的端数据缓存队列。
可以理解地,在目标文件较大或小文件数量较多时,需要的线程数量可能超过当前线程数量。因此,在进行目标文件传输前可以先将当前的线程数量和目标文件所需线程的数量进行比较。若当前的线程数量满足目标文件的线程数量,则通过相应数量的线程对目标文件进行传输。若当前的线程数量不满足目标文件的线程数量,则需要先生产一定的线程数量,以保证当前的线程数量可以满足目标文件传输的线程数量。
这里的相应数量的线程和数据缓存队列可以通过当前的线程数量和目标文件所需线程的数量的差值确定。例如,当前的线程数量为5个线程,而目标文件所需线程的数量为8个线程,则可以再生产3组线程。由于线程和数据缓存队列为一一对应关系,则相应的还可以生产3组数据缓存队列。该3组线程包括3个读线程、3个写线程以及3个传输线程。该3组数据缓存队列包括3个源端数据缓存队列和3个目的端数据缓存队列。
在上述实现过程中,在当前的线程的数量不能满足目标文件所需的线程的数量时,可以根据当前的线程的数量和目标文件所需线程的数量的差值确定需要生产的线程数量,以生产相应数量的线程,实现目标文件的并行传输,提高文件传输效率。
在一种可能的实现方式中,该方法还包括:若目标文件的文件大小小于大文件阈值,则根据当前的读线程的数量读取相应数量的所述目标文件。
若目标文件的文件大小小于大文件阈值,可以确定出该目标文件为小文件。在确定出目标文件为小文件时,由于一个小文件仅需要一个读线程,则可以根据目标文件的数量确定相应数量的读线程读取目标文件,以实现对多个小文件进行并行传输。
在一些实施例中,若目标文件的文件数量超过当前的线程的数量,可以根据目标文件的文件数量和当前的线程的数量的差值生产相应数量的线程,以将目标文件一次性传输。当然,也可以根据当前的线程的数量先传输相应数量的目标文件,后传输剩余数量的目标文件。
在上述实现过程中,在确定出目标文件为小文件时,可以根据目标文件的数量确定相应数量的读线程读取对应的目标文件,以实现多个目标文件的并行传输,提高目标文件的传输效率。
在一种可能的实现方式中,该方法还包括:轮询验证读线程、传输线程和写线程的状态;若存在无响应线程,则删除无响应线程传输的文件。
这里的读线程、写线程以及传输线程可以实时轮询、或间隔预设时间轮询。通过轮询该读线程、写线程以及传输线程可以检查该读线程、写线程以及传输线程的状态,保证进行目标文件传输的线程均是存活线程。
若在检测到某一线程失去响应,则确定该线程为无响应线程,则将该无响应线程参与传输的文件删除,以防止该无响应线程传输的文件出现缺失、错误等问题的发生。例如,在轮询时,检测到某一读线程为无响应线程,该读线程和相应的写线程和传输线程已经配合将文件传输到目的端文件服务器,则需要寻找到目的端文件服务器中的该文件,并将该文件删除。
在一些实施例中,在删除无响应线程传输的文件后,还可以重新从源端文件服务器将该文件重新传输到目的端文件服务器,并通知相应读线程、传输线程以及写线程执行该传输任务。
在上述实现过程中,在轮询时若发现无响应线程,则将该无响应线程传输的文件删除,以防止无响应线程在传输文件时出错导致被传输的文件发生错误,提高了文件传输的准确性。
基于同一申请构思,本申请实施例中还提供了与文件传输方法对应的文件传输装置,由于本申请实施例中的装置解决问题的原理与前述的文件传输方法实施例相似,因此本实施例中的装置的实施可以参见上述方法的实施例中的描述,重复之处不再赘述。
请参阅图4,是本申请实施例提供的文件传输装置的功能模块示意图。本实施例中的文件传输装置中的各个模块用于执行上述方法实施例中的各个步骤。文件传输装置包括读取模块301、传输模块302、写入模块303;其中,
读取模块301用于根据目标文件的文件大小确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列。
传输模块302用于通过与所述读线程数量相同的传输线程读取所述源端数据缓存队列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列。
写入模块303用于通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。
一种可能的实施方式中,读取模块301,还用于:判断所述目标文件的文件大小是否大于大文件阈值;若所述目标文件的文件大小大于所述大文件阈值,则根据所述目标文件的文件大小和预设线程分配规则确定所述读线程的数量;通过所述数量的读线程读取所述目标文件。
一种可能的实施方式中,读取模块301,具体用于:每个所述读线程分别从所述目标文件的不同偏移地址读取所述目标文件的一部分,并确定相应的任务编号。
一种可能的实施方式中,读取模块301,具体用于:根据所述任务编号将所述目的端数据缓存队列中的所述目标文件的各个部分合并后,通过所述写线程写入到目的端文件服务器。
一种可能的实施方式中,该文件传输装置还包括判断模块,用于:判断当前的线程的数量是否满足所述目标文件所需线程的数量,所述线程包括读线程、传输线程和写线程;若不满足,则根据当前的线程的数量和所述目标文件所需线程的数量的差异产生相应数量的读线程和数据缓存队列,所述数据缓存队列包括源端数据缓存队列和目的端数据缓存队列。
一种可能的实施方式中,读取模块301,具体用于:若所述目标文件的文件大小小于所述大文件阈值,则根据当前的读线程的数量读取相应数量的所述目标文件。
一种可能的实施方式中,该文件传输装置还包括轮询模块,用于:询验证所述读线程、所述传输线程和所述写线程的状态;若存在无响应线程,则删除所述无响应线程传输的文件。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的文件传输方法的步骤。
本申请实施例所提供的文件传输方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的文件传输方法的步骤,具体可参见上述方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,
也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,5例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方
法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能
的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标0注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的
基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。5另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使
用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申0请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步
骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only5Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或5者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于0本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
5以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局
限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种文件传输方法,其特征在于,包括:
根据目标文件的文件信息确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列;
通过与所述读线程数量相同的传输线程读取所述源端数据缓存队列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列;
通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。
2.根据权利要求1所述的方法,其特征在于,所述根据目标文件的文件信息确定相应数量的读线程读取所述目标文件,包括:
判断所述目标文件的文件大小是否大于大文件阈值;
若所述目标文件的文件大小大于所述大文件阈值,则根据所述目标文件的文件大小和预设线程分配规则确定所述读线程的数量;
通过所述数量的读线程读取所述目标文件。
3.根据权利要求2所述的方法,其特征在于,所述通过所述数量的读线程读取所述目标文件,包括:
每个所述读线程分别从所述目标文件的不同偏移地址读取所述目标文件的一部分,并确定相应的任务编号。
4.根据权利要求3所述的方法,其特征在于,所述通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器,包括:
根据所述任务编号将所述目的端数据缓存队列中的所述目标文件的各个部分合并后,通过所述写线程写入到目的端文件服务器。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标文件的文件大小和预设线程分配规则确定所述读线程的数量之后,所述方法还包括:
判断当前的线程的数量是否满足所述目标文件所需线程的数量,所述线程包括读线程、传输线程和写线程;
若不满足,则根据当前的线程的数量和所述目标文件所需线程的数量的差异产生相应数量的线程和数据缓存队列,所述数据缓存队列包括源端数据缓存队列和目的端数据缓存队列。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述目标文件的文件大小小于所述大文件阈值,则根据当前的读线程的数量读取相应数量的所述目标文件。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
轮询验证所述读线程、所述传输线程和所述写线程的状态;
若存在无响应线程,则删除所述无响应线程传输的文件。
8.一种文件传输装置,其特征在于,包括:
读取模块:用于根据目标文件的文件大小确定相应数量的读线程读取所述目标文件,并将所述目标文件存储到与所述读线程对应的源端数据缓存队列;
传输模块:用于通过与所述读线程数量相同的传输线程读取所述源端数据缓存队列中的所述目标文件,并将所述目标文件存储到与写线程对应的目的端数据缓存队列;
写入模块:用于通过写线程将所述目的端数据缓存队列中的所述目标文件写入到目的端文件服务器。
9.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211715687.8A CN115987972A (zh) | 2022-12-29 | 2022-12-29 | 文件传输方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211715687.8A CN115987972A (zh) | 2022-12-29 | 2022-12-29 | 文件传输方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115987972A true CN115987972A (zh) | 2023-04-18 |
Family
ID=85962278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211715687.8A Pending CN115987972A (zh) | 2022-12-29 | 2022-12-29 | 文件传输方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115987972A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155922A (zh) * | 2023-10-31 | 2023-12-01 | 国家超级计算天津中心 | 一种文件传输方法和装置 |
CN117640796A (zh) * | 2024-01-03 | 2024-03-01 | 北京火山引擎科技有限公司 | 网络报文处理方法及设备 |
-
2022
- 2022-12-29 CN CN202211715687.8A patent/CN115987972A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155922A (zh) * | 2023-10-31 | 2023-12-01 | 国家超级计算天津中心 | 一种文件传输方法和装置 |
CN117155922B (zh) * | 2023-10-31 | 2024-01-30 | 国家超级计算天津中心 | 一种文件传输方法和装置 |
CN117640796A (zh) * | 2024-01-03 | 2024-03-01 | 北京火山引擎科技有限公司 | 网络报文处理方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115987972A (zh) | 文件传输方法、装置、电子设备及计算机可读存储介质 | |
US11163850B2 (en) | System, method and computer program product for data transfer management | |
CN109361525B (zh) | 重启分布式部署多服务的方法、装置、控制终端及介质 | |
WO2018121456A1 (zh) | 一种数据存储方法、服务器以及存储系统 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
CN109492049B (zh) | 用于区块链网络的数据处理、区块生成及同步方法 | |
JP5801482B2 (ja) | キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム | |
CN111274252A (zh) | 一种区块链的数据上链方法、装置、存储介质和服务器 | |
CN109669822B (zh) | 电子装置、备用存储池的创建方法和计算机可读存储介质 | |
CN111586041A (zh) | 工业单向隔离网闸系统和数据传输方法 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
US20170041431A1 (en) | Read-ahead on signed connections with unsigning, inline, transparent proxies | |
WO2016023372A1 (zh) | 数据存储处理方法及装置 | |
US20160139996A1 (en) | Methods for providing unified storage for backup and disaster recovery and devices thereof | |
CN110955545B (zh) | 一种数据完整性校验方法、系统及相关设备 | |
CN110413588A (zh) | 分布式对象存储方法、装置、计算机设备和存储介质 | |
JP6315899B2 (ja) | 情報処理装置、システム、プログラム及び制御方法 | |
CN110737716A (zh) | 一种数据写入的方法和装置 | |
US20150213102A1 (en) | Synchronous data replication in a content management system | |
CN115878576A (zh) | 一种数据存储的处理方法及装置 | |
CN103092932A (zh) | 一种分布式文档转码系统 | |
CN104615564A (zh) | 一种基于qpi总线的数据传输方法及计算机系统 | |
CN112395296B (zh) | 一种大数据归档方法、装置、设备及存储介质 | |
CN106559439B (zh) | 一种业务处理方法及设备 | |
CN111124429B (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 |