掌桥专利:专业的专利平台
掌桥专利
首页

支持多源多目标的分布式文件分发方法和装置

文献发布时间:2024-04-18 20:01:30


支持多源多目标的分布式文件分发方法和装置

技术领域

本发明涉及分布式文件分发技术领域,尤其是涉及一种支持多源多目标的分布式文件分发方法和装置。

背景技术

文件分发交换是常见的业务应用场景,文件传输协议(File Transfer Protocol,FTP)协议是一种常用于文件分发交换的传输协议,FTP协议包含两个部分,即FTP服务器和FTP客户端,用户可以通过FTP客户端访问FTP服务器上的资源,FTP具有可靠和高效的传输数据等优点。

在大规模分布式文件分发场景中,会有多个源端节点不断产生大量文件,不同业务系统生成的文件大小差异也很大,这些海量文件需要根据业务需求分发到多个使用方系统,每个使用方系统会提供多个目标端节点来接收处理文件,但存在安全性差,易被防火墙拦截,在传输小文件时效率较低等缺点。

发明内容

本发明的目的在于提供一种支持多源多目标的分布式文件分发方法和装置,以缓解了现有技术中存在的文件传输安全性较差以及效率较低的技术问题。

第一方面,本发明实施例提供了一种支持多源多目标的分布式文件分发方法,包括:

响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶;其中,所述文件传输通道包括一个或多个源端节点和一个或多个接收组,每个所述接收组包括一个或多个目标端节点;

基于所述源端节点的文件发送模块获取所述文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中;

基于所述目标端节点的文件接收模块获取所述文件传输通道的通道配置信息,从所述目标消息队列主题中逐个读取所述文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,在响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶的步骤之前,所述方法包括:

搭建消息队列kafka集群和对象存储minio集群。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶的步骤,包括:

构建文件分发管理Web;

响应于用户操作,按业务场景设置文件传输通道;

根据所述文件传输通道的通道配置信息创建消息队列主题和对象存储桶;

向所述文件传输通道的源端节点部署文件发送模块;

向所述文件传输通道的目标端节点部署文件接收模块。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,基于所述源端节点的文件发送模块获取所述文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中的步骤,包括:

文件发送模块定期扫描每个所述文件传输通道的本地目录文件;当扫描到的文件在发送成功后,则删除原文件;当扫描到的文件发送失败后,则将所述扫描到的文件备份到错误数据目录;

将文件内容分块上传到目标对象存储桶中,将多个文件元数据进行聚合写入目标消息队列主题中。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,基于所述源端节点的文件发送模块获取所述文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中的步骤,还包括:

获取文件发送模块的配置信息,所述配置信息包括源端节点的所有传输通道配置信息;

初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群;

创建并启动文件发送器线程;

创建并启动文件扫描器线程,分配文件传输通道;

文件扫描器线程定期针对分配的每个文件传输通道,读取目录第一预设数量文件,存储到本地文件元数据缓存中;

文件发送器线程监视本地文件元数据缓存,逐个获取文件进行校验;若检验通过则将文件内容上传到对象存储桶中,并将文件元数据写入消息队列集群主题中;若检验不通过则将文件写入错误目录用于后续排查;

当收到进程终止指令时,关闭文件扫描器线程和文件发送器线程,释放当前连接资源。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,基于所述目标端节点的文件接收模块获取所述文件传输通道的通道配置信息,从所述目标消息队列主题中逐个读取所述文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录的步骤,包括:

如果所述文件元数据大于第一文件体量阈值,则根据文件块存储位置从目标对象存储桶中并行下载后再组装成原始文件放到本地目录;

如果元数据为小于第二文件体量阈值的文件聚合而成,则根据文件块存储位置从目标对象存储桶中下载后再抽取组装成原始文件放到本地目录。

结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,基于所述目标端节点的文件接收模块获取所述文件传输通道的通道配置信息,从所述目标消息队列主题中逐个读取所述文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录的步骤,包括:

获取文件接收模块的配置信息,所述配置信息包括目标端节点的全部传输通道配置信息;

初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群;

创建并启动文件下载器线程;

创建并启动文件元数据接收器线程,分配文件传输通道;

文件元数据接收器线程针对分配的每个通道,从消息队列集群中读取第二预设数量的文件元数据,存储到本地文件元数据缓存;

文件下载器线程监视本地文件元数据缓存,读取解析文件元数据,获取文件存储位置,从对象存储桶中下载并组装文件内容,输出文件到本地指定目录;

当收到进程终止指令时,关闭文件元数据接收器线程和文件下载器线程,释放当前连接资源。

第二方面,本发明实施例还提供一种支持多源多目标的分布式文件分发装置,包括:

确定单元,响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶;其中,所述文件传输通道包括一个或多个源端节点和一个或多个接收组,每个所述接收组包括一个或多个目标端节点;

