基于文件标志位的文档异步生成与分片存储方法及系统与流程

摘要: 本发明涉及计算机文件存储与生成,尤其涉及一种基于文件标志位的文档异步生成与分片存储方法及系统。背景技术:1、在保险行业的业务实践中,建议书系统需要为每份建议书生...
基于文件标志位的文档异步生成与分片存储方法及系统与流程

本发明涉及计算机文件存储与生成,尤其涉及一种基于文件标志位的文档异步生成与分片存储方法及系统。

背景技术:

1、在保险行业的业务实践中,建议书系统需要为每份建议书生成pdf文档,供客户在线预览或下载。由于pdf生成过程涉及html渲染、表格布局、图片嵌入等操作,单份文档的生成耗时通常在数秒到数十秒之间。当代理人批量生成建议书时,系统面临高并发压力,需要同时解决避免重复生成、支持异步处理以及高效存储大量pdf文件等问题。

2、针对上述需求,现有技术通常采用以下几种处理方式。第一种是同步生成方案,即请求发出后阻塞等待生成完成再返回。这种方式实现简单,但用户等待时间长,对于包含多份利益演示表、保障汇总等复杂内容的建议书,等待时间可达十秒以上,高并发时服务端压力尤为突出。第二种方案使用数据库锁或分布式锁控制并发,避免同一份建议书被重复生成,但引入了redis或zookeeper等外部依赖,增加了系统部署复杂度和运维成本,且存在锁超时、死锁等风险。第三种方案将所有pdf文件存储在单一目录下,通过文件名区分,当文件数量增长到数十万级时,目录遍历、查找、删除等操作效率急剧下降。

3、此外,现有方案在生成状态管理方面也存在明显不足,通常仅有已生成和未生成两种状态。用户在pdf生成过程中请求预览时,系统无法判断当前是正在生成还是生成失败,只能返回错误或重复触发生成,造成资源浪费和用户体验不佳。

4、因此,亟需提供一种技术方案解决上述问题。

技术实现思路

1、为解决上述技术问题,本发明提供了一种基于文件标志位的文档异步生成与分片存储方法及系统。

2、第一方面,本发明提供一种基于文件标志位的文档异步生成与分片存储方法,该方法的技术方案如下:

3、响应于文档创建请求,根据所述文档创建请求携带的文档标识计算哈希值并对分片总数取模以确定目标分片节点目录,在所述目标分片节点目录下创建对应于所述文档标识的文档子目录,检查所述文档子目录中是否存在进行中标志文件或目标文档文件,若存在所述进行中标志文件或所述目标文档文件则跳过所述文档创建请求;

4、若所述进行中标志文件和所述目标文档文件均不存在,则通过文件系统的原子创建操作在所述文档子目录中创建所述进行中标志文件,若所述原子创建操作返回失败则跳过所述文档创建请求,若所述原子创建操作返回成功,则根据所述文档创建请求中的异步标志确定文档生成任务在同步模式或异步模式下执行,若为所述异步模式则将所述文档生成任务提交至线程池,若为所述同步模式则执行所述文档生成任务;

5、若所述文档生成任务已提交至所述线程池或已在同步模式下开始执行,则执行所述文档生成任务,将生成的文档内容写入所述文档子目录下的所述目标文档文件,并在所述文档生成任务执行完毕后删除所述进行中标志文件;

6、响应于文档获取请求,根据所述文档获取请求携带的所述文档标识确定所述文档子目录,检查所述文档子目录中的所述进行中标志文件是否存在,若存在所述进行中标志文件则进入轮询等待,在所述轮询等待中重复检查所述进行中标志文件,直至所述进行中标志文件消失或等待时长达到预设超时阈值;

7、当所述进行中标志文件消失时,检查所述文档子目录中的所述目标文档文件是否存在,若存在所述目标文档文件则返回所述目标文档文件的路径。

8、本发明的一种基于文件标志位的文档异步生成与分片存储方法的有益效果如下:

