发明内容
针对现有技术中的问题,本发明实施例提供一种数据传输方法、装置、电子设备及存储介质。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种数据传输方法,包括:
接收发送端推送的文件事件,所述文件事件包括需要同步的文件;
基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,
其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定权重值用于衡量对应的数据通道中待处理的文件的压力大小。
在一些示例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,还包括:
获取第一数据通道中待处理的多个文件事件;
获得所述多个文件事件中每个文件事件的文件事件权重值;
基于所述多个文件事件中每个文件事件的文件事件权重值,得到所述第一数据通道的权重值,
其中,所述第一数据通道为所述多个数据通道中的任一数据通道。
在一些示例中,所述获得所述多个文件事件中每个文件事件的文件事件权重值,包括:
获得每个文件事件需要同步的文件的大小;
基于每个文件事件需要同步的文件的大小和预设的块大小,得到相应的文件事件的文件事件权重值。
在一些示例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,包括:
从所述多个数据通道中选择出权重值最小的数据通道作为所述目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端。
在一些示例中,所述权重值与对应的数据通道中待处理的文件的压力正相关
在一些示例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,还包括:
在负载模式下,判断所述多个数据通道中每个数据通道的权重值是否均达到第一预设值;
如果所述多个数据通道中每个数据通道的权重值均达到第一预设值,则将所述多个数据通道置为繁忙状态,并在所述文件事件中需要同步的文件的大小未达到第二预设值之前,将所述文件事件分配给控制通道,以通过所述控制通道将所述文件同步给接收端。
在一些示例中,所述将所述多个数据通道置为繁忙状态之后,还包括:
如果所述文件事件中需要同步的文件的大小达到所述第二预设值,则上调所述第一预设值,并基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,直至所述多个数据通道中出现权重值下降到上调前的第一预设值以下的数据通道时,将所述多个数据通道恢复为空闲状态,并恢复上调前的第一预设值。
在一些示例中,还包括:如果为低功耗模式,则将所述控制通道作为目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端。
在一些示例中,还包括:
接收发送端推送的控制事件,并通过所述控制通道处理所述控制事件
第二方面,本发明实施例还提供了一种数据传输装置,包括:
接收模块,用于接收发送端推送的文件事件,所述文件事件包括需要同步的文件;
分配模块,用于基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,
其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值用于衡量对应的数据通道中待处理的文件的压力大小。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的数据传输方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的数据传输方法的步骤。
第五方面,本发明实施例还提供了一种计算机程序产品,所计算机程序产品包括有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的数据传输方法的步骤。
由上面技术方案可知,本发明实施例提供的数据传输方法、装置、电子设备及存储介质,根据每个数据通道的权重值智能地选择目标数据通道,通过目标数据通道将文件同步给接收端,可以将整体传输时间最短化,达到充分利用网络带宽、提高文件传输效率的目的。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的数据传输方法的流程图。如图1所示,本发明实施例提供的数据传输方法,包括如下步骤:
步骤101:接收发送端推送的文件事件,文件事件包括需要同步的文件。
如图2所示,本发明实施例的数据传输方法可以通过多路传输模型实现,其中,多路传输模型中包括分配器和多个数据通道。例如:分配器接收发送端发送的文件事件,如同步文件B的文件事件、同步文件C的文件事件等,其中,发送端可以是一个处理文件业务的服务器,同步的文件可以是文件数据、业务数据等。
在以上描述中,数据通道是文件传输的通道,即:用于传输文件的通道。
步骤102:基于多个数据通道中每个数据通道的权重值从多个数据通道中选择目标数据通道,并将文件事件分配给目标数据通道,以通过目标数据通道将文件同步给接收端,其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值用于衡量对应的数据通道中待处理的文件的压力大小。
结合图2所示,通道(如数据通道)首次启动向分配器发起注册信息,分配器最终获取到通道的标识,如UUID,并定期维护通道,达到通道的集中管理、统一分配的目的。
其中,事件分配指发送端推送文件事件(如新增、查询)等,分配器将分配给数据通道处理。
另外,为了提升事件处理效率,本发明的实施例中,对于发送端推送的文件事件,如果是相同的文件事件,如:文件名、文件大小、修改时间一致时,并且文件正在传输期间,则认为是相同的文件事件,分配器将对事件进行去重操作,达到过滤冗余事件,防止文件反复同步,提高带宽利用率。
在本发明的一个实施例中,发送端推送大量的文件事件时,分配器结合数据通道的压力情况对文件事件进行智能分配,从而,可以达到最短时间内同步完成所有文件事件的目的。例如:同步的是中等大小的文件时,数据通道均衡地发送文件;在大小文件混合的场景下,当数据通道均忙于发送大文件时,小文件可以快速交由控制通道进行发送;在小文件的场景下,数据通道与控制通道可以一起均衡发送文件。其中,大文件、中等大小的文件和小文件,可以通过与预设阈值进行比较得到,例如,预先设定第一预设阈值和第二预设阈值,其中,第一预设阈值大于第二预设阈值,将大于第一预设阈值的文件确定为大文件,将小于第二预设阈值的文件确定为小文件,介于第二预设阈值和第一预设阈值之间的文件为中等大小的文件。
在具体示例中,基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,包括:获取第一数据通道中待处理的多个文件事件;获得所述多个文件事件中每个文件事件的文件事件权重值;基于所述多个文件事件中每个文件事件的文件事件权重值,得到所述第一数据通道的权重值,其中,所述第一数据通道为所述多个数据通道中的任一数据通道。
该示例中,获得所述多个文件事件中每个文件事件的文件事件权重值,包括:获得每个文件事件需要同步的文件的大小;基于每个文件事件需要同步的文件的大小和预设的块大小,得到相应的文件事件的文件事件权重值,其中,预设的块大小用于标识文件存储的最小单元。例如,将预设的块大小设置为4KB,那么即使小于4KB的文件权重也会按照4KB计算。在多数场景下,可以将预设的块大小设置为4KB,在另外一些场景下,也可以将预设的块大小设置为8KB、16KB等。在以下实施例中,为了表述方便,部分位置出现的块大小与此处预设的块大小具有相同含义。
在得到每个数据通道的权重值之后,基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,包括:从所述多个数据通道中选择出权重值最小的数据通道作为所述目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,该示例中,权重值与对应的数据通道中待处理的文件的压力正相关。
即:根据当前发送端推送的文件事件,结合数据通道的权重信息,求解出局部最优解,纵观到整体的文件同步过程,可以达到逼近全局最优解的效果,即整体传输时间最短。根据跨域传输的文件业务特点、考虑文件事件在真实文件系统上的开销,划定了目录相关的开销小的事件(目录增删改、文件删除)统一在控制通道上处理,文件开销大的(文件查询、新增)事件分配到数据通道或控制通道处理。
在多路传输模型中,通常需要分配处理的文件事件为文件查询、文件新增事件,因此,设置了数据通道的权重值,低权重值的数据通道表示业务压力低,文件事件将优先分配给权重值较低的数据通道进行处理。结合图2所示,假设包括1个控制通道和N个数据通道,即:C={C0,D0,D1,D2…DN},其中C0为控制通道,{D0,D1,D2…DN}为数据通道,默认权重W={WC,WD0,WD1,WD2,…WDN},优先选取权重值最低的数据通道进行事件分配。其中目录事件的权重值为Wec={块大小(blocks ize)}、数据事件的权重值Wed={MAX(文件大小(byte),块大小(blocks ize))},事件分配后添加到当前权重值WDN,事件完成后再减少该权重值。例如:一个数据通道上已经分配的待处理和正在处理的文件事件总数为5个,假设块大小为4K,这5个文件事件的文件大小分别为:2K、1K、8K、10K和15K,则这5个文件事件的文件事件权重分别为:4K、4K、8K、10K和15K,因此,该数据通道的权重值为:4K+4K+8K+10K+15K=41K。
如图3所示,利用本发明实施例的数据传输方法,对文件事件进行分配的示意图,例如:文件H、E和A分配给一个数据通道、文件J、G和B分配给另一个数据通道等。
根据本发明实施例的数据传输方法,根据每个数据通道的权重值智能地选择目标数据通道,通过目标数据通道将文件同步给接收端,可以将整体传输时间最短化,达到充分利用网络带宽、提高文件传输效率的目的。
在本发明的一个实施例中,基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,还包括:在负载模式下,判断所述多个数据通道中每个数据通道的权重值是否均达到第一预设值;如果所述多个数据通道中每个数据通道的权重值均达到第一预设值,则将所述多个数据通道置为繁忙状态,并在所述文件事件中需要同步的文件的大小未达到第二预设值之前,将所述文件事件分配给控制通道,以通过所述控制通道将所述文件同步给接收端。
该示例中,将所述多个数据通道置为繁忙状态之后,还包括:如果所述文件事件中需要同步的文件的大小达到所述第二预设值,则上调所述第一预设值,并基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,直至所述多个数据通道中出现权重值下降到上调前的第一预设值以下的数据通道时,将所述多个数据通道恢复为空闲状态,并恢复上调前的第一预设值。
具体来说,控制门限Tweight(即:第一预设值)用于标识当前传输的最大权重值,小文件门限Tfilesize(即:第二预设值)用于标识大小文件,当每个数据通道的权重值均达到控制门限阈值后,分配器将数据通道标识为繁忙状态STBUSY,当所有数据通道均被标识为繁忙状态后,控制通道开始承担小文件的发送工作。整体出现繁忙情况后,将上调控制门限放大Tweigh=Tweight×2,恢复空闲后再回调门限值Tweig=Tweight÷2。
在本发明的一个实施例中,还包括超时重传机制,即:要求数据通道定期给分配器发送保活报文,分配器收集各个通道的压力值与健康情况,来保证业务的健壮性。超时重传旨在解决通道异常导致事件丢失的问题,分配器的计分板上正在发送的文件事件,以目录树形态进行维护:Et={Et0,Et1,Et2,…Etn},并根据数据通道对文件节点进行染色标记,内部使用链式结构将事件串起来E={E0,E1,E2,…EN};当发现通道异常离线情况,则对该通道染色的节点进行回收,根据智能分配算法、动态门限算法进行重新标记、分配。如图4所示,通道0对应1.txt、2.jpg和7.exe的文件事件。通道1对应3.txt和5.jpg的文件事件,剩余的对应通道2的文件事件等。
在本发明的一个实施例中,还包括:如果为低功耗模式,则将所述控制通道作为目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端。即:直接由控制通道处理文件事件,这样,不需要进行数据通道的分配,节省分配开销。
在本发明的一个实施例中,还包括:接收发送端推送的控制事件,并通过所述控制通道处理所述控制事件。即:如果推送的为控制事件,如:目录相关的开销小的事件,(目录增删改、文件删除),统一在控制通道上处理,这样,节省数据通道的分配开销。
图5示出了本发明实施例提供的数据传输装置的结构示意图。如图5所示,本实施例提供的数据传输装置,包括:接收模块510和分配模块520,其中:
接收模块510,用于接收发送端推送的文件事件,所述文件事件包括需要同步的文件;
分配模块520,用于基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值与对应的数据通道中待处理的文件的压力正相关。
基于上述各实施例的内容,在本实施例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,还包括:
获取第一数据通道中待处理的多个文件事件;
获得所述多个文件事件中每个文件事件的文件事件权重值;
基于所述多个文件事件中每个文件事件的文件事件权重值,得到所述第一数据通道的权重值,
其中,所述第一数据通道为所述多个数据通道中的任一数据通道。
基于上述各实施例的内容,在本实施例中,所述获得所述多个文件事件中每个文件事件的文件事件权重值,包括:
获得每个文件事件需要同步的文件的大小;
基于每个文件事件需要同步的文件的大小和预设的块大小,得到相应的文件事件的文件事件权重值,其中,预设的块大小用于标识文件存储的最小单元。
基于上述各实施例的内容,在本实施例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,包括:
从所述多个数据通道中选择出权重值最小的数据通道作为所述目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端。
基于上述各实施例的内容,在本实施例中,所述权重值与对应的数据通道中待处理的文件的压力正相关
基于上述各实施例的内容,在本实施例中,所述基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端之前,还包括:
在负载模式下,判断所述多个数据通道中每个数据通道的权重值是否均达到第一预设值;
如果所述多个数据通道中每个数据通道的权重值均达到第一预设值,则将所述多个数据通道置为繁忙状态,并在所述文件事件中需要同步的文件的大小未达到第二预设值时,将所述文件事件分配给控制通道,以通过所述控制通道将所述文件同步给接收端。
基于上述各实施例的内容,在本实施例中,所述将所述多个数据通道置为繁忙状态之后,还包括:
如果所述文件事件中需要同步的文件的大小达到所述第二预设值,则上调所述第一预设值,并基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,直至所述多个数据通道中出现权重值下降到上调前的第一预设值以下的数据通道时,将所述多个数据通道恢复为空闲状态,并恢复上调前的第一预设值。
基于上述各实施例的内容,在本实施例中,还包括:如果为低功耗模式,则将所述控制通道作为目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端。
基于上述各实施例的内容,在本实施例中,还包括:
接收发送端推送的控制事件,并通过所述控制通道处理所述控制事件
根据本发明实施例的数据传输装置,根据每个数据通道的权重值智能地选择目标数据通道,通过目标数据通道将文件同步给接收端,可以将整体传输时间最短化,达到充分利用网络带宽、提高文件传输效率的目的。
由于本发明实施例提供的数据传输装置,可以用于执行上述实施例所述的数据传输方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
在本实施例中,需要说明的是,本发明实施例的装置中的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图6,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;
其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;
所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述数据传输方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:接收发送端推送的文件事件,所述文件事件包括需要同步的文件;基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值用于衡量对应的数据通道中待处理的文件的压力大小。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据传输方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:接收发送端推送的文件事件,所述文件事件包括需要同步的文件;基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值用于衡量对应的数据通道中待处理的文件的压力大小。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
基于相同的发明构思,本发明又一实施例提供了一种计算机程序产品,所计算机程序产品包括有计算机程序,该计算机程序被处理器执行时实现上述数据传输方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述过程:接收发送端推送的文件事件,所述文件事件包括需要同步的文件;基于多个数据通道中每个数据通道的权重值从所述多个数据通道中选择目标数据通道,并将所述文件事件分配给所述目标数据通道,以通过所述目标数据通道将所述文件同步给接收端,其中,每个数据通道的权重值由该数据通道中待处理的文件事件确定,所述权重值用于衡量对应的数据通道中待处理的文件的压力大小。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上面实施例的描述。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的流量审计方法。
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。