发送单元,基于所述源端节点的文件发送模块获取所述文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中;

接收单元,基于所述目标端节点的文件接收模块获取所述文件传输通道的通道配置信息,从所述目标消息队列主题中逐个读取所述文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录。

第三方面,实施例提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述前述实施方式任一项所述的方法的步骤。

第四方面,实施例提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现前述实施方式任一项所述的方法的步骤。

本发明实施例带来了一种支持多源多目标的分布式文件分发方法,适应大规模分布式文件分发场景,通过搭建分布式消息队列kafka集群和对象存储minio集群,按业务场景创建文件传输通道,将多个源端节点的本地目录文件安全便捷地传输到多个目标端节点的指定目录下,多个目标端节点可按需构建接收消费者组,实现组内负载均衡和组间复制方式分发文件,同时传输过程中支持大文件分块和小文件聚合特性,提高各类文件的传输效率和可管理性。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种支持多源多目标的分布式文件分发架构图;

图2为本发明实施例提供的一种支持多源多目标的分布式文件分发方法图;

图3为本发明实施例提供的一种支持多源多目标的分布式文件分发装置的功能模块示意图;

图4为本发明实施例提供的电子设备的硬件架构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前分布式文件的安全性较差,尤其在传输小文件时效率较低。

基于此,本发明实施例提供的一种支持多源多目标的分布式文件分发方法和装置,可以提高大规模分布式文件交换场景中的分发效率。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种支持多源多目标的分布式文件分发结构进行详细介绍,图1为本发明实施例提供的一种支持多源多目标的分布式文件分发方法的架构示意图。具体包括文件分发管理Web、数据存储模块、源端文件发送模块和目标端文件接收模块。

文件分发管理Web提供访问页面,接收用户操作,按业务场景设置文件传输通道,为通道创建所需要的消息队列主题和对象存储桶,并根据通道配置的数据存储周期,定期老化删除消息队列主题和对象存储桶中的数据,支持向通道定义的源端节点部署文件发送模块,以及向通道定义的目标端节点部署文件接收模块。

数据存储模块包括消息队列kafka集群和对象存储minio集群,针对每个文件传输通道,在消息队列集群中创建一个专属主题,用来存储文件元数据消息,在对象存储集群中按时间等维度创建一系列存储桶,用来存储文件内容。

源端文件发送模块定期扫描每个通道的本地目录,将扫描到的文件内容上传到指定对象存储桶中,文件元数据写入指定消息队列主题中。

目标端文件接收模块以实时或离线方式从指定消息队列主题中逐个读取文件元数据,根据元数据判断是否处理,如果需要处理则从指定对象存储桶中下载文件到本地目录。

在前述实施例基础上,图2还提供了一种支持多源多目标的分布式文件分发方法流程图,该方法具体包括以下步骤:

步骤S102,响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶。

其中,文件传输通道包括通道名称,一般每个通道代表随时间不断产生的同类型业务数据文件;每个通道包括一个或多个源端节点,一个或多个接收组且每个接收组包含一个或多个目标端节点,每个源端节点产生的数据文件都会通过传输通道分发到每个接收组,如果接收组内有多个目标端节点,每个目标端节点以负载均衡方式接收文件。

步骤S104,基于源端节点的文件发送模块获取文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中。

具体地,源端节点配置的文件发送模块将文件内容和元数据分别分发到指定位置。

作为一种可选的实施例,可配置每个通道每轮最多处理的文件数目,避免某个通道文件数量过多影响其他通道传输延迟;每轮文件扫描前需要等待上一轮文件全部发送完成,避免文件被重复扫描处理;

在一些实施例中,还可配置文件分块大小,当文件内容过大(即大于第一文件体量阈值)时会自动分块,并行上传存储到指定对象存储桶中,并在文件元数据进行标识,以提高大文件的传输速度和可靠性;可配置支持将多个小文件(即小于第二文件体量阈值的文件)聚合成单一文件,并在文件元数据进行标识,以提高小文件的传输速度和可管理性。

步骤S106,基于目标端节点的文件接收模块获取文件传输通道的通道配置信息,从目标消息队列主题中逐个读取文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录。

这里,目标端节点配置的文件接收模块从指定位置读取文件元数据,并根据元数据情况判断是否执行处理操作。其中,目标端节点的文件接收模块支持按通道划分接收组,属于同一接收组对应通道中的文件就以组内负载均衡方式工作,属于不同接收组对应通道中的文件则以组间复制方式工作。如果元数据标识为大文件,则需要根据文件块存储位置从指定对象存储桶中并行下载后再组装成原始文件放到本地目录。如果元数据标识为小文件聚合,则需要根据文件块存储位置从指定对象存储桶中下载后再抽取组装成原始文件放到本地目录。