9、本发明的方法通过文档标识哈希取模运算将海量文档均衡分散至多个分片节点目录,并在对应文档子目录内利用文件系统原子创建操作建立进行中标志文件以管控并发访问,同时依据异步标志灵活支持同步与异步两种文档生成模式,解决了大规模文档集中存储引发的目录遍历与操作性能衰减、高并发场景下重复生成造成的计算资源浪费以及传统分布式锁方案引入外部中间件带来的部署复杂度与运维负担问题,实现了基于文件系统原生能力的无外部锁并发控制与文档生成全流程状态的可感知管理,提升了批量文档生成场景下的存储横向扩展性与任务处理吞吐量,降低了用户端等待时长与服务端并发处理压力,并通过对进行中标志文件的轮询检测避免了生成过程中的重复请求触发与无效资源消耗。

10、在上述方案的基础上,本发明的一种基于文件标志位的文档异步生成与分片存储方法还可以做如下改进。

11、在一种可选的方式中,根据所述文档创建请求中的异步标志确定文档生成任务在同步模式或异步模式下执行的步骤,包括:

12、若为所述异步模式,则将所述文档生成任务提交至所述线程池,由所述线程池异步执行所述文档生成任务;

13、若为所述同步模式,则在当前线程中同步执行所述文档生成任务;

14、当所述文档生成任务执行完毕后,在finally代码块中删除所述进行中标志文件。

15、采用上述可选方式的有益效果为:进一步支持同步与异步两种文档生成模式,异步模式下将任务提交至线程池执行,同步模式下在当前线程直接执行,并在finally代码块中删除进行中标志文件,确保标志文件在任何情况下均能被清理,避免残留文件阻塞后续请求。

16、在一种可选的方式中,执行所述文档生成任务的步骤,包括:

17、将生成的文档内容写入所述文档子目录下的所述目标文档文件,并在写入完成后删除所述进行中标志文件;

18、当所述进行中标志文件被删除后,在所述文档子目录中仅保留所述目标文档文件,并将文档生成状态由进行中切换为已完成。

19、采用上述可选方式的有益效果为:进一步在文档内容写入目标文档文件后删除进行中标志文件,使文档子目录内仅保留目标文档文件,通过标志文件与目标文档文件的有序更替,明确区分文档生成的中间状态与完成状态,便于外部请求准确识别当前生成进度。

20、在一种可选的方式中,进入轮询等待的步骤,包括:

21、在每个轮询周期检查所述文档子目录中的所述进行中标志文件是否存在,若检查到所述进行中标志文件不存在,则终止所述轮询等待;

22、若检查到所述进行中标志文件仍然存在,则继续等待下一个轮询周期。

23、采用上述可选方式的有益效果为:进一步通过周期性轮询检测进行中标志文件的存在状态,在文档生成过程中为获取请求提供可控的等待机制,避免频繁发起新请求对服务端造成额外压力,同时能够在生成完成后及时终止等待并返回结果。

24、在一种可选的方式中,在终止所述轮询等待的步骤之后,还包括:

25、检查所述文档子目录中的所述目标文档文件是否存在,若所述目标文档文件存在,则确定文档已完成生成并返回所述目标文档文件的路径;

26、若所述目标文档文件不存在,则确定文档生成失败并抛出生成错误异常。

27、采用上述可选方式的有益效果为:进一步在轮询结束后通过检查目标文档文件是否存在,准确区分文档生成成功与失败两种结果,对于生成失败的场景及时抛出异常,避免向调用方返回不存在或错误的文件路径,提升错误处理的准确性。

28、在一种可选的方式中,所述目标分片节点目录为第一层存储目录,所述文档子目录为第二层存储目录,所述目标文档文件和所述进行中标志文件均存储在所述文档子目录中;所述第一层存储目录通过所述哈希值对所述分片总数取模确定,所述第二层存储目录通过所述文档标识确定。

29、采用上述可选方式的有益效果为:进一步通过哈希取模运算与文档标识构建两层目录结构,将海量文档均衡分散至多个分片节点目录下,避免单一目录存储过多文件导致的遍历与查找性能下降,提升存储层面对高并发读写操作的承载能力。

