CN117201479A - 一种跨集群文件传输方法、系统及装置 - Google Patents
一种跨集群文件传输方法、系统及装置 Download PDFInfo
- Publication number
- CN117201479A CN117201479A CN202311172622.8A CN202311172622A CN117201479A CN 117201479 A CN117201479 A CN 117201479A CN 202311172622 A CN202311172622 A CN 202311172622A CN 117201479 A CN117201479 A CN 117201479A
- Authority
- CN
- China
- Prior art keywords
- file
- cluster
- transmitted
- sub
- transmission
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 182
- 238000000034 method Methods 0.000 title claims abstract description 128
- 230000008569 process Effects 0.000 claims abstract description 45
- 238000012546 transfer Methods 0.000 claims description 39
- 230000006835 compression Effects 0.000 claims description 34
- 238000007906 compression Methods 0.000 claims description 34
- 238000013508 migration Methods 0.000 claims description 21
- 230000005012 migration Effects 0.000 claims description 21
- 230000007717 exclusion Effects 0.000 claims description 11
- 230000011218 segmentation Effects 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 23
- 238000007726 management method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000002452 interceptive effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- 238000011056 performance test Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001172 regenerating effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种跨集群文件传输方法、系统及装置。首先,通过主进程对待传输文件自动切分,并在切分后为每一个子文件分配线程;然后,通过调用线程从连接池中获取与子文件对应的加密通道,并调用线程创建与各子文件对应的子进程;最后,由各子进程按照对应的加密通道对各子文件进行并行传输。本发明在并行创建子进程的同时,也并行地建立了多个TCP连接,相比于rsync服务每传一个新的文件需要重新开启一次TCP连接而言,直接降低了TCP建连的时间开销,且各子文件通过并行方式传输,相当于加大了对带宽的利用效率。其次,在对待传输文件自动切分后再进行增量传输,使得各进程传输的数据量变小,传输效率更快。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种跨集群文件传输方法、系统及装置。
背景技术
经典的文件传输协议如文件传输协议(File Transfer Protocol,简称FTP)、标准通信协议(Standard Communication Protocol,简称SCP)、安全文件传输协议(SecureFile Transfer Protocol,简称SFTP)在大量数据迁移的场景下效率较低,其原因是它们均采用了全量传输协议,每次传输都要把整个文件全部发送一遍,占用大量的网络带宽和时间,导致传输效率较低。
在实际的数据迁移场景中,经常会遇到数据更新和同步,此时并不需要传输整个文件,只需要传输“增量”部分即可。因此,为提高数据传输效率,出现了远程同步工具rsync,rsync在应用层算法方面进行了优化,实现了差异传输和增量传输。因此,rsync可以尽可能减少传输的数据量,并且兼容SFTP支持的功能,允许SSH(Struts,Spring,Hibernate)协议加密传输。但是,rsync服务每传一个新的文件需要重新开启一次传输控制协议(Transmission Control Protocol,简称TCP)连接。一方面TCP的建连需要一定的时间代价;另一方面TCP拥塞控制算法的慢启动阶段,导致带宽无法被充分利用,从而使得传输性能急剧下降,导致传输效率降低。
发明内容
有鉴于此,本发明提供了一种跨集群文件传输方法、系统及装置,以解决传输性能下降,传输效率低的问题。
第一方面,本发明提供了一种跨集群文件传输方法,方法由第一集群执行,方法包括:
当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件,待传输文件存储于第一集群;为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道;调用线程创建传输子进程;采用并行方式调用传输子进程,通过加密通道对子文件进行传输,以将待传输文件传输至第二集群中。
本实施例提供的跨集群文件传输方法,首先,通过主进程对待传输文件进行自动切分,并在切分操作之后,为每一个子文件分配线程;然后,通过调用线程从连接池中获取与子文件对应的加密通道,并调用线程创建与各子文件对应的子进程(即传输进程);最后,由各子进程按照对应的加密通道对各子文件进行并行传输。本发明首先在并行创建子进程的同时,也并行地建立了多个TCP连接,相比于rsync服务每传一个新的文件需要重新开启一次TCP连接而言,直接降低了TCP建连的时间开销,且各子文件通过并行方式传输,相当于加大了对带宽的利用效率。其次,在对待传输文件自动切分后再进行增量传输,使得各进程传输的数据量变小,传输效率更快。
在一可选实施方式中,待传输列表的确定方式,包括:
获取待传输文件夹;按照预设并行粒度遍历待传输文件夹,确定待传输文件;由所有待传输文件组成待传输文件列表。
在一可选实施方式中,基于待传输文件的大小,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件,包括:
获取待传输文件的容量;将容量与预设阈值进行比较;当容量大于预设阈值时,调用主进程按照预设阈值对待传输文件进行切分,得到至少两个子文件;当容量小于或等于预设阈值时,调用主进程将待传输文件作为子文件。
在一可选实施方式中,在调用线程从预构建的连接池中获取与子文件对应的加密通道之前,方法还包括:
调用线程对预构建的连接池加互斥锁。
本实施例通过调用第二线程对连接池加互斥锁,避免了由于同一连接通道被多个进程占用而导致传输出错的情况,为每一个进程提供一个连接通道,间接提高了传输效率。
在一可选实施方式中,在调用线程创建传输子进程之后,方法还包括:
释放互斥锁;获取子文件的文件类型;基于文件类型,调用线程对子文件进行动态压缩;利用预置私钥对动态压缩后的文件进行加密,得到加密文件。
本实施例通过对压缩文件进行加密,可以保证文件传输过程中的安全性。
在一可选实施方式中,在采用并行方式调用传输子进程,通过加密通道对子文件进行传输的同时,方法还包括:
调用线程实时获取并存储子文件传输过程中对应的传输记录;当接收到查询指令时,基于查询指令对传输记录进行提取。
第二方面,本发明提供了一种跨集群文件传输系统,系统包括:
管理节点、第一集群和第二集群;管理节点,用于通过预置密钥与第一集群进行交互;第一集群,用于在与第二集群连接成功之后,调用主进程对第一集群中的待传输文件进行自动切分,为切分后得到的与待传输文件对应的至少一个子文件分配线程,调用线程从预构建的连接池中为子文件获取加密通道,调用线程创建传输子进程,采用并行方式调用传输子进程,通过加密通道对子文件进行传输,以将待传输文件传输至第二集群中;第二集群,用于接收子文件,并将所有子文件合并为待传输文件。
在一可选实施方式中,第一集群和第二集群连接成功的验证方式,包括:
第一集群将连接指令发送至第二集群;第二集群基于连接指令生成状态码,并将状态码发送至第一集群;第一集群用于基于状态码和预设状态码的一致性验证第一集群和第二集群是否连接成功。
在一可选实施方式中,当第一集群与第二集群连接失败时,管理节点还用于生成密钥对,并将私钥下发至第一集群,将公钥下发至第二集群,密钥对包括私钥和公钥;第一集群还用于利用私钥对子文件进行加密;第二集群还用于利用公钥对接收到的子文件进行解密。
第三方面,本发明提供了一种跨集群文件传输装置,装置包括:
切分模块,用于当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件,待传输文件存储于第一集群;分配模块,用于为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道;调用模块,用于调用线程创建传输子进程;传输模块,用于采用并行方式调用传输子进程,按照对应的加密通道对子文件进行传输,以将待传输文件传输至第二集群中。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的跨集群文件传输方法的流程示意图;
图2是根据本发明实施例的自动切分功能的传输性能测试图;
图3是根据本发明实施例的不同传输工具的传输性能测试图;
图4是根据本发明实施例的另一跨集群文件传输方法的流程示意图;
图5是根据本发明实施例的又一跨集群文件传输方法的流程示意图;
图6是根据本发明实施例的非压缩格式文件场景下的对比测试示意图;
图7是根据本发明实施例的压缩格式文件场景下的对比测试示意图;
图8是根据本发明实施例的混合文件场景下的对比测试示意图;
图9是根据本发明实施例的跨集群文件传输系统的结构示意图;
图10是根据本发明实施例的跨集群文件传输过程的实例示意图;
图11是根据本发明实施例的跨集群文件传输装置的结构框图;
图12是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本申请实施例进行具体描述之前,首先对当前数据传输领域的发展概况进行描述。
经典的文件传输协议包括文件传输协议(File Transfer Protocol,简称FTP)、标准通信协议(Standard Communication Protocol,简称SCP)和安全文件传输协议(SecureFile Transfer Protocol,简称SFTP)。
其中,FTP是一种应用层协议,客户端通过建立控制连接和数据连接与服务器通信,由于FTP协议不提供加密和身份验证机制,因此其安全性较差,容易被黑客攻击和拦截。
SCP是一种建立在SSH协议基础上的标准通信协议,虽然该协议提供加密的传输方式,但对于大量数据传输的场景而言,该协议传输效率较低。
SFTP是一种基于SSH协议的安全文件传输协议,提供加密和身份验证机制。SFTP协议具有FTP协议和SCP协议的优点,既提供了加密和身份验证机制,又具备命令行工具和图形化客户端工具。但是在大量数据迁移场景下,使用SFTP协议进行文件传输可能会导致效率较低、传输速度慢等问题。其主要原因为:①SFTP协议是基于SSH协议的全量传输协议,每次传输都需要将整个文件传输一遍,因此在大文件或大量文件的传输场景下,会占用大量的网络带宽和时间,导致传输效率较低。②SFTP协议的传输速度受网络质量和传输的数据量影响较大,在高丢包率和低带宽的环境下,传输速度会进一步下降。
在实际的数据迁移场景中,经常会遇到数据更新和同步,此时并不需要传输整个文件,只需要传输“增量”部分即可。因此,为提高数据传输效率,出现了远程同步工具rsync,rsync是linux系统下的数据镜像备份工具,该工具在应用层算法方面进行了优化,实现了差异传输和增量传输。因此,rsync可以尽可能减少传输的数据量,并且兼容SFTP支持的功能,允许SSH协议加密传输。但是,rsync服务每传一个新的文件需要重新开启一次TCP连接。一方面TCP的建连需要一定的时间代价;另一方面TCP拥塞控制算法的慢启动阶段,导致带宽无法被充分利用,从而使得传输性能急剧下降,导致传输效率降低。
而上述经典传输协议,在传输层采用的都是TCP协议,而TCP协议会随着网络丢包率和时延的变大,导致带宽利用率急剧下降。TCP传输协议的带宽吞吐能力由拥塞检测、控制算法决定。以拥塞检测处理方式来区分,主要分为两种:①基于丢包Loss-based的拥塞控制算法,以丢包来检测拥塞并调整传输速度。②基于延迟Delay-based的拥塞控制算法,以数据包的往返时间(Round Trip Time,简称RTT)的变化来检测拥塞并调整传输速度。但是Loss-based和Delay-based对拥塞的判断都不够准确。针对此,出现了基于用户数据报协议(User Datagram Protocol,简称UDP)的全新的协议和拥塞控制机制。
针对当前TCP进行长距离传输大量数据时的性能表现较差,提出基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT),该协议建立在UDP之上,引入新的拥塞控制以及可靠性机制。基于UDP协议的可靠性传输将拥塞控制算法的实现移动到了应用层,更加灵活和自由,但是由于一些网关会将一系列连续的UDP包视为网络攻击从而拒绝接收,这使得UDP传输的兼容性较差。其次大多高性能的UDP传输软件如Raysync、Fudx等均是闭源的,这使得用户使用时需要付出高昂的成本。
国外许多知名网格计算环境,均有自己独特的数据迁移系统架构。Globus通过Globus Connect软件提供了Globus平台接入的方式,利用现有的网络基础设施,为每个高校或企业接入的服务器提供了互相之间的数据共享服务。德国德累斯顿工业大学(Dresden)的高性能计算中心(ZIH)的数据迁移系统DataMover,为每个集群配备了“export node”,“export node”提供了共享数据的接口,具有不同于集群其他节点的高带宽的特点,具备一套完整的数据管理系统。但是,在国内不同数据中心之间的迁移往往是采用购买昂贵的专线的方式,对于更大规模的数据甚至使用陆运、空运的方式进行迁移。
综合上述描述,在数据迁移过程中存在:①传统传输软件带宽利用率低,传输效率不高;②基于UDP的传输软件兼容性差,且大多数是闭源产品,用户需要支付高昂的费用;③国内面向算力中心的跨集群环境中缺少较为系统的设计,且提供给个人用户的体验不佳;基于此,本发明实施例提供了一种跨集群文件传输方法、系统及装置。
根据本发明实施例,提供了一种跨集群文件传输方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种跨集群文件传输方法,该方法可以由自主设计的高性能传输工具Scow-sync执行,该工具以队列和线程池作为主要架构,基于rsync实现文件的并行传输,图1是根据本发明实施例的跨集群文件传输方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件。
具体地,数据迁移指示用于指示主进程开始数据迁移操作,数据迁移指示可以由用户与跨集群文件传输系统交互产生,也可以由输入的命令行指令产生,本实施例对数据迁移指示的产生方式不作具体限定。如,数据迁移指示可以为输入的Scow-sync-start指令。
具体地,待传输文件存储于第一集群,待传输文件可由用户通过跨集群文件传输系统的交互页面,在第一集群中勾选得到。
在一可选实施例中,步骤S101之前,还需验证第一集群与第二集群是否可以进行数据传输。其验证方式为:通过包含“-c参数”的Scow-sync-start指令验证第二集群密钥的正确性,并将验证结果通过标准输出(即stdout)缓存返回。基于缓存结果判断密钥是否正确,当密钥不正确时,需要基于密钥重置指令重新生成密钥,并重新通过该方式验证集群间是否可以进行数据传输。当密钥正确时,方可开始数据传输。
当接收到数据迁移指示时,调用主进程依次对待传输列表中的每一个待传输文件进行自动切分,并将切分后得到的与每一个待传输文件对应的至少一个子文件存储于任务列表中。具体地,自动切分即基于待传输文件的大小对待传输文件进行灵活切分的方法。与此同时,主线程还需对线程池进行初始化,即在线程池中构建任务列表,用于存储切分后待传输的子文件,需要说明的是,该任务列表支持动态扩容。
本步骤通过对待传输文件进行自动切分,可以在大文件传输场景下,提高带宽的利用率,从而提高传输效率。图2示出了相同网络环境下,具备大文件自动切分功能的Scow-sync与rsync分别对应的传输情况。由图2可知,具备大文件自动切分功能的Scow-sync对应的文件传输效率更高。
在一可选实施例中,待传输列表可通过如下方式得到:
首先,获取待传输文件夹。
具体地,待传输文件夹可以基于用户选择的文件夹路径从存储器中索引得到。
其次,按照预设并行粒度遍历待传输文件夹,确定待传输文件。
具体地,并行粒度即待传输文件对应的目录层级,如,目录层级为文件夹->文件->文档,那么,当并行粒度为1时,直接将一级目录即文件夹作为待传输文件,当并行粒度为2时,将二级目录即文件作为待传输文件,当并行粒度为3时,将三级目录即文档作为待传输文件。
最后,由所有待传输文件组成待传输文件列表。
示例性地,如本实施例中预设并行粒度为3,待传输文件夹为2个,即文件夹1和文件夹2。主进程通过递归的方式依次遍历文件夹1和文件夹2,由遍历到的所有三级目录即文档按照遍历顺序形成待传输文件列表,将待传输文件列表中的每一个文档确定为待传输文件。
步骤S102,为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道。
示例性地,在主进程将待传输文件切分为多个子文件存储于任务列表之后,由主线程通过条件变量通知一个或多个正在等待的工作线程。需要说明的是,线程在CPU上的分配则由操作系统内核的调度策略决定。
具体地,预构建的连接池为SSH连接池,在该连接池中存在若干SSH连接(即加密通道),每一条SSH连接均有两种状态,空闲和占用。在分别为待传输文件对应的每一个子文件分配线程之后,由线程从处于空闲状态的SSH连接中获取任一连接,作为与该线程对应的子文件传输时所需的加密通道。
步骤S103,调用线程创建传输子进程。
具体地,在确定出各子文件对应的加密通道后,分别调用与各子文件对应的线程创建对应的传输子进程,传输子进程即rsync子进程,rsync子进程基于rsync命令开启断点续传和增量传输选项,用于执行各子文件的传输任务。其中,rsync命令可以通过输入命令行产生,也可以预先通过交互界面进行设置。需要说明的是,在通过各线程分别创建rsync子进程的同时,也并行地建立了多个TCP连接。相比于rsync服务每传一个新的文件需要重新开启一次TCP连接而言,本步骤采用的方法直接降低了TCP建连的时间开销,后续并行地通过多个TCP连接来传输不同的文件,可以加大对带宽的利用效率。
图3示出了带宽为100Mbps,延时为50ms的实验网络环境下,rsync、具备并行创建传输子进程功能的Scow-sync和快速数据传输(Fast DataTransfer,简称FDT)的传输性能测试结果。由图3可知,随着数据集规模的上升,Scow-sync展现出来的优势更加明显,能够比传统的rsync取得更好的效果,与高性能软件FDT性能相当。
步骤S104,采用并行方式调用传输子进程,按照对应的加密通道对子文件进行传输,以将待传输文件传输至第二集群中。
示例性地,同一待传输文件对应的多个子文件通过并行方式传输。
示例性地,本实施例提供的跨集群文件传输方法,在采用并行方式调用传输子进程,通过加密通道对子文件进行传输的同时,还包括:调用线程实时获取并存储子文件传输过程中对应的传输记录;当接收到查询指令时,基于查询指令对传输记录进行提取。
具体地,在文件的传输过程中,可调用线程实时获取传输过程中的传输记录,并将传输记录存储于预设文件系统中。其中,传输记录包括传输进度、日志文件和错误文件。当接收到查询指令时,基于查询指令从预设文件系统中提取对应的传输记录,并将传输记录显示于交互界面处。查询指令可以是输入的命令行,如Scow-sync-query命令。本实施例通过存储传输过程中的传输记录,便于工作人员在需要时对传输过程中的具体信息进行读取。
在传输记录的存储过程中,若预设文件系统不存在,则需要进行初始化,初始化即构建预设文件系统的过程。除此之外,当基于Scow-sync-start指令以rsync子进程的形式开启文件传输后,将rsync子进程的stdout和stderr分别重定向到日志文件和错误文件,从而传递给上层应用,然后立即返回。当在文件传输过程中需要终止某次文件传输时,可以通过Scow-sync-terminate命令执行终止传输操作,其需要从命令行输入接收方地址、用户名、源文件路径三个参数,然后根据这三个参数通过psutil模块的命令,找到对应的rsync子进程,然后向该进程发出SIG_INT命令,终止进程。
本实施例提供的跨集群文件传输方法,首先,通过主进程对待传输文件进行自动切分,并在切分操作之后,为每一个子文件分配线程;然后,通过调用线程从连接池中获取与子文件对应的加密通道,并调用线程创建与各子文件对应的子进程(即传输进程);最后,由各子进程按照对应的加密通道对各子文件进行并行传输。本发明首先在并行创建子进程的同时,也并行地建立了多个TCP连接,相比于rsync服务每传一个新的文件需要重新开启一次TCP连接而言,直接降低了TCP建连的时间开销,且各子文件通过并行方式传输,相当于加大了对带宽的利用效率。其次,在对待传输文件自动切分后再进行增量传输,使得各进程传输的数据量变小,传输效率更快。
在本实施例中提供了一种跨集群文件传输方法,该方法可以由自主设计的高性能传输工具Scow-sync执行,图4是根据本发明实施例的跨集群文件传输方法的流程图,如图4所示,该流程包括如下步骤:
步骤S401,当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件。
具体地,步骤S401包括如下步骤:
步骤S4011,获取待传输文件的容量。
具体地,待传输文件的容量即待传输文件所占空间的大小。
步骤S4012,将容量与预设阈值进行比较。
示例性地,预设阈值可以是文件传输效率最高时待传输文件容量的最大值,预设阈值的选取此处不作具体限定,本领域技术人员可根据实际情况进行选取。
步骤S4013,当容量大于预设阈值时,调用主进程按照预设阈值对待传输文件进行切分,得到至少两个子文件。
当待传输文件的容量大于预设阈值时,表示当前待传输文件的容量会影响传输效率,此时,可以预设阈值为切分标准,将待传输文件切分为至少两个子文件。
步骤S4014,当容量小于或等于预设阈值时,调用主进程将待传输文件作为子文件。
当待传输文件的容量小于或等于预设阈值时,表示当前待传输文件的容量可以保持较高的传输效率,此时,可直接将待传输文件作为子文件。
步骤S402,为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道。详细请参见图1所示实施例的步骤S102,在此不再赘述。
步骤S403,调用线程创建传输子进程。详细请参见图1所示实施例的步骤S103,在此不再赘述。
步骤S404,采用并行方式调用传输子进程,按照对应的加密通道对子文件进行传输,以将待传输文件传输至第二集群中。详细请参见图1所示实施例的步骤S104,在此不再赘述。
在本实施例中提供了一种跨集群文件传输方法,该方法可以由自主设计的高性能传输工具Scow-sync执行,图5是根据本发明实施例的跨集群文件传输方法的流程图,如图5所示,该流程包括如下步骤:
步骤S501,当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件。详细请参见图1所示实施例的步骤S501,在此不再赘述。
步骤S502,调用线程对预构建的连接池加互斥锁。
示例性地,在为每一个子文件分配线程后,调用线程对预构建的连接池添加互斥锁,添加互斥锁后,其余线程不能对连接池进行任何操作。
本实施例通过调用线程对连接池加互斥锁,避免了由于同一加密通道被多个线程占用而导致传输出错的情况,通过加互斥锁的方式,为每一个子文件提供一个用以传输的加密通道,间接提高了传输效率。
步骤S503为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道。详细请参见图1所示实施例的步骤S102,在此不再赘述。
步骤S504,调用线程创建传输子进程。详细请参见图1所示实施例的步骤S103,在此不再赘述。
步骤S505,释放互斥锁。
示例性地,当线程从处于空闲状态的加密通道中选取一条加密通道后,该加密通道的状态更新为占用,此时,即可调用线程释放该互斥锁,再由其它子文件对应的线程通过步骤S502至步骤S505的过程获取对应的加密通道。
步骤S506,获取子文件的文件类型。
示例性地,子文件类型可以为文件的扩展名,基于文件扩展名判断当前子文件是否为压缩文件。
步骤S507,基于文件类型,调用线程对子文件进行动态压缩。
具体地,动态压缩即根据子文件的文件类型灵活进行选择是否执行压缩操作。如,子文件类型本身为压缩文件,则无需进行压缩,若子文件类型本身为普通文件(即非压缩文件),则调用线程对子文件进行压缩。
如图6所示,是在带宽为1Gbps的网络环境下传输非压缩格式文件时,不同压缩情况(即rsync不开启压缩、rsync开启压缩和Scow-sync动态压缩)下分别对应的传输性能。如图7所示,是在带宽为1Gbps的网络环境下传输压缩格式文件时,不同压缩情况(即rsync不开启压缩、rsync开启压缩和Scow-sync动态压缩)下分别对应的传输性能。如图8所示,是在带宽为1Gbps的网络环境下传输混合压缩格式文件时,不同压缩情况(即rsync不开启压缩、rsync开启压缩和Scow-sync动态压缩)下分别对应的文件传输性能。
由图6可知,随着延迟的增加,网络情况开始恶化,网络拥塞成为主要瓶颈。压缩的优势渐渐展现出来,压缩能够有效降低数据的传输量,提高传输效率。Scow-sync动态压缩与rsync开启压缩在该场景下几乎并列为最优策略。由图7可知,对于压缩格式的文件,再次进行压缩只会带来更多的时间开销,做无用功。在低延时的情况下,Scow-sync动态压缩能够与rsync关闭压缩实现同等的性能。随着延时的增加,网络成为主要瓶颈,此时压缩的计算速度大于网络传输速度,压缩不再成为瓶颈,三者传输效率几乎相同,但是Scow-sync动态压缩和rsync关闭压缩相比全部压缩占用更低的计算资源。由图8可知,传输的文件中部分是压缩格式,这更符合实际的情况。在这个过程中,Scow-sync动态压缩在20ms-80ms网络段,能够表现出来最佳的传输性能。
因此,本步骤通过动态压缩的方式,可以使得文件在网络延迟情况依然保持较高的传输性能。
步骤S508,利用预置私钥对动态压缩后的文件进行加密,得到加密文件。
示例性地,预置私钥为SSH私钥,本实施例通过对压缩文件进行加密,可以保证文件传输过程中的安全性。
步骤S509,采用并行方式调用传输子进程,按照对应的加密通道对子文件进行传输,以将待传输文件传输至第二集群中。详细请参见图1所示实施例的步骤S104,在此不再赘述。
本实施例提供的跨集群文件传输方法,第二线程基于子文件的文件类型对子文件进行动态压缩,用过这样的方式减小传输文件的大小,提高数据传输效率。通过对压缩文件进行加密,提高了文件传输过程中的安全性。
在本实施例中提供了一种跨集群文件传输系统,图9是根据本发明实施例的跨集群文件传输系统的结构图,如图9所示,该系统包括:
管理节点、第一集群和第二集群。
管理节点,用于通过预置密钥与第一集群进行交互。
第一集群,用于在与第二集群连接成功之后,调用主进程对第一集群中的待传输文件进行自动切分,为切分后得到的与待传输文件对应的至少一个子文件分配线程,调用线程从预构建的连接池中为子文件获取加密通道,调用线程创建传输子进程,采用并行方式调用传输子进程,通过加密通道对子文件进行传输,以将待传输文件传输至第二集群中。
第二集群,用于接收子文件,并将所有子文件合并为待传输文件。
示例性地,本实施例中的跨集群文件传输系统,将高性能传输工具Scow-sync按照跨集群文件传输架构集成至SCOW中,利用现代技术栈编写了用于跨集群传输的Web界面,最终通过容器化技术部署在了实际跨集群环境中。
该系统中,管理节点用于提供交互界面,实现用户与集群的交互。如,用户将预置密钥输入至交互界面,即可进入对第一集群的操作界面,从而执行第一集群和第二集群之间的文件传输工作。除此之外,管理节点还用于,当第一集群与第二集群无法进行数据传输时,还用于重新生成密钥对,并将密钥对下发至第一集群和第二集群。
当用户通过管理节点提供的交互界面进入到第一集群的操作界面后,在进行文件传输之前,系统都会自动检查密钥的正确性,即源集群(即第一集群)是否能够通过密钥建立与目标集群(即第二集群)的连接。连接成功时,方可进行文件传输。
示例性地,本实施例中,通过如下方式验证第一集群和第二集群是否连接成功。
具体地,第一集群将连接指令发送至第二集群;第二集群基于连接指令生成状态码,并将状态码发送至第一集群;第一集群用于基于状态码和预设状态码的一致性验证第一集群和第二集群是否连接成功。
示例性地,当用户进入到第一集群的操作界面后,通过点击“连接”生成连接指令,并将连接指令发送至第二集群。当第二集群接收到连接指令后,基于连接指令生成状态码,并将状态码发送至第一集群中。将状态码和预设状态码进行比较,当状态码与预设状态码一致时,表示第一集群与第二集群连接成功,进入第一集群的数据传输界面,开始数据传输。当状态码和预设状态码不一致时,表示第一集群与第二集群连接失败,并将连接失败的结果显示于第一集群的交互界面上。通过点击交互界面“重置密钥”生成密钥重置指令,并将重置指令发送至管理节点,由管理节点重新生成密钥对即公钥和私钥,并将密钥对下发至第一集群,将公钥下发至第二集群。当第一集群接收到管理节点下发的密钥对后,将密钥对保存至存储器中,并将存储结果显示于交互界面。此时,用户可重新通过“连接”按键产生的指令验证第一集群和第二集群是否连接成功。
在第一集群与第二集群连接成功之后,首先,调用主进程对第一集群中的待传输文件进行自动切分,并由操作系统为切分后得到的与待传输文件对应的至少一个子文件分配线程。其次,调用与每一个子文件对应的线程从预构建的SSH连接池中获取用于传输子文件的SSH连接(即加密通道)且,调用线程创建传输子进程。再次,调用各线程分别对与之对应的子文件进行动态压缩,并利用预置私钥对压缩后的文件进行加密,得到加密文件。最后,采用并行方式调用传输子进程,通过加密通道对子文件进行传输,以将待传输文件传输至第二集群中。文件传输过程中,各子文件对应的线程可实时获取并存储子文件传输过程中的传输记录,并将传输记录存储于集群的文件系统中。当接收到查询指令时,从文件系统中提取与查询指令对应的传输记录,并将传输记录显示于交互界面。
当第二集群接收到第一集群传输的加密文件之后,释放rsync子进程,调用各文件对应的线程,利用预置公钥对对应的加密文件进行解密,并对解密后的文件进行解压,解压之后,释放其余线程,由最后一个线程基于解压后得到的所有子文件还原为待传输文件。最后一个线程即第二集群接收到的最后一个加密文件对应的线程。
本系统中,第一集群与第二集群之间的文件传输过程由集成于系统中的高性能传输工具Scow-sync执行,执行实例图可参考图10。
本实施例提供的跨集群文件传输系统,通过管理节点提供了用户的交互界面,相比于通过用户输入命令行的方式实现交互而言,本实施例提供的系统降低了数据传输的门槛,提高了用户的体验度。
在本实施例中还提供了一种跨集群文件传输装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种跨集群文件传输装置,如图11所示,包括:
切分模块111,用于当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与待传输文件对应的至少一个子文件,待传输文件存储于第一集群;
分配模块112,用于为每一个子文件分配线程,调用线程从预构建的连接池中获取与子文件对应的加密通道;
调用模块113,用于调用线程创建传输子进程;
传输模块114,用于采用并行方式调用传输子进程,按照对应的加密通道对子文件进行传输,以将待传输文件传输至第二集群中
在一可选实施方式中,切分模块111中待传输列表通过如下子模块确定,包括:
第一获取子模块,用于获取待传输文件夹。
第一确定子模块,用于按照预设并行粒度遍历待传输文件夹,确定待传输文件。
构成子模块,用于由所有待传输文件组成待传输文件列表。
在一可选实施方式中,切分模块111,包括:
第二获取子模块,用于获取待传输文件的容量;
比较子模块,用于将容量与预设阈值进行比较;
第一调用子模块,用于当容量大于预设阈值时,调用主进程按照预设阈值对待传输文件进行切分,得到至少两个子文件;
第二调用子模块,用于当容量小于或等于预设阈值时,调用主进程将待传输文件作为子文件。
在一可选实施方式中,在分配模块112之前,装置还包括:
加锁模块,用于调用线程对预构建的连接池加互斥锁。
在一可选实施方式中,在调用模块113之后,装置还包括:
释放模块,用于释放互斥锁。
第一获取模块,用于获取子文件的文件类型。
压缩模块,用于基于文件类型,调用线程对子文件进行动态压缩。
加密模块,用于利用预置私钥对动态压缩后的文件进行加密,得到加密文件。
在一可选实施方式中,装置还包括:
第二获取模块,用于调用线程实时获取并存储子文件传输过程中对应的传输记录。
提取模块,用于当接收到查询指令时,基于查询指令对传输记录进行提取。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的跨集群文件传输装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图11所示的跨集群文件传输装置。
请参阅图12,图12是本发明可选实施例提供的一种计算机设备的结构示意图,如图12所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图12中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种跨集群文件传输方法,其特征在于,所述方法包括:
当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与所述待传输文件对应的至少一个子文件,所述待传输文件存储于第一集群;
为每一个所述子文件分配线程,调用所述线程从预构建的连接池中获取与所述子文件对应的加密通道;
调用所述线程创建传输子进程;
采用并行方式调用所述传输子进程,按照对应的所述加密通道对所述子文件进行传输,以将所述待传输文件传输至第二集群中。
2.根据权利要求1所述的方法,其特征在于,所述待传输列表的确定方式,包括:
获取待传输文件夹;
按照预设并行粒度遍历所述待传输文件夹,确定所述待传输文件;
由所有所述待传输文件组成所述待传输文件列表。
3.根据权利要求1或2所述的方法,其特征在于,所述调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与所述待传输文件对应的至少一个子文件,包括:
获取待传输文件的容量;
将所述容量与预设阈值进行比较;
当所述容量大于所述预设阈值时,调用所述主进程按照所述预设阈值对所述待传输文件进行切分,得到至少两个子文件;
当所述容量小于或等于所述预设阈值时,调用所述主进程将所述待传输文件作为子文件。
4.根据权利要求1所述的方法,其特征在于,在所述调用所述线程从预构建的连接池中获取与所述子文件对应的加密通道之前,所述方法还包括:
调用所述线程对所述预构建的连接池加互斥锁。
5.根据权利要求4所述的方法,其特征在于,在所述调用所述线程创建传输子进程之后,所述方法还包括:
释放所述互斥锁;
获取所述子文件的文件类型;
基于所述文件类型,调用所述线程对所述子文件进行动态压缩;
利用预置私钥对动态压缩后的文件进行加密,得到加密文件。
6.根据权利要求1所述的方法,其特征在于,在所述采用并行方式调用所述传输子进程,通过所述加密通道对所述子文件进行传输的同时,所述方法还包括:
调用所述线程实时获取并存储所述子文件传输过程中对应的传输记录;
当接收到查询指令时,基于所述查询指令对所述传输记录进行提取。
7.一种跨集群文件传输系统,其特征在于,所述系统包括:
管理节点、第一集群和第二集群;
所述管理节点,用于通过预置密钥与所述第一集群进行交互;
所述第一集群,用于在与所述第二集群连接成功之后,调用主进程对所述第一集群中的待传输文件进行自动切分,为切分后得到的与所述待传输文件对应的至少一个子文件分配线程,调用所述线程从预构建的连接池中为所述子文件获取加密通道,调用所述线程创建传输子进程,采用并行方式调用所述传输子进程,通过所述加密通道对所述子文件进行传输,以将所述待传输文件传输至所述第二集群中;
所述第二集群,用于接收所述子文件,并将所有所述子文件合并为所述待传输文件。
8.根据权利要求7所述的系统,其特征在于,所述第一集群和所述第二集群连接成功的验证方式,包括:
所述第一集群将连接指令发送至所述第二集群;
所述第二集群基于所述连接指令生成状态码,并将所述状态码发送至所述第一集群;
所述第一集群基于所述状态码和预设状态码的一致性验证所述第一集群和所述第二集群是否连接成功。
9.根据权利要求7所述的系统,其特征在于,当所述第一集群与所述第二集群连接失败时,所述管理节点还用于生成密钥对,并将私钥下发至所述第一集群,将公钥下发至所述第二集群,所述密钥对包括所述私钥和所述公钥;
所述第一集群还用于利用所述私钥对所述子文件进行加密;
所述第二集群还用于利用所述公钥对接收到的所述子文件进行解密。
10.一种跨集群文件传输装置,其特征在于,所述装置包括:
切分模块,用于当接收到数据迁移指示时,调用主进程依次对待传输列表中的待传输文件进行自动切分,得到与所述待传输文件对应的至少一个子文件,所述待传输文件存储于第一集群;
分配模块,用于为每一个所述子文件分配线程,调用所述线程从预构建的连接池中获取与所述子文件对应的加密通道;
调用模块,用于调用所述线程创建传输子进程;
传输模块,用于采用并行方式调用所述传输子进程,按照对应的所述加密通道对所述子文件进行传输,以将所述待传输文件传输至第二集群中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311172622.8A CN117201479A (zh) | 2023-09-12 | 2023-09-12 | 一种跨集群文件传输方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311172622.8A CN117201479A (zh) | 2023-09-12 | 2023-09-12 | 一种跨集群文件传输方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117201479A true CN117201479A (zh) | 2023-12-08 |
Family
ID=89001231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311172622.8A Pending CN117201479A (zh) | 2023-09-12 | 2023-09-12 | 一种跨集群文件传输方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117201479A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181034A1 (en) * | 2012-12-21 | 2014-06-26 | Zetta, Inc. | Systems and methods for minimizing network bandwidth for replication/back up |
CN110275869A (zh) * | 2019-06-27 | 2019-09-24 | 浪潮商用机器有限公司 | 一种扁平文件处理方法及相关装置 |
CN110333911A (zh) * | 2019-07-04 | 2019-10-15 | 北京迈格威科技有限公司 | 一种文件包读取方法及装置 |
CN110365754A (zh) * | 2019-06-28 | 2019-10-22 | 苏州浪潮智能科技有限公司 | 一种分布式文件传输存储方法、设备以及存储介质 |
CN115086298A (zh) * | 2022-05-30 | 2022-09-20 | 中银金融科技有限公司 | 文件传输方法及装置 |
CN116684405A (zh) * | 2023-07-10 | 2023-09-01 | 展讯通信(天津)有限公司 | 一种文件传输方法、装置、电子设备及存储介质 |
-
2023
- 2023-09-12 CN CN202311172622.8A patent/CN117201479A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181034A1 (en) * | 2012-12-21 | 2014-06-26 | Zetta, Inc. | Systems and methods for minimizing network bandwidth for replication/back up |
CN110275869A (zh) * | 2019-06-27 | 2019-09-24 | 浪潮商用机器有限公司 | 一种扁平文件处理方法及相关装置 |
CN110365754A (zh) * | 2019-06-28 | 2019-10-22 | 苏州浪潮智能科技有限公司 | 一种分布式文件传输存储方法、设备以及存储介质 |
CN110333911A (zh) * | 2019-07-04 | 2019-10-15 | 北京迈格威科技有限公司 | 一种文件包读取方法及装置 |
CN115086298A (zh) * | 2022-05-30 | 2022-09-20 | 中银金融科技有限公司 | 文件传输方法及装置 |
CN116684405A (zh) * | 2023-07-10 | 2023-09-01 | 展讯通信(天津)有限公司 | 一种文件传输方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11928029B2 (en) | Backup of partitioned database tables | |
US11036591B2 (en) | Restoring partitioned database tables from backup | |
US11327949B2 (en) | Verification of database table partitions during backup | |
US11611537B1 (en) | Autonomous agent messaging | |
US7209972B1 (en) | High speed data transfer mechanism | |
CN108028833A (zh) | 一种nas数据访问的方法、系统及相关设备 | |
CN105260377B (zh) | 一种基于分级存储的升级方法和系统 | |
US11647103B1 (en) | Compression-as-a-service for data transmissions | |
US11861386B1 (en) | Application gateways in an on-demand network code execution system | |
CN111600755B (zh) | 上网行为管理系统和方法 | |
WO2023213262A1 (zh) | 网格代理扩展的方法和装置 | |
CN111431951B (zh) | 一种数据处理方法、节点设备、系统及存储介质 | |
CN117201479A (zh) | 一种跨集群文件传输方法、系统及装置 | |
US11307912B1 (en) | Forward message compatibility safety in producer-consumer systems | |
US20230188538A1 (en) | Communication Systems and Methods for Validation of a Transaction Via Consensus in A Distributed Network Environment | |
CN113542282A (zh) | 一种跨计算中心文件传输方法、装置、设备及存储介质 | |
KR102187301B1 (ko) | 가상 라우터를 이용한 다중 가상 네트워크 통신 시스템 및 방법 | |
Chavarriaga et al. | Scaling the deployment of virtual machines in UnaCloud | |
CN116760850B (zh) | 一种数据处理方法、装置、设备、介质及系统 | |
US20240214357A1 (en) | Method to migrate workload between two environments and a system thereof | |
US11973744B2 (en) | Systems and methods for establishing consensus in distributed communications | |
US11442943B1 (en) | Error-causing record isolation for data stream processing | |
CN117527458B (zh) | 一种多播数据分发方法、装置、电子设备及存储介质 | |
EP1256050B1 (en) | High speed data transfer mechanism | |
US11571619B1 (en) | Cross-region management of game server fleets |
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 |