在实际应用的优选实施例中,本发明实施例的方法可适用于大规模分布式文件分发场景,将多个源端节点的本地目录文件安全便捷地传输到多个目标端节点的指定本地目录下,多个目标端节点可组成接收组,文件分发到同一接收组内的多个目标端节点时进行负载均衡,文件分发到不同接收组的目标端节点时进行文件复制。

在一些实施例中,为了保证分布式文件分发方法的顺利应用,在步骤S102之前,该方法包括:

步骤1.1),搭建消息队列kafka集群和对象存储minio集群。

该消息队列kafka集群是一个分布式的、分区的、多副本的开源消息发布-订阅系统。生产者(Producer)将消息发布到Kafka主题(Topic)上,消费者(Consumer)订阅主题并消费这些消息。在Kafka集群中一个服务器称为一个Broker。对于每一个主题,Kafka集群保留一个用于缩放、并行化和容错性的分区(Partition)。每个分区是一个有序、不可变的消息序列,并不断追加到提交日志文件。消费者使用一个消费者组名称来标记自己,主题的每个消息被传递给每个订阅消费者组中的一个消费者。如果所有的消费者实例都属于同样的消费组,它们就以传统队列负载均衡方式工作。如果消费者实例都属于不同的消费组,则消息会被广播给所有消费者。

该对象存储minio集群是一款高性能的开源对象存储服务,设计目的是为了提供云存储服务的性能和可扩展性,同时还保持着本地存储的简单性和易用性。Minio的架构采用了分布式的设计,它可以将数据分散存储在多个节点中,从而实现数据的高可用和容错性。在Minio中,节点被称为Minio Server,每个Minio Server可以存储一个或多个对象存储桶。对象存储桶是一组对象的集合,类似于文件系统中的文件夹,对象可以存储为文件,也可以存储为内存中的数据结构。

在实际应用中,该步骤S102可通过以下步骤实现,具体包括:

步骤2.1),构建文件分发管理Web。

步骤2.2),响应于用户操作,按业务场景设置文件传输通道。

步骤2.3),根据文件传输通道的通道配置信息创建消息队列主题和对象存储桶。

步骤2.4),向文件传输通道的源端节点部署文件发送模块。

步骤2.5),向文件传输通道的目标端节点部署文件接收模块。

在前述实施例的基础上,该步骤S104实现文件发送具体可包括:

步骤3.1),文件发送模块定期扫描每个文件传输通道的本地目录文件;当扫描到的文件在发送成功后,则默认删除原文件;当扫描到的文件发送失败后,则默认将扫描到的文件备份到错误数据目录;

步骤3.2),将文件内容分块上传到指定的目标对象存储桶中,将多个文件元数据进行聚合写入指定的目标消息队列主题中。

此外,支持在多个源节点部署文件发送模块,向指定通道上传文件,示例性地:

步骤4.1),获取文件发送模块的配置信息,配置信息包括源端节点的所有传输通道配置信息;

步骤4.2),初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群;

步骤4.3),创建并启动文件发送器线程;

步骤4.4),创建并启动文件扫描器线程,分配文件传输通道;

步骤4.5),文件扫描器线程定期针对分配的每个文件传输通道,读取目录第一预设数量文件,存储到本地文件元数据缓存中;

步骤4.6),文件发送器线程监视本地文件元数据缓存,逐个获取文件进行校验;若检验通过则将文件内容上传到对象存储桶中,并将文件元数据写入消息队列集群主题中;若检验不通过则将文件写入错误目录用于后续排查;

步骤4.7),当收到进程终止指令时,关闭文件扫描器线程和文件发送器线程,释放当前所有的连接资源。

在一些实施例中,步骤S106中根据元数据情况决定是否执行处理操作,具体可通过以下步骤实现,以保证文件分发效率:

步骤5.1),如果文件元数据大于第一文件体量阈值,即文件内容过大,则可将文件自动分块,根据文件块存储位置从目标对象存储桶中并行下载后再组装成原始文件放到本地目录;

步骤5.2),如果元数据为小于第二文件体量阈值的文件聚合而成,即文件较小,则可将多个小文件聚合成单一文件,根据文件块存储位置从目标对象存储桶中下载后再抽取组装成原始文件放到本地目录。

在实际应用过程中,步骤S106还可通过以下步骤实现,具体包括:

步骤6.1),获取文件接收模块的配置信息,配置信息包括目标端节点的全部传输通道配置信息。

步骤6.2),初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群。

步骤6.3),创建并启动文件下载器线程。

步骤6.4),创建并启动文件元数据接收器线程,分配文件传输通道。

步骤6.5),文件元数据接收器线程针对分配的每个通道,从消息队列集群中读取第二预设数量的文件元数据,存储到本地文件元数据缓存。