30、在一种可选的方式中,通过文件系统的原子创建操作在所述文档子目录中创建所述进行中标志文件的步骤,包括:

31、调用文件系统的原子创建接口在所述文档子目录中创建所述进行中标志文件,获取所述原子创建接口返回的创建结果;

32、若所述创建结果为失败,则判定所述进行中标志文件已被其他线程创建,当前线程放弃执行所述文档生成任务并跳过所述文档创建请求。

33、采用上述可选方式的有益效果为:进一步利用文件系统原子创建接口实现无锁化的并发控制,在多线程同时请求同一份文档时,仅允许一个线程进入生成流程,其余线程自动放弃执行,避免重复生成同一份文档造成的计算资源浪费。

34、第二方面,本发明提供一种基于文件标志位的文档异步生成与分片存储系统,该系统的技术方案如下:

35、请求模块,用于响应于文档创建请求,根据所述文档创建请求携带的文档标识计算哈希值并对分片总数取模以确定目标分片节点目录,在所述目标分片节点目录下创建对应于所述文档标识的文档子目录,检查所述文档子目录中是否存在进行中标志文件或目标文档文件,若存在所述进行中标志文件或所述目标文档文件则跳过所述文档创建请求;

36、处理模块,用于若所述进行中标志文件和所述目标文档文件均不存在,则通过文件系统的原子创建操作在所述文档子目录中创建所述进行中标志文件,若所述原子创建操作返回失败则跳过所述文档创建请求,若所述原子创建操作返回成功,则根据所述文档创建请求中的异步标志确定文档生成任务在同步模式或异步模式下执行,若为所述异步模式则将所述文档生成任务提交至线程池,若为所述同步模式则执行所述文档生成任务;

37、执行模块,用于若所述文档生成任务已提交至所述线程池或已在同步模式下开始执行,则执行所述文档生成任务,将生成的文档内容写入所述文档子目录下的所述目标文档文件,并在所述文档生成任务执行完毕后删除所述进行中标志文件;

38、响应模块,用于响应于文档获取请求,根据所述文档获取请求携带的所述文档标识确定所述文档子目录,检查所述文档子目录中的所述进行中标志文件是否存在,若存在所述进行中标志文件则进入轮询等待,在所述轮询等待中重复检查所述进行中标志文件,直至所述进行中标志文件消失或等待时长达到预设超时阈值;

39、检查模块,用于当所述进行中标志文件消失时,检查所述文档子目录中的所述目标文档文件是否存在,若存在所述目标文档文件则返回所述目标文档文件的路径。

40、本发明的一种基于文件标志位的文档异步生成与分片存储系统的有益效果如下:

41、本发明的系统通过文档标识哈希取模运算将海量文档均衡分散至多个分片节点目录,并在对应文档子目录内利用文件系统原子创建操作建立进行中标志文件以管控并发访问,同时依据异步标志灵活支持同步与异步两种文档生成模式,解决了大规模文档集中存储引发的目录遍历与操作性能衰减、高并发场景下重复生成造成的计算资源浪费以及传统分布式锁方案引入外部中间件带来的部署复杂度与运维负担问题,实现了基于文件系统原生能力的无外部锁并发控制与文档生成全流程状态的可感知管理,提升了批量文档生成场景下的存储横向扩展性与任务处理吞吐量,降低了用户端等待时长与服务端并发处理压力,并通过对进行中标志文件的轮询检测避免了生成过程中的重复请求触发与无效资源消耗。

42、第三方面,本发明的一种电子设备的技术方案如下:

43、包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的程序,所述处理器执行所述程序时实现如本发明的基于文件标志位的文档异步生成与分片存储方法的步骤。

44、第四方面,本发明提供的一种计算机可读存储介质的技术方案如下:

45、计算机可读存储介质中存储有指令,当计算机可读存储介质读取所述指令时,使所述计算机可读存储介质执行如本发明的基于文件标志位的文档异步生成与分片存储方法的步骤。

46、上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。