CN103457997A - 数据传输方法以及数据传输*** - Google Patents
数据传输方法以及数据传输*** Download PDFInfo
- Publication number
- CN103457997A CN103457997A CN2013102724889A CN201310272488A CN103457997A CN 103457997 A CN103457997 A CN 103457997A CN 2013102724889 A CN2013102724889 A CN 2013102724889A CN 201310272488 A CN201310272488 A CN 201310272488A CN 103457997 A CN103457997 A CN 103457997A
- Authority
- CN
- China
- Prior art keywords
- thread
- catalogue
- file
- data transmission
- complete
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据传输方法,包括:基于需要传输的目录和/或文件启用至少一个线程;将所述目录和/或文件平均分配给所述至少一个线程;利用所述至少一个线程分别传输对应的目录和/文件;对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。相应地,还提供了一种数据传输***。采用本发明,可以缩短传输文件和/或目录的时间,从而提供上传效率。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种数据传输方法以及数据传输***。
背景技术
在现有存储***中,多数文件或者目录的上传都采用多线程上传的方式。在上传过程中通常是计算目录和文件的数据,然后平均到多个线程上面去,简单的分配好任务后进行上传。在上传过程中没有对容量大小的判断,以及无法实现简单的负载均衡,这样就会导致有些线程已经传输完毕,而有些线程负载比较大无法传输完毕的情况。
发明内容
针对相关技术中的问题,在一方面提供了可以缩短传输文件和/或目录的总时间的数据传输方法,包括:
基于需要传输的目录和/或文件启用至少一个线程;
将所述目录和/或文件平均分配给所述至少一个线程;
利用所述至少一个线程分别传输对应的目录和/或文件;
对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
在可选实施例中,基于需要传输的目录和/或文件启用至少一个线程,包括:基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及,根据所确定的需要启用的线程个数启用线程。
在可选实施例中,将所述目录和/或文件平均分配给所述至少一个线程,包括:基于所述目录中的元数据量进行判断,以对所述至少一个线程 平均分配任务。
在可选实施例中,一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:就近选择所述至少一个线程中的一个未完成线程。
根据本发明的另一方面,提供了一种数据传输***,包括:
线程启用单元,用于基于需要传输的目录和/或文件启用至少一个线程;
数据分配单元,用于将所述目录和/或文件平均分配给所述至少一个线程;
数据传输单元,用于利用所述至少一个线程分别传输对应的目录和/文件;以及,对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
在可选实施例中,所述线程启用单元基于需要传输的目录和/或文件启用至少一个线程,包括:基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及,根据所确定的需要启用的线程个数启用线程。
在可选实施例中,所述数据分配单元用于将所述目录和/或文件平均分配给所述至少一个线程,包括:基于所述目录中的元数据量进行判断,以对所述至少一个线程平均分配任务。
在可选实施例中,所述一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:选择所述至少一个线程中与已传输完的线程最近的的一个未完成线程。
本发明对于通过多个线程进行数据传输的过程中,当其中的一个线程完成目录和/或文件的传输时,与其他未完成线程共同传输该未完成的线程上的目录和/或文件,从而可以缩短传输文件和/或目录的总时间,提高了传输效率。
附图说明
图1是根据本发明一实施例的数据传输方法的流程示意图。
图2是根据本发明一实施例的数据传输方法的一个实例。
图3是根据本发明另一实施例的数据传输***的结构框图。
具体实施方式
下面结合附图对本发明作进一步地详细说明。
本发明实施例提供了一种可实现简单负载均衡的传输机制。例如对于当前通常使用的数据上传,该传输机制包括在多目录或者多文件上传时,启动多线程进行上传。在本发明实施例中,文件应理解为单一的文件,目录应理解为文件夹,其中可包括多个文件。
图1是根据发明实施例的一种数据传输方法的流程图。如图1所示,该数据传输方法包括:
S101,基于需要传输的目录和/或文件启用至少一个线程;
S102,将所述目录和/或文件平均分配给所述至少一个线程;
S103,利用所述至少一个线程分别传输对应的目录和/文件;
S104,对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
在一可选实施例中,基于需要传输的目录和/或文件启用至少一个线程,包括:基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及,根据所确定的需要启用的线程个数启用线程。
在另一可选实施例中,将所述目录和/或文件平均分配给所述至少一个线程,包括:基于所述目录中的元数据量进行判断所述目录的容量,以对所述至少一个线程平均分配任务。元数据指文件的属性信息,包括文件的大小,位置,权限等属性信息。在本发明实施例中,有时候仅从文件的数量量来判断还是不够的,比如说A目录下,文件数量为1,但是文件会很大,这样就会很长时间的进程去进行拷贝,B目录下有100个文件,每个 文件不太大,那么就可以考虑用11个进程,第一个进程拷贝完A目录里的文件,剩下的10个进程平均每一个进程拷贝10个文件,总体结束的时间都差不多,这样就可以节省总的时间。进而就提高了拷贝的聚合带宽。在又一可选实施例中,一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:就近选择所述至少一个线程中的一个未完成线程。例如,当5个线程中的线程t2传输完被分配的目录和/或文件时,检测到线程t1和t4尚未完成,选择与线程t1共同传输线程t1上需要传输的目录和/文件。
本发明实施例的数据传输方法可以缩短上传文件和/或目录的时间,从而大大提高了上传效率。
图2是根据本发明实施例的数据传输方法的一个实例。
当前需要上传的目录包括10个,其中目录1的容量为90G,目录2的容量为20G,目录3和4分别都为10G,目录5为50G,目录6为10G,目录7为5G,目录8为10G,目录9为60G和目录10为5G。
首先判断需要传输的目录的个数。例如,对于10个目录,则确定启用5个线程t1、t2、t3、t4和t5。
然后,将这10个目录平均分配给5个线程。即平均每个线程上传2个目录。具体地,线程t1用于传输目录1和2,线程t2用于传输目录3和4,线程t3用于传输目录5和6,线程t4用于传输目录7和8,线程t5用于传输目录9和10。同一线程(例如t2)对所分配的2个目录按照顺序上传。
接着,当线程t4和t2上传任务结束后,会根据消息机制对当前未完成的传输线程t1、t3和t5传递消息,以便对未完成的线程进行任务的共同传输。如图2所示,线程t2在传输完成后,与线程t1一起共同传输目录;线程t4在传输完成后,与线程t3一起共同传输目录。进一步地,线程t3、t4和t5在传输完成后,也可进一步地与线程1一起共同传输目录。采用本发明的这种数据传输方法可以达到减少上传目录和/或时间的目的。
图3是根据本发明实施例的数据传输***的框图。如图3所示,该数据传输***包括:线程启用单元10、数据分配单元20和数据传输单元30。
线程启用单元10,用于基于需要传输的目录和/或文件启用至少一个线 程。数据分配单元20,用于将所述目录和/或文件平均分配给所述至少一个线程。数据传输单元30,用于利用所述至少一个线程分别传输对应的目录和/文件;以及,对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
在可选实施例中,线程启用单元10基于需要传输的目录和/或文件启用至少一个线程,包括:基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及,根据所确定的需要启用的线程个数启用线程。
在可选实施例中,数据分配单元20用于将所述目录和/或文件平均分配给所述至少一个线程,包括:基于所述目录中的元数据量进行判断,以对所述至少一个线程平均分配任务。
在可选实施例中,数据传输单元30,用于在一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:选择所述至少一个线程中与已传输完的线程最近的的一个未完成线程。
本发明实施例的数据传输方法和数据传输***在对于大量文件和/或目录进行传输(例如上传或下载)时,根据它们的容量和任务量大小尽可能地均衡分配文件和/或目录给多个线程,可以提高线程传输任务的负载均衡。此外,由于先完成传输任务的线程会与未完成的线程一起传输未完成的任何,因此,可以缩短目录和/文件传输的总时间,从而提高传输效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据传输方法,包括:
基于需要传输的目录和/或文件启用至少一个线程;
将所述目录和/或文件平均分配给所述至少一个线程;
利用所述至少一个线程分别传输对应的目录和/文件;
对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
2.根据权利要求1所述的数据传输方法,其特征在于,基于需要传输的目录和/或文件启用至少一个线程,包括:
基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及
根据所确定的需要启用的线程个数启用线程。
3.根据权利要求2所述的数据传输方法,其特征在于,将所述目录和/或文件平均分配给所述至少一个线程,包括:
基于所述目录中的元数据量进行判断,以对所述至少一个线程平均分配任务。
4.根据权利要求1所述的数据传输方法,其特征在于,一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:
就近选择所述至少一个线程中的一个未完成线程。
5.一种数据传输***,包括:
线程启用单元,用于基于需要传输的目录和/或文件启用至少一个线程;
数据分配单元,用于将所述目录和/或文件平均分配给所述至少一个线程;
数据传输单元,用于利用所述至少一个线程分别传输对应的目录和/文件;以及,对于所述至少一个线程,当一个线程在传输完被分配的目录和/或文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,并且与该未完成线程一起共同传输与该未完成线程对应的目录和/或文件。
6.根据权利要求5所述的数据传输***,其特征在于,所述线程启用单元基于需要传输的目录和/或文件启用至少一个线程,包括:基于需要传输的目录和/或文件的个数和/或容量确定需要启用的线程个数;以及,根据所确定的需要启用的线程个数启用线程。
7.根据权利要求6所述的数据传输***,其特征在于,所述数据分配单元用于将所述目录和/或文件平均分配给所述至少一个线程,包括:
基于所述目录中的元数据量进行判断,以对所述至少一个线程平均分配任务。
8.根据权利要求5所述的数据传输***,其特征在于,所述一个线程在传输完被分配的目录和/文件时,检查当前是否存在未完成线程,如果存在,选择一个未完成线程,包括:选择所述至少一个线程中与已传输完的线程最近的的一个未完成线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102724889A CN103457997A (zh) | 2013-07-01 | 2013-07-01 | 数据传输方法以及数据传输*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102724889A CN103457997A (zh) | 2013-07-01 | 2013-07-01 | 数据传输方法以及数据传输*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103457997A true CN103457997A (zh) | 2013-12-18 |
Family
ID=49739940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102724889A Pending CN103457997A (zh) | 2013-07-01 | 2013-07-01 | 数据传输方法以及数据传输*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103457997A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743713A (zh) * | 2016-04-14 | 2016-07-06 | 上海斐讯数据通信技术有限公司 | 一种网络管理***及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5500890A (en) * | 1993-08-19 | 1996-03-19 | Exxon Research And Engineering Company | Point-of-sale system using multi-threaded transactions and interleaved file transfer |
CN1945538A (zh) * | 2006-10-27 | 2007-04-11 | 北京金山软件有限公司 | 基于多核cpu架构的网游服务器的数据分配方法及*** |
CN102572749A (zh) * | 2010-12-07 | 2012-07-11 | 中国电信股份有限公司 | 短信网上辅助发送*** |
CN102567089A (zh) * | 2011-10-25 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种分布式文件***中元数据服务器线程池的设计方法 |
CN102918501A (zh) * | 2010-05-25 | 2013-02-06 | 英特尔公司 | 用于分析多线程应用的性能的方法和*** |
-
2013
- 2013-07-01 CN CN2013102724889A patent/CN103457997A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5500890A (en) * | 1993-08-19 | 1996-03-19 | Exxon Research And Engineering Company | Point-of-sale system using multi-threaded transactions and interleaved file transfer |
CN1945538A (zh) * | 2006-10-27 | 2007-04-11 | 北京金山软件有限公司 | 基于多核cpu架构的网游服务器的数据分配方法及*** |
CN102918501A (zh) * | 2010-05-25 | 2013-02-06 | 英特尔公司 | 用于分析多线程应用的性能的方法和*** |
CN102572749A (zh) * | 2010-12-07 | 2012-07-11 | 中国电信股份有限公司 | 短信网上辅助发送*** |
CN102567089A (zh) * | 2011-10-25 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种分布式文件***中元数据服务器线程池的设计方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105743713A (zh) * | 2016-04-14 | 2016-07-06 | 上海斐讯数据通信技术有限公司 | 一种网络管理***及方法 |
CN105743713B (zh) * | 2016-04-14 | 2019-10-11 | 上海斐讯数据通信技术有限公司 | 一种网络管理***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101700667B1 (ko) | 스토리지 네트워크 데이터 할당 | |
CN109376122A (zh) | 一种文件管理方法、***及区块链节点设备和存储介质 | |
CN102255926B (zh) | MapReduce***中的任务分配方法、***及装置 | |
CN101534322A (zh) | 文件上传***和文件上传方法 | |
CN103095806B (zh) | 一种面向大电网的实时数据库***的负载均衡管理*** | |
CN102546782A (zh) | 一种分布式***及其数据操作方法 | |
CA2794339A1 (en) | Transfer of user data between logical data sites | |
CN103297499A (zh) | 一种基于云平台的调度方法及*** | |
CN103810046A (zh) | 一种单机资源管理方法及*** | |
CN106371916B (zh) | 一种存储***io线程优化方法及其装置 | |
CN103023996A (zh) | 一种云数据存储*** | |
CN104461706B (zh) | 一种将共享全局变量共享的方法和多处理装置 | |
CN109228954B (zh) | 一种充电桩能源管理方法、***及充电桩群*** | |
CN104142871A (zh) | 用于数据备份的方法、装置和分布式文件*** | |
CN104050115A (zh) | 一种存储控制器及其使用方法 | |
CN106164888A (zh) | 用于最小化工作负荷空闲时间和工作负荷间干扰的网络和存储i/o请求的排序方案 | |
CN106681656A (zh) | 一种动态可调的云存储***容错方法 | |
CN102882960B (zh) | 一种资源文件的发送方法及装置 | |
CN104125168A (zh) | 一种共享资源的调度方法和*** | |
CN105049524B (zh) | 一种基于hdfs的大规模数据集装载的方法 | |
CN108259374B (zh) | 一种多核处理器及报文处理方法 | |
CN104518897A (zh) | 虚拟防火墙的资源管理优化处理方法和装置 | |
KR20180046078A (ko) | 데이터베이스 리밸런싱 방법 | |
CN103399758A (zh) | 硬件加速方法、装置和*** | |
CN103617024B (zh) | 一种并发数据处理方法、装置和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131218 |
|
RJ01 | Rejection of invention patent application after publication |