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

一种分布式系统大文件异步生成和下载方法、系统及设备

文献发布时间:2024-04-18 19:58:26


一种分布式系统大文件异步生成和下载方法、系统及设备

技术领域

本发明涉及文件生成与下载领域,特别是涉及一种分布式系统大文件异步生成和下载方法、系统及设备。

背景技术

分布式系统中通常存在用户需要生成和下载大文件的功能需求,比如在财务公司总账系统中,用户在月末要按整个账套生成账套PDF文件并下载下来打印。由于账套文件大,生成文件持续时间长,在生成文件过程中不仅占用服务器内存、CPU、I/O等资源导致系统其他功能响应非常慢,而且严重时会导致内存溢出系统不可用。

因此,亟需一种方法将大文件的生成和下载从业务系统中剥离出来独立运行,通过物理上的隔离避免对业务系统正常运行产生影响。

发明内容

本发明的目的是提供一种分布式系统大文件异步生成和下载方法、系统及设备,能够避免与业务系统争夺服务器资源,提高业务系统可用性。

为实现上述目的,本发明提供了如下方案:

一种分布式系统大文件异步生成和下载方法,包括:

利用业务系统获取用户的生成文件请求和配置记录;所述配置记录包括:生成的文件名称、文件处理类名和方法名、文件存放路径以及当前用户ID以及存放记录;

根据生成文件请求生成唯一编号;

将唯一编号、请求时间和配置记录保存到关系型数据库的文件生成配置表;并记录当前文件生成状态为未生成;

获取当前文件生成状态为未生成的配置记录;并根据配置记录以及文件处理类名和方法名执行生成逻辑生成文件,并存储;之后根据当前配置记录对应的唯一编号更新文件生成配置表状态;

根据唯一编号下载对应的文件。

可选地,所述利用业务系统获取用户的生成文件请求和配置记录,具体包括:

获取用户的生成文件请求;

将生成文件请求以键值对方式封装成json字符串。

可选地,所述获取当前文件生成状态为未生成的配置记录;并根据配置记录以及文件处理类名和方法名执行生成逻辑生成文件,并存储,具体包括:

每隔设定时间从文件生成配置表中查询文件生成状态的所有记录;

将文件生成状态为未生成的记录按照先进先出原则保存在内存队列中;

监听内存队列,监听到有新的生成记录后,根据生成记录对应的唯一编号查询文件生成配置表;

当存在文件生成状态为未生成的记录后,根据文件处理类名和方法名执行生成逻辑生成文件,保存在配置记录对应的目录下。

可选地,所述根据唯一编号下载对应的文件,具体包括:

根据唯一编号,获取文件生成配置表查询中相应的存放目录和文件名称;

根据文件名称从存放目录中获取文件流形式的文件。

一种分布式系统大文件异步生成和下载系统,包括:

生成文件请求获取模块,用于利用业务系统获取用户的生成文件请求和配置记录;所述配置记录包括:生成的文件名称、文件处理类名和方法名、文件存放路径以及当前用户ID以及存放记录;

文件处理请求接收模块,用于根据生成文件请求生成唯一编号;

文件生成模块,用于将唯一编号、请求时间和配置记录保存到关系型数据库的文件生成配置表;并记录当前文件生成状态为未生成;获取当前文件生成状态为未生成的配置记录;并根据配置记录以及文件处理类名和方法名执行生成逻辑生成文件,并存储;之后根据当前配置记录对应的唯一编号更新文件生成配置表状态;

文件下载模块,用于根据唯一编号下载对应的文件。

一种分布式系统大文件异步生成和下载设备,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如所述的方法。

可选地,所述存储器为计算机可读存储介质。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明所提供的一种分布式系统大文件异步生成和下载方法、系统及设备,利用业务系统获取用户的生成文件请求和配置记录,并根据生成文件请求生成的唯一编号、请求时间和配置记录保存到关系型数据库的文件生成配置表;进而利用文件生成配置表实现文件生成的线程;本发明涉及的文件生成是使用线程池减少线程创建和销毁的资源消耗,两个线程间通过内存队列通信将数据扫描与文件生成逻辑解耦,降低系统复杂度。本发明将大文件生成和下载处理过程与业务系统物理隔离,避免与业务系统争夺服务器资源,提高业务系统可用性。

附图说明

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

图1为本发明所提供的一种分布式系统大文件异步生成和下载方法流程示意图;

图2为文件生成的流程示意图;