步骤6.6),文件下载器线程监视本地文件元数据缓存,读取解析文件元数据,获取文件存储位置,从对象存储桶中下载并组装文件内容,输出文件到本地指定目录。

步骤6.7),当收到进程终止指令时,关闭文件元数据接收器线程和文件下载器线程,释放当前所有连接资源。

在一些实施例中,如图3所示,本发明实施例还提供一种支持多源多目标的分布式文件分发装置,包括:

确定单元,响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶;其中,所述文件传输通道包括一个或多个源端节点和一个或多个接收组,每个所述接收组包括一个或多个目标端节点;

发送单元,基于所述源端节点的文件发送模块获取所述文件传输通道的通道配置信息,定期扫描本地目录文件,将文件内容上传到目标对象存储桶中,将文件元数据写入目标消息队列主题中;

接收单元,基于所述目标端节点的文件接收模块获取所述文件传输通道的通道配置信息,从所述目标消息队列主题中逐个读取所述文件元数据,判断是否执行处理操作,如果需要处理则从指定对象存储桶中下载文件到本地目录。

在一些实施例中,在响应于用户操作,确定业务场景对应的文件传输通道、消息队列主题和对象存储桶的步骤之前,所述装置还用于搭建消息队列kafka集群和对象存储minio集群。

在一些实施例中,确定模块,还具体用于,构建文件分发管理Web;响应于用户操作,按业务场景设置文件传输通道;根据所述文件传输通道的通道配置信息创建消息队列主题和对象存储桶;向所述文件传输通道的源端节点部署文件发送模块;向所述文件传输通道的目标端节点部署文件接收模块。

在一些实施例中,发送模块,还具体用于,文件发送模块定期扫描每个所述文件传输通道的本地目录文件;当扫描到的文件在发送成功后,则删除原文件;当扫描到的文件发送失败后,则将所述扫描到的文件备份到错误数据目录;将文件内容分块上传到目标对象存储桶中,将多个文件元数据进行聚合写入目标消息队列主题中。

在一些实施例中,发送模块,还具体用于,获取文件发送模块的配置信息,所述配置信息包括源端节点的所有传输通道配置信息;初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群;创建并启动文件发送器线程;创建并启动文件扫描器线程,分配文件传输通道;文件扫描器线程定期针对分配的每个文件传输通道,读取目录第一预设数量文件,存储到本地文件元数据缓存中;文件发送器线程监视本地文件元数据缓存,逐个获取文件进行校验;若检验通过则将文件内容上传到对象存储桶中,并将文件元数据写入消息队列集群主题中;若检验不通过则将文件写入错误目录用于后续排查;当收到进程终止指令时,关闭文件扫描器线程和文件发送器线程,释放当前连接资源。

在一些实施例中,接收模块,还具体用于,如果所述文件元数据大于第一文件体量阈值,则根据文件块存储位置从目标对象存储桶中并行下载后再组装成原始文件放到本地目录;如果元数据为小于第二文件体量阈值的文件聚合而成,则根据文件块存储位置从目标对象存储桶中下载后再抽取组装成原始文件放到本地目录。

在一些实施例中,接收模块,还具体用于,获取文件接收模块的配置信息,所述配置信息包括目标端节点的全部传输通道配置信息;初始化本地文件元数据缓存,连接消息队列集群和文件对象存储集群;创建并启动文件下载器线程;创建并启动文件元数据接收器线程,分配文件传输通道;文件元数据接收器线程针对分配的每个通道,从消息队列集群中读取第二预设数量的文件元数据,存储到本地文件元数据缓存;文件下载器线程监视本地文件元数据缓存,读取解析文件元数据,获取文件存储位置,从对象存储桶中下载并组装文件内容,输出文件到本地指定目录;当收到进程终止指令时,关闭文件元数据接收器线程和文件下载器线程,释放当前连接资源。

本发明实施例提供的用于实现一种电子设备,本实施例中,所述电子设备可以是,但不限于,个人电脑(Personal Computer,PC)、笔记本电脑、监控设备、服务器等具备分析及处理能力的计算机设备。

作为一种示范性实施例,可参见图4,电子设备110,包括通信接口111、处理器112、存储器113以及总线114,处理器112、通信接口111和存储器113通过总线114连接;上述存储器113用于存储支持处理器112执行上述方法的计算机程序,上述处理器112被配置为用于执行该存储器113中存储的程序。

本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

非易失性介质可以是非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的非易失性存储介质,或者它们的组合。

可以理解的是,本实施例中的各功能模块的具体操作方法可参照上述方法实施例中相应步骤的详细描述,在此不再重复赘述。

本发明实施例所提供计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序代码被执行时可实现上述任一实施例所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。

技术分类

06120116561650