一种基于微服务的文件上传和下载的方法和系统与流程
- 国知局
- 2024-08-22 14:31:33
本发明涉及通信,采用云原生技术的一种基于多实例微服务架构下的文件上传和下载的方法和系统。
背景技术:
1、传统的技术实现,文件下载依赖于文件上传完成的进度,在出现文件读多请求时,会出现多个进程同时读取单个文件的现象, 构成重复操作的现象。然而,单文件的访问速度主要依赖于硬盘的读写速度和每个读取服务的处理能力。在微服务架构中,由于缺乏协同共享的文件读取与下载处理机制,很容易形成访问瓶颈。这不仅延长了上传与下载之间的等待时间,而且,当多个微服务节点以多线程方式访问同一文件时,高并发场景下会出现对文件的重复读取,这无疑加重了系统的处理负担,进而影响了文件下载的效率。
2、在现有的多实例微服务架构下,一旦遇到单个文件的并发访问,存储单点很容易成为效率瓶颈。这种情况不仅增加了等待时间,还消耗了大量的计算资源,从而造成时效性的严重浪费。因此,急需一种新的解决方案来优化这一流程,提高文件访问与下载的效率。
技术实现思路
1、本技术公开一种基于微服务的文件上传下载的方法和系统,涉及云原生技术领域, 其依托微服务的分布式存储计算能力, 使用文件实时流和共享内存, 过通过分层调度方式实现多重微服务系统上传和下载。其基本过程是:
2、1、上传微服务提供文件上传接口, 接收用户文件上传请求;
3、2、上传微服务按照http1.1协议对接文件流,以分块方式接受并且保存至临时文件,同时注册并发布文件订阅句柄,支持下载微服务通过文件句柄和共享内存方式访问文件流;
4、3、文件下载微服务通过文件下载句柄向注册中心获取注册及共享内存节点信息,下载句柄通过采用文件流订阅方式获取, 共享内存采用远程请求方式访问;
5、4、文件下载微服务通过文件下载句柄向注册中心获取注册及共享内存节点信息、下载句柄通过采用文件流订阅方式获取, 共享内存采用远程请求方式访问,文件下载微服务将订阅字节流和共享内存文件块按请求位置和大小进行组合,形成完整的本地文件顺序块,按顺序向请求端返回转换后的http1.1协议报文详细下载。
6、5、在多客户端请求时,下载微服务采用分层调度进行文件流和共享内存的协同,进行文件数据请求与合成,在客户端完成下载后,对应的文件下载微服务进行清理和释放。该文件上传下载方法,依托微服务负载能力承建多节点下载服务能力,集成了弹性扩展能力,使用多节点共享内存模型动态分担下载通道,实现了高性能的文件的上传和下载。
7、为了实现文件上传下载的操作同步, 解决并发下载重复读取,减少文件下载等待时间, 提高文件微服务的处理能力,本技术采用http1.1协议、使用nio技术, 构建基于微服务体系的文件及共享内存分层调度方法、集成微服务弹性体系以分片方式实现文件上传下载,缩短文件上传等待时间, 构建了协同下载能力,降低文件微服务单节点负担, 提升文件下载的时效性。
8、根据第一方面,本技术实施例提供一种基于微服务的文件上传下载的方法,所属方法主要包括:
9、步骤1文件上传:上传微服务收到客户端上传请求后,一方面按照http1.1标准分片接收文件,以分块形式缓冲在内存和临时文件中。将下载文件句柄和本节点构建的共享内存句柄注册到注册中心,依此为外部提供基于nio的实时文件流订阅和访问接口。
10、步骤2文件下载:下载服务收到客户下载文件请求后,通过注册中心获取订阅服务及共享内存,其中,文件下载微服务通过文件下载句柄向注册中心获取注册及共享内存节点信息、下载句柄通过采用文件流订阅方式获取;而共享内存采用远程请求方式访问、文件下载微服务将订阅字节流和共享内存文件块按请求位置和大小进行组合,形成完整的本地文件顺序块、按顺序向请求端返回转换后的http1.1协议报文详细实施例。整体按照调度命令构建自身的共享内存,订阅服务的文件流读取流并定位最新的文件流后,定位缺位文件块,向共享内存微服务读取相关文件块并整合,向客户端按照http1.1协议流的方式下发,实现文件下载。
11、进一步地:如果当前文件下载句柄已经过期,则通过注册中心定位可访问文件微服务节点,然后向其下发命令让其注册并发布文件读取句柄。下载文件服务等待文件访问服务注册后,建立文件订阅通道,同时自建共享内存并注册,形成文件读取共享机制。
12、步骤3共享内存及文件流的构建与调度:对于上传文件,上传微服务在对接http1.1的请求的同时,注册文件句柄到注册中心,并发布服务,有下载服务订阅时,向订阅者写入文件流,实现上传文件流向下载微服务的分发。在第一个下载微服务订阅文件实时流后,上传微服务根据实时订阅流的位置将前序文件块整体传送给下载服务,然后对接实时流向下载微服务推送实时流。后续下载微服务以动态调用的方式,按照可访问下载节点数量、并发请求量、下载文件的大小及当前订阅发送的文件位置,在每个下载微服务节点构建动态文件块,根据下载微服务的调用情况,将前序的文件块以共享文件分块的形式在下载微服务上构建共享内存,并且将共享内存注册在注册中心,支持后续下载微服务按照共享内存进行定位和按序进行读取,以共享内存结合文件流的方式实现下载文件的负载与共享。
13、进一步地,单个文件的共享内存分片和分布按照文件大小、客户端访问数量、下载微服务数量等参数进行规划,并且按下载微服务的先后顺序和大小在下载微服务构建共享内存,同时将共享内存注册至注册中心,以便下载微服务之间按照下述“动态调度”的实施例方法进行定位和访问。
14、步骤4资源释放:在每个下载微服务完成文件读取后,将访问文件和共享内存的句柄断开后以通知方式告知共享注册中心,注册中心使用分层模型计算文件句柄和共享内存的预期使用率,通过调用确认没有访问下载微服务后,按照推介释放文件句柄将共享内存与文件句柄进行释放,并负责更新订阅关系和共享内存调用关系,完成文件句柄和共享内存进行释放。
15、第二方面,本发明还提供了一种基于微服务的文件上传下载的系统,包括:
16、1、上传模块:采用微服务架构,对接http1.1的协议,一方面支持按照标准协议进行文件上传行为,另一方面将上传流转换为文件下载的订阅流,以nio方式注册按订阅流和共享文件块向申请者提供服务。区别于传统的文件上传方法,本模块前端适配传统方法,在文件处理环节对接http1.1的协议,从上传流镜像处理出分发流,并且将文件流和临时文件分块访问集成在共享网络上,支持下载微服务通过网络可以快速进行实时流和分块文件的读取,取缔多个服务节点对同一个文件的直接访问。
17、2、下载模块:采用微服务架构,在客户端提供http协议的文件请求,并对接http1.1的协议,通过远程共享实现文件流的下发。区别于一般的文件下载,下载模块不直接访问文件路径,而是通过共享文件句柄和共享内存的处理实现文件内容获取,并且在获取文件流后,支持自建共享内存方式为后续下载微服务提供服务。具体方法是,下载微服务收到文件下载请求后,通过注册中心获取订阅和共享内存路径,订阅实时流,通过共享内存访问前序文件块,并且将文件块整合成顺序的文件流,然后将文件流按http1.1的协议输出到客户端。
18、3、注册调度模块: 在注册中心,使用文件特性和下载微服务处理能力等参数构建模型和分层调度算法,将文件上传流按订阅要求下发到各个下载微服务节点,按需在下载微服务节点构建共享内存,以自主协同的方式,实现文件块的传递访问,在不访问原始文件的情况下读取文件内容。在共享内存和文件流注册后,注册中心获取相关信息,按照调度模型需要向下载微服务下达构建共享内存的命令,并注册后支持下载微服务之间的互相访问。当有新的下载节点需要读取数据时,注册中心会根据当前共享内存的负载情况,动态地分配资源,确保每个节点都能快速、高效地获取所需信息。对于实时流,当有新的下载微服务请求时,注册中心采用动态调度方式实现共享内存的扩展和回收。
19、4、共享管理模块:共享管理模块围绕实时流和共享内存在上传和下载微服务节点进行操作,其接收注册中心动态调度调度命令,在对应微服务节点进行控制,实时流单节点管理,已发布订阅方式管理,共享内存按需在下载微服务节点动态创建、注册、共享和释放。
20、本技术方案使用微服务架构,将文件上传和下载整合在多个微服务节点,一方面形成上传过程中支持文件下载的能力,另一方面,在多个微服务下载加点构建共享内存,以动态调度和共享传递的方式实现一次读取多节点访问的下载能力,形成协同下载能力,有力的减少了下载等待时间,有效提高了用户操作的时效性。
21、有益效果
22、现有技术处理一方面没有解决文件上传下载的等待时间,需要上传完毕开始执行下载的操作,受限于存储介质的读写效率;另一方面,微服务对文件读取没有协同读取能力,受限于文件读取瓶颈,容易造成并发访问的拥挤问题。
23、和现有技术相比,主要创造性在于:
24、1、在上传下载的操作过程中, 实现了文件的上传下载的同步操作,没有明显的等待时间。2、在使用共享内存及发布订阅模式的基础上,采用分层调度方法,在协同共享文件句柄的同时,协同不同下载节点的共享内存的使用,以协同共享方式提升了下载的效率。
本文地址:https://www.jishuxx.com/zhuanli/20240822/278995.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表