图3为本发明所提供的一种分布式系统大文件异步生成和下载系统结构示意图。

具体实施方式

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

本发明的目的是提供一种分布式系统大文件异步生成和下载方法、系统及设备,能够避免与业务系统争夺服务器资源,提高业务系统可用性。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

如图1所示,本发明所提供的一种分布式系统大文件异步生成和下载方法,包括:

S101,利用业务系统获取用户的生成文件请求和配置记录;所述配置记录包括:生成的文件名称、文件处理类名和方法名、文件存放路径以及当前用户ID以及存放记录。

S101具体包括:

获取用户的生成文件请求。生成文件请求包括但不限于:账套机构、月份。

将生成文件请求以键值对方式封装成json字符串。例如,{“orgCode”:1000,“month”:“202101”}。

S102,根据生成文件请求生成唯一编号。

S103,将唯一编号、请求时间和配置记录保存到关系型数据库的文件生成配置表;并记录当前文件生成状态为未生成,可以用status=0表示。

S104,获取当前文件生成状态为未生成的配置记录;并根据配置记录以及文件处理类名和方法名执行生成逻辑生成文件,并存储;之后根据当前配置记录对应的唯一编号更新文件生成配置表状态。

S105具体包括:

每隔设定时间从文件生成配置表中查询文件生成状态的所有记录。

将文件生成状态为未生成的记录按照先进先出原则保存在内存队列中。

监听内存队列,监听到有新的生成记录后,根据生成记录对应的唯一编号查询文件生成配置表。

当存在文件生成状态为未生成的记录后,根据文件处理类名和方法名执行生成逻辑生成文件,保存在配置记录对应的目录下。

S104和S105为文件生成的两个线程的线程池,如图2所示,线程1每隔2分钟从文件生成配置表查询文件生成状态status=0的所有记录,将记录按先进先出原则保存在内存队列中;线程2监听内存队列,监听到有新的处理记录后根据记录的唯一编号查询文件生成配置表,如果查询到文件生成状态status=1则表示文件已生成不处理,如果查询到文件生成状态status=0再根据文件处理类名和方法名执行生成逻辑生成文件,保存在记录指定的目录下,根据当前处理记录唯一编号更新文件生成配置表状态status=1。

S105,根据唯一编号下载对应的文件。

S105具体包括:

根据唯一编号,获取文件生成配置表查询中相应的存放目录和文件名称。

根据文件名称从存放目录中获取文件流形式的文件。

S105还包括:提供文件下载界面嵌入业务系统,该界面接收访问用户ID,从文件生成配置表查询用户ID等于当前用户ID的所有文件生成记录并按请求时间倒序排列展示。

文件下载界面接收用户下载文件请求,向文件下载模块传递下载文件的唯一编号,文件下载模块从文件生成配置表查询存放目录和文件名称,从存放目录获取文件以文件流形式返回给浏览器。

文件下载模块提供统一的文件下载界面,用户可以通过该界面跟踪所有历史文件生成状态,提高了工作效率。

如图3所示,本发明所提供的一种分布式系统大文件异步生成和下载系统,包括:

生成文件请求获取模块,用于利用业务系统获取用户的生成文件请求和配置记录;所述配置记录包括:生成的文件名称、文件处理类名和方法名、文件存放路径以及当前用户ID以及存放记录。

文件处理请求接收模块,用于根据生成文件请求生成唯一编号。

文件生成模块,用于将唯一编号、请求时间和配置记录保存到关系型数据库的文件生成配置表;并记录当前文件生成状态为未生成;获取当前文件生成状态为未生成的配置记录;并根据配置记录以及文件处理类名和方法名执行生成逻辑生成文件,并存储;之后根据当前配置记录对应的唯一编号更新文件生成配置表状态。

文件下载模块,用于根据唯一编号下载对应的文件。

为了执行上述实施例对应的方法,以实现相应的功能和技术效果,本发明还提供的一种分布式系统大文件异步生成和下载设备,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现所述的方法。

所述存储器为计算机可读存储介质。

基于上述描述,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的计算机存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种分布式系统部署方法、系统、电子设备及存储介质
  • 一种下载资源文件的数据块的方法、设备和系统
  • 一种数据存储的方法、数据下载的方法、装置及电子设备
  • 一种分布式系统以及基于该系统的数据处理方法
  • 一种对象存储系统中大文件的上传、下载方法及处理系统
  • 分布式系统中文件安全存储及下载的方法及系统、设备
技术分类

06120116487713