CN113485978B - 一种提升文件存储nas读写吞吐能力的方法、***及存储器 - Google Patents
一种提升文件存储nas读写吞吐能力的方法、***及存储器 Download PDFInfo
- Publication number
- CN113485978B CN113485978B CN202110701856.1A CN202110701856A CN113485978B CN 113485978 B CN113485978 B CN 113485978B CN 202110701856 A CN202110701856 A CN 202110701856A CN 113485978 B CN113485978 B CN 113485978B
- Authority
- CN
- China
- Prior art keywords
- file
- nas
- identification
- information
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种提升文件存储NAS读写吞吐能力的方法、***及存储器。所述方法包括:获取用户的上传请求,通过***标识生成待写入NAS的路径和唯一的文件标识ID;读取文件流;判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;在分布式缓存中设置待处理列队,放入文件标识ID;将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中,最后将响应返回给用户。解决了在高并发场景下,文件存储NAS读写时延增加和偶发性写入失败的问题,大幅提升了文件存储NAS的读写吞吐能力。
Description
技术领域
本发明涉及分布式网络存储技术领域,尤其是涉及一种提升文件存储NAS的读写吞吐能力的方法、***及存储器。
背景技术
NAS(Network Attached Storage)是一种分布式网络存储技术。它以数据为中心,将存储设备与服务器分离,集中管理数据,大大降低成本。
NAS由存储器件、操作***以及文件***组成。NAS通过网络直连磁盘存储阵列,将存储设备通过标准的网络拓扑结构以及自身专用用于数据存储的操作***暴露出去从而提供服务。本身采用专业化的操作***用于网络文件的访问,支持NFS、CIFS、FTP、HTTP等多种协议,既能满足标准的文件访问,也能满足其他特定的网络协议。
NAS本身吞吐能力弱。在高并发场景下,NAS有明显的读写时延的增加,甚至出现偶发性写入失败的现象,无法胜任文件的大并发读写能力。
经检索发现,公开号为CN112702404A的中国发明于2021年4月23日公开了一种多控制器NAS高可用的方法和设备,该方法包括:在每个控制器中划分出预设大小的***资源,并使用划分出的***资源组成集群文件***;将集群文件***映射到客户端;响应于接收到客户端发送的数据,集群文件***将数据进行切割并在切割后的数据中添加奇偶验证码;将添加奇偶验证码后的数据分别下刷到相应的控制器中。通过使用该发明的方案,能够提高NAS存储的整体IO吞吐能力,具有高可用性,控制器出现故障也无需停止前端正常业务,保障业务不中断,数据不丢失。该发明通过划分***资源组成集群文件***,在接收客户端数据方面进行了改进,但只是在控制器中对***资源进行预设,在高并发的状态下,由于NAS本身的吞吐能力弱,仍会出现明显的读写时延,在这种情况下,***的可靠性也会降低。
公开号为CN108259603B的中国发明于2021年5月7日公开了一种负载均衡方法及装置,其中,该方法包括:根据网络附属存储NAS组中各个NAS服务器当前的CPU利用率和网络吞吐量,确定每个NAS服务器在所属NAS组中的综合负载权重;所述综合负载权重用于衡量所述NAS组中的各个NAS服务器当前的服务能力;根据所述每个NAS服务器在所属NAS组中的综合负载权重,为访问所述NAS组的客户端选择NAS服务器;将选择的所述NAS服务器的IP地址发送给所述客户端,以便所述客户端向选择的所述NAS服务器发起访问请求,提高了分布式文件***对客户端请求的处理效率。但是没有考虑每个NAS服务器在数据信息写入过程中的性能特点。由于每个NAS本身的吞吐能力较弱,在高并发的场景下,即时采用综合负载权重选择相对应的NAS服务器,仍然会因为NAS本身的吞吐能力限制NAS组的传输效率,从而存在明显的读写时延的增加,甚至出现偶发性写入失败的现象,无法胜任文件的大并发读写能力。
因此,在现有技术中,网络存储在高并发的场景下仍然存在读写速度较慢的问题,同时也存在偶发性读写失败的问题,需要对文件存储NAS的读写吞吐能力进行提升,提高用户的使用体验度,同时保证数据的可靠性和安全性。
发明内容
为克服上述现有技术的不足,本发明提供一种提升文件存储NAS读写吞吐能力的方法、***及存储器,解决了在高并发场景下,文件存储NAS读写时延增加,甚至出现偶发性写入失败的问题,大幅提升了文件存储NAS的读写吞吐能力。
为了实现上述目的,一方面,本申请提供一种提升文件存储NAS读写吞吐能力的方法,所述方法包括:
获取用户的上传请求,请求内容包括***标识和文件信息;
通过***标识生成待写入NAS的路径和唯一的文件标识ID;
读取文件流;
判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;
以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;
在分布式缓存中设置待处理列队,放入文件标识ID;
将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;
将响应返回给用户。
上述技术方案中,首先获取用户通过浏览器或手机APP发送的上传请求,请求内容包括***标识和文件信息;通过用户请求中的***生成待写入NAS的路径和唯一的文件标识ID,方便对用户的请求进行统一管理,提高处理效率;同时,对用户请求上传的每个文件使用唯一的文件标识ID贯穿整个流程,既保证了用户文件信息的安全性,也达到了不同的用户请求之间互不影响的目的,实现了租户隔离。通过流的形式对用户上传请求中的文件信息进行读取,提高了文件读取的效率。对文件信息的大小进行判断,如果文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中,实现了对文件的异步处理。如果按照现有技术的处理模式,将用户请求上传的所有文件信息全部采用同步处理的方式写入,即:将用户请求上传的所有文件信息直接写入NAS,会存在由于NAS本身的吞吐量弱,无法对文件信息进行快速写入的问题,导致用户等待时间长、用户体验不好。通过将文件信息大小在设定范围内的文件写入分布式缓存中,进一步加快了用户文件信息的写入速度。通过以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间,可以对分布式缓存的运行状态进行动态调控,防止出现主键内容过多,将分布式缓存撑满的问题,影响整体的处理效率。通过在分布式缓存中设置待处理列队,放入文件标识ID;可以对分布式缓存中用户上传请求的各个文件的状态进行掌控,查看哪些文件是待处理的状态,对工作状态有比较直观的了解;在突然遇到紧急情况的时候,也能从待处理列队中获取待处理文件的信息,提高了整体运行的可靠性。采取分布式缓存和消息中间件相结合的处理模式,将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;实现了对用户上传的文件的双层保护;将以前同步写入的动作,全部变成异步;通过将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式,将复杂的数据结构转换成统一格式的字符串,提升后续的处理效率。利用分布式缓存和消息中间件高并发的能力,大幅提高了存储NAS的吞吐能力,提供业务上高吞吐的效果,大大提升了处理效率。最后,将响应返回给用户,完成对用户上传请求的交互响应。整套处理流程通过把用户请求上传的文件以及其对应的元数据信息写入过程异步化,来提升整体写入性能,结合利用分布式缓存和消息中间件,实现了高并发、低延迟、高可靠的目的。
进一步的,用户的上传请求中,***标识包括文件的名称、文件的类型、文件开始上传的起始时间(年、月、日、时、分、秒、毫米)。
进一步的,生成文件标识ID和待写入NAS的路径时,先对用户上传请求中的***标识进行筛选和删减,根据筛选和删减后的用户上传请求***标识生成唯一的文件标识ID和待写入NAS的路径。由于用户请求上传的***标识中,存在较多的冗余信息,并不是所有的信息都需要被用到,因此,首先要对***标识进行筛选和删减,保留所需的信息,按照设定的规则对每个文件生成唯一的文件标识ID,所述文件标识ID贯穿在整个流程中,达到用户请求之间互不影响、租户隔离的效果。待写入NAS的路径也是根据***标识生成的,预先在NAS中对***资源进行划分,对不同类型的文件进行存放,根据***标识中的文件类型信息将文件放入对应的NAS路径,实现了对NAS存储空间的有效利用,同时也为文件存储的管理提供了便利。
进一步的,读取文件流后,若文件信息的大小超过了设定的范围,则直接将文件流写入NAS,并将元数据信息写入数据库。由于分布式缓存的容量有限制,为防止主键内容过多将分布式缓存撑满,对于文件信息大小超过设定范围的文件,采取直接写入NAS的策略,并将元数据信息写入数据库。
进一步的,以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间,若过期时间设置失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
进一步的,若在分布式缓存中设置待处理列队,放入文件标识ID时出现失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
优选的,启动额外的异步程序读取消息中间件中的消息并将读取的消息反序列化,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID。通过额外的异步程序,实时读取消息中间件中的消息,当消息中间件中的消息发生变化时,查看消息的内容,获取序列化格式后的文件标识ID、待写入NAS的路径和具体的文件流,将所述文件的内容写入NAS,将所述元数据写入数据库,通过异步的方式,将文件写入了NAS中,而用户端并没有延时的感知,提升了用户的体验感。将元数据写入数据库,完成了元数据与文件内容的对应,进一步优化了用户的使用体验。文件和元数据写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID,释放分布式缓存中待处理列队的空间,实现分布式缓存的动态调控,充分利用了分布式缓存的空间,提高了处理效率。
优选的,所述异步程序若写入消息失败,则返回告警信息给维护人员,并分析失败原因。异步读取消息中间件时,可能出现序列化失败、消息数据本身无法处理、数据库连接不可用、网络不可达等问题,从而导致异步程序读取消息中间件的消息不成功。通过返回告警信息给维护人员并分析原因,可以在第一时间让管理者知晓异步程序的运行状态,并针对读取失败的原因进行分析,达到对问题快速定位的目的,最终实现快速解决问题的目的,提高了整体的可靠性和稳定性。同时,因为数据已经存储在分布式缓存和消息中间件中,在数据失效前,管理员不用担心数据的丢失,保证了数据的可靠性。
优选的,所述异步程序读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID后,判断分布式缓存中待处理队列集合的大小,若集合队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。当异步程序已经完成对消息中间件中的消息进行读取,并将用户上传的文件内容写入NAS、将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID,释放了所述文件在分布式缓存待处理队列中的空间,通过对分布式缓存中待处理队列集合大小的判断,实现对分布式缓存中待处理列队集合大小的动态控制。
优选的,获取用户下载请求,从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间大于设定值,缓存中数据已消失,则直接从NAS中读取返回。用户下载的过程中,优先从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,若读取文件数据返回时间在设定范围内,则可以直接从缓存中读取返回,保证了相应速度,提高了用户体验感;如果由于间隔时间过长,大于间隔值,缓存中的数据已消失,则直接从NAS中读取返回。在不同的状态下能够实现同步和异步的自动切换,处理用户的下载请求,而切换的过程用户没有任何感知,保证了用户的体验感。
优选的,所述文件流写入分布式缓存中的方式为分段迭代写入。文件以流的形式分段迭代写入分布式缓存中,充分利用了计算机运算速度快、适合做重复性操作的特点,既保证了写入的速度,又降低了***资源的使用率,在高并发的场景下,能够保证数据的处理效率,提供业务上高吞吐的效果。
优选的,所述文件标识ID是***标识通过加密算法生成的。通过如SHA256的加密算法对***标识进行运算,生成文件标识ID,在确保数据安全性的同时,方便对用户请求进行统一管理。
优选的,消息中间件的策略设置为主备消息所在的节点都完成应答,保证了消息中间件中至少双副本成功,进一步提高了在高并发状态下的处理可靠性;避免偶发性写入失败现象的出现,提升了文件的大并发读写能力。
另一方面,本申请提供了一种提升文件存储NAS读写吞吐能力的***,包括:
用户请求获取模块,用于获取用户的上传请求,请求内容包括***标识和文件信息;
路径设置模块,通过***标识生成待写入NAS的路径;
参数设置模块,通过***标识生成唯一的文件标识ID;
读取模块,用于读取文件流;
分布式缓存模块,用于缓存文件信息;
文件大小判断模块,用于判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;若文件信息的大小超过设定的范围,则直接将文件流写入NAS,将文件元数据信息写入数据库;
时间设定模块,用于以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;
待处理队列设置模块,用于在分布式缓存中设置待处理列队,放入文件标识ID;
消息中间件模块,用于存储文件信息;
文件写入模块,用于将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;
用户响应模块,用于将处理结果信息返回给用户;
异步读取模块,用于读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID;
下载模块,用于获取用户下载请求,直接从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间过长,缓存中数据已消失,则直接从NAS中读取返回。
进一步的,读取模块在读取文件流后,判断文件信息的大小,若文件信息的大小超过了设定的范围,则直接将文件流写入NAS,并将元数据信息写入数据库。由于分布式缓存的容量有限制,为防止主键内容过多将分布式缓存撑满,对于文件信息大小超过设定范围的文件,采取直接写入NAS的策略,并将元数据信息写入数据库。
进一步的,时间设定模块以文件标识ID为主键,设置过期时间,若过期时间设置失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
进一步的,待处理队列设置模块若在放入文件标识ID时出现失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
进一步的,异步读取模块若写入消息失败,则返回告警信息给维护人员,并分析失败原因。异步读取消息中间件时,可能出现序列化失败、消息数据本身无法处理、数据库连接不可用、网络不可达等问题,从而导致异步程序读取消息中间件的消息不成功。通过返回告警信息给维护人员并分析原因,可以在第一时间让管理者知晓异步程序的运行状态,并针对读取失败的原因进行分析,达到对问题快速定位的目的,最终实现快速解决问题的目的,提高了整体的可靠性和稳定性。
进一步的,异步模块读取消息中间件中的消息并将读取的消息反序列化,将文件的内容写入NAS,将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID后,判断分布式缓存中待处理队列集合的大小,若集合队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。当异步程序已经完成对消息中间件中的消息进行读取,并将用户上传的文件内容写入NAS、将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID,释放了所述文件在分布式缓存待处理队列中的空间,通过对分布式缓存中待处理队列集合大小的判断,实现对分布式缓存中待处理列队集合大小的动态控制。
再一方面,本申请提供了一种提升文件存储NAS读写吞吐能力的存储器,所述存储器存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行时实现如上所述方法的步骤。所述存储器具体为一种可读存储器。所述可读存储器存储有操作***、计算机指令和数据库,当所述计算机指令在计算机上运行时,该机器可执行指令促使处理器实现上述任务派发方法。所述数据库用于存储主用***和备用***的***数据以及业务数据。
与现有技术相比,本发明的有益效果在于:
(1)通过把用户请求上传的文件以及其对应的元数据信息写入过程异步化,来提升整体写入性能,结合利用分布式缓存和消息中间件,达到了高并发、低延迟、高可靠的目的。
(2)通过对用户请求中的***标识进行信息筛取,生成一个唯一的文件标识ID贯穿整个流程,方便对用户的请求进行统一管理,提高了处理效率,既保证了用户文件信息的安全性,又达到了用户请求之间互不影响,租户隔离的效果。
(3)通过流的形式对用户上传请求中的文件信息进行读取,提高了文件读取的效率,将文件信息大小在设定范围内的文件写入分布式缓存中,进一步加快了用户文件信息的写入速度,提升了用户的体验感。
(4)利用分布式缓存和消息中间件高并发的能力,提供业务上高吞吐的效果,大大提升了处理效率。大幅提升了文件存储NAS的读写吞吐能力。
(5)采用分布式缓存和消息中间件的处理方式,对用户上传的所有文件信息实现了异步处理,将以前同步写入的动作,全部变成异步,实现了文件信息的快速写入;避免出现在同步处理方式下,由于NAS本身的吞吐量的限制,无法对文件信息进行快速写入,导致的用户等待时间长、用户体验不好的问题。
(6)通过分布式缓存中待处理队列来监控和设置告警,可以对分布式缓存中用户上传请求的各个文件的状态进行掌控;若待处理队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。当异步程序已经完成对消息中间件中的消息进行读取,并将用户上传的文件内容写入NAS、将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID,释放了所述文件在分布式缓存待处理队列中的空间,通过对分布式缓存中待处理队列集合大小的判断,实现对分布式缓存中待处理列队集合大小的动态控制,保证异步模式达到同步效果。
(7)通过分布式缓存和消息中间件相结合的模式,实现了对数据的双层保护,给异步模式加了双保险。一旦中途任一组件处理出错,***会立刻自动切换到NAS直接写入的传统模式并处理完毕,而用户没有任何感知。
(8)消息中间件的策略设置为主备消息所在的节点都完成应答,保证了消息中间件中至少双副本成功,进一步提高了可靠性。
附图说明
图1是根据本发明实施例的提升文件存储NAS读写吞吐能力的方法的流程示意图;
图2是根据本发明实施例异步程序读取的实现方法的流程示意图;
图3是根据本发明实施例用户下载的实现方法的流程示意图;
图4是根据本发明实施例的提升文件存储NAS读写吞吐能力的***结构框图。
具体实施方式
以下将结合附图对本发明各实施例的技术方案进行清楚、完整的描述,显然,所描述发实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
实施例一
图1是根据本发明实施例上传写入的实现方法的流程示意图;如图1所示,本实施例上传写入的方法包括步骤S101-S112。
在步骤S101中,获取用户通过浏览器或者手机APP发送的上传请求,请求内容包括***标识和文件信息。
具体地,***标识包括文件的名称、文件的类型、文件开始上传的起始时间(年、月、日、时、分、秒、毫米)。
在步骤S102中,通过用户请求中的***生成待写入NAS的路径和唯一的文件标识ID。
具体地,先对用户上传请求中的***标识进行筛选和删减,根据筛选和删减后的用户上传请求***标识生成唯一的文件标识ID和待写入NAS的路径。由于用户请求上传的***标识中,存在较多的冗余信息,并不是所有的信息都需要被用到,因此,首先要对***标识进行筛选和删减,保留所需的信息。
具体地,对用户请求中的***标识进行信息筛取后,使用如SHA256的加密算法对***标识进行运算,生成文件标识ID,在确保数据安全性的同时,方便对用户请求进行统一管理,文件标识ID贯穿在整个流程中,达到用户请求之间互不影响、租户隔离的效果。
具体地,待写入NAS的路径是根据***标识生成的,预先在NAS中对***资源进行划分,对不同类型的文件进行存放,根据***标识中的文件类型信息将文件放入对应的NAS路径,实现了对NAS存储空间的有效利用,同时也为文件存储的管理提供了便利。
在步骤S103中,读取文件流,通过流的形式对用户上传请求中的文件信息进行读取,提高了文件读取的效率。
在步骤S104中,对文件信息的大小进行判断,如果文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存(如Redis)中,以文件标识ID为主键,将文件信息写入到分布式缓存中,实现了对文件的异步处理。如果文件信息的大小超过设定的范围,则如步骤S111和步骤S112所示,直接将文件流写入NAS,将文件元数据信息写入数据库。
具体地,在步骤S105中,以文件标识ID为主键,将文件写入分布式缓存中的具体写入方式为分段迭代写入。充分利用了计算机运算速度快、适合做重复性操作的特点,既保证了写入的速度,又降低了***资源的使用率,在高并发的场景下,能够保证数据的处理效率,提供业务上高吞吐的效果。
在步骤S106中,以文件标识ID为主键的过期时间,对分布式缓存的运行状态进行动态调控,防止出现主键内容过多,将分布式缓存撑满的问题,影响整体的处理效率。
具体地,若过期时间设置失败,则直接将文件的内容写入NAS,将元数据写入数据库中,如步骤S111和步骤S112所示。
在步骤S107中,在分布式缓存中设置待处理列队,放入文件标识ID;对分布式缓存中用户上传请求的各个文件的状态进行掌控,查看哪些文件是待处理的状态;在突然遇到紧急情况的时候,也能从待处理列队中获取待处理文件的信息,提高了存储NAS的可靠性。
具体地,若在分布式缓存中设置待处理列队,放入文件标识ID时出现失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
在步骤S108中,将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中。利用消息中间件(如Kafka)高并发的能力,大幅提高了存储NAS的吞吐能力,提供业务上高吞吐的效果,大大提升了处理效率。采用分布式缓存和消息中间件的处理方式,对用户上传的所有文件信息实现了异步处理,将以前同步写入的动作,全部变成异步,实现了文件信息的快速写入。通过将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式,将复杂的数据结构转换成统一格式的字符串,提升后续的处理效率。通过采取分布式缓存和消息中间件相结合的处理模式,实现了对数据的双层保护。
具体地,若将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件使出现写入失败,则直接将文件流写入NAS,将文件元数据信息写入数据库。
具体地,在步骤S109中,消息中间件的策略设置为主备消息所在的节点都完成应答,保证了消息中间件中至少双副本成功,进一步提高了在高并发状态下的处理可靠性;避免偶发性写入失败现象的出现,提升了文件的大并发读写能力。
在步骤S110中,将响应返回给用户,完成对用户上传请求的交互响应。
本实施例的整套处理流程,采取分布式缓存和消息中间件相结合的处理模式,将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中,将以前同步写入的动作,全部变成异步;利用消息中间件高并发的能力,不仅实现了对数据的快速处理,而且对用户上传的文件进行了双层保护;通过将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式,将复杂的数据结构转换成统一格式的字符串,提升后续的处理效率。通过把用户请求上传的文件以及其对应的元数据信息写入过程异步化,来提升整体写入性能,结合利用分布式缓存和消息中间件,实现了高并发、低延迟、高可靠的目的,大幅提高了存储NAS的吞吐能力,提供业务上高吞吐的效果。
实施例二
在一个实施例中,如图2所示,S201-S203为根据本实施例异步程序读取的实现方法的流程示意图。
在步骤S201中,启动额外的异步程序读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,在步骤S202中,删除分布式缓存中待处理队列中所述文件的标识ID。
具体地,在异步程序若写入消息失败,则返回告警信息给维护人员,并分析失败原因。
具体地,异步程序读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库后,判断分布式缓存中待处理队列集合的大小,若集合队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。
实施例三
在一个实施例中,如图3所示,S301-S为根据本实施例用户下载的实现方法的流程示意图。
在步骤S301中,获取用户下载请求。
在步骤S302中,直接从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,如果读取成功,在步骤S303中,从分布式缓存中读取文件标识ID对应的文件内容,在步骤S306中,更新分布式缓存中文件标识ID元数据信息,在步骤S304中返回文件流。
具体地,在步骤S302中,如果从分布式缓存中根据文件标识ID读取文件元数据信息失败,则在步骤S305中从数据库查询文件标识ID信息,在步骤S306中更新分布式缓存中文静标识ID元数据信息。
具体地,S303中,如果从分布式缓存中读取文件标识ID对应的文件内容失败,则在步骤S307中从NAS中读取文件内容,在步骤S304中返回文件流。
实施例四
在一个实施例中,如图4所示,提供一种提升文件存储NAS的读写吞吐能力的***,包括:
用户请求获取模块,用于获取用户的上传请求,请求内容包括***标识和文件信息;
路径设置模块,通过***标识生成待写入NAS的路径;
参数设置模块,通过***标识生成唯一的文件标识ID;
读取模块,用于读取文件流;
分布式缓存模块,用于缓存文件信息;
文件大小判断模块,用于判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;若文件信息的大小超过设定的范围,则直接将文件流写入NAS,将文件元数据信息写入数据库;
时间设定模块,用于以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;
待处理队列设置模块,用于在分布式缓存中设置待处理列队,放入文件标识ID;
消息中间件模块,用于存储文件信息;
文件写入模块,用于将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;
用户响应模块,用于将处理结果信息返回给用户;
异步读取模块,用于读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID;
下载模块,用于获取用户下载请求,直接从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间过长,缓存中数据已消失,则直接从NAS中读取返回。
具体地,读取模块在读取文件流后,判断文件信息的大小,若文件信息的大小超过了设定的范围,则直接将文件流写入NAS,并将元数据信息写入数据库。由于分布式缓存的容量有限制,为防止主键内容过多将分布式缓存撑满,对于文件信息大小超过设定范围的文件,采取直接写入NAS的策略,并将元数据信息写入数据库。
具体地,时间设定模块以文件标识ID为主键,设置过期时间,若过期时间设置失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
具体地,待处理队列设置模块若在放入文件标识ID时出现失败,则直接将文件的内容写入NAS,将元数据写入数据库中。
具体地,异步读取模块若写入消息失败,则返回告警信息给维护人员,并分析失败原因。异步读取消息中间件时,可能出现序列化失败、消息数据本身无法处理、数据库连接不可用、网络不可达等问题,从而导致异步程序读取消息中间件的消息不成功。通过返回告警信息给维护人员并分析原因,可以在第一时间让管理者知晓异步程序的运行状态,并针对读取失败的原因进行分析,达到对问题快速定位的目的,最终实现快速解决问题的目的,提高了整体的可靠性和稳定性。
具体地,异步模块读取消息中间件中的消息并将读取的消息反序列化,将文件的内容写入NAS,将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID后,判断分布式缓存中待处理队列集合的大小,若集合队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。当异步程序已经完成对消息中间件中的消息进行读取,并将用户上传的文件内容写入NAS、将元数据写入数据库后,删除分布式缓存中待处理队列中所述文件的标识ID,释放了所述文件在分布式缓存待处理队列中的空间,通过对分布式缓存中待处理队列集合大小的判断,实现对分布式缓存中待处理列队集合大小的动态控制。
实施例五
在一个实施例中,提供一种提升文件存储NAS的读写吞吐能力的存储器,所述存储器存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行时实现如上所述方法的步骤。所述存储器具体为一种可读存储器。所使用的存储器,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合所述实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本实施例技术方案。
Claims (9)
1.一种提升文件存储NAS读写吞吐能力的方法,其特征在于,所述方法包括:
获取用户的上传请求,请求内容包括***标识和文件信息,所述***标识包括文件的名称、文件的类型、文件开始上传的起始时间;
通过***标识生成待写入NAS的路径和唯一的文件标识ID;
读取文件流;
判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;若文件信息的大小超过设定的范围,则直接将文件流写入NAS,将文件元数据信息写入数据库;
以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;
在分布式缓存中设置待处理列队,放入文件标识ID;
将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;
将处理结果信息返回给用户;
读取消息中间件中的消息并将读取的消息反序列化,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID;
获取用户下载请求,直接从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间过长,缓存中数据已消失,则直接从NAS中读取返回。
2.根据权利要求1所述的一种提升文件存储NAS读写吞吐能力的方法,其特征在于,异步程序若写入消息失败,则返回告警信息给维护人员,并分析失败原因。
3.根据权利要求1所述的一种提升文件存储NAS的读写吞吐能力的方法,其特征在于,异步程序读取消息中间件中的消息,将文件的内容写入NAS,将元数据写入数据库,删除分布式缓存中待处理队列中所述文件的标识ID后,判断分布式缓存中待处理队列集合的大小,若集合队列的大小超过设定值,则返回告警信息给维护人员,并分析失败原因。
4.根据权利要求1所述的一种提升文件存储NAS读写吞吐能力的方法,其特征在于,获取用户的下载请求,从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间大于设定值,缓存中数据已消失,则直接从NAS中读取返回。
5.根据权利要求1所述的一种提升文件存储NAS读写吞吐能力的方法,其特征在于,所述文件流写入分布式缓存中的方式为分段迭代写入。
6.根据权利要求1所述的一种提升文件存储NAS读写吞吐能力的方法,其特征在于,所述文件标识ID是***标识通过加密算法生成。
7.根据权利要求1所述的一种提升文件存储NAS读写吞吐能力的方法,其特征在于,所述消息中间件的策略设置为主备消息所在的节点都完成应答。
8.一种提升文件存储NAS读写吞吐能力的***,其特征在于,包括:
用户请求获取模块,用于获取用户的上传请求,请求内容包括***标识和文件信息,所述***标识包括文件的名称、文件的类型、文件开始上传的起始时间;
路径设置模块,通过***标识生成待写入NAS的路径;
参数设置模块,通过***标识生成唯一的文件标识ID;
读取模块,用于读取文件流;
分布式缓存模块,用于缓存文件信息;
文件大小判断模块,用于判断所述文件信息的大小,若文件信息的大小在设定的范围内,则以文件标识ID为主键,将文件信息写入到分布式缓存中;若文件信息的大小超过设定的范围,则直接将文件流写入NAS,将文件元数据信息写入数据库;
时间设定模块,用于以文件标识ID为主键,设置分布式缓存中文件标识ID的过期时间;
待处理队列设置模块,用于在分布式缓存中设置待处理列队,放入文件标识ID;
消息中间件模块,用于存储文件信息;
文件写入模块,用于将文件标识ID和待写入NAS的路径,以及具体的文件流序列化格式后,写入消息中间件中;
用户响应模块,用于将处理结果信息返回给用户;
异步读取模块,用于读取消息中间件中的消息并将读取的消息反序列化,将文件的内容写入NAS,将元数据写入数据库,所述文件的内容和所述元数据均写入成功后,删除分布式缓存中待处理队列中所述文件的标识ID;
下载模块,用于获取用户下载请求,直接从分布式缓存中根据文件标识ID读取文件元数据信息和文件内容,读取文件数据返回;若间隔时间过长,缓存中数据已消失,则直接从NAS中读取返回。
9.一种提升文件存储NAS读写吞吐能力的存储器,其特征在于,所述存储器存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110701856.1A CN113485978B (zh) | 2021-06-23 | 2021-06-23 | 一种提升文件存储nas读写吞吐能力的方法、***及存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110701856.1A CN113485978B (zh) | 2021-06-23 | 2021-06-23 | 一种提升文件存储nas读写吞吐能力的方法、***及存储器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485978A CN113485978A (zh) | 2021-10-08 |
CN113485978B true CN113485978B (zh) | 2023-07-21 |
Family
ID=77937538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110701856.1A Active CN113485978B (zh) | 2021-06-23 | 2021-06-23 | 一种提升文件存储nas读写吞吐能力的方法、***及存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485978B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634616A (zh) * | 2012-08-27 | 2014-03-12 | 中兴通讯股份有限公司 | 一种基于云存储的流媒体点播方法和装置 |
CN105426127A (zh) * | 2015-11-13 | 2016-03-23 | 浪潮(北京)电子信息产业有限公司 | 一种分布式集群***的文件存储方法及装置 |
US9674249B1 (en) * | 2013-03-11 | 2017-06-06 | DataTorrent, Inc. | Distributed streaming platform for real-time applications |
CN106899602A (zh) * | 2017-03-13 | 2017-06-27 | 广州五舟科技股份有限公司 | 分布式计算平台及其文件管理方法 |
CN107341267A (zh) * | 2017-07-24 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种分布式文件***访问方法及平台 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储***及数据存储方法 |
CN109743377A (zh) * | 2018-12-27 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种基于http的小文件读写优化方法 |
CN110825694A (zh) * | 2019-11-01 | 2020-02-21 | 北京锐安科技有限公司 | 数据处理方法、装置、设备和存储介质 |
CN110968259A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 分步式对象存储***、对象储存方法及存储介质 |
CN111782612A (zh) * | 2020-05-14 | 2020-10-16 | 北京航空航天大学 | 跨域虚拟数据空间中文件数据边缘缓存方法 |
CN112202862A (zh) * | 2020-09-23 | 2021-01-08 | 北京明朝万达科技股份有限公司 | 一种基于kafka的集群数据以及文件的同步方法及装置 |
CN112306986A (zh) * | 2020-11-12 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 分布式文件***的存储方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6922757B2 (en) * | 2002-02-15 | 2005-07-26 | Exanet Inc. | Flexible and adaptive read and write storage system architecture |
-
2021
- 2021-06-23 CN CN202110701856.1A patent/CN113485978B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103634616A (zh) * | 2012-08-27 | 2014-03-12 | 中兴通讯股份有限公司 | 一种基于云存储的流媒体点播方法和装置 |
US9674249B1 (en) * | 2013-03-11 | 2017-06-06 | DataTorrent, Inc. | Distributed streaming platform for real-time applications |
CN105426127A (zh) * | 2015-11-13 | 2016-03-23 | 浪潮(北京)电子信息产业有限公司 | 一种分布式集群***的文件存储方法及装置 |
CN106899602A (zh) * | 2017-03-13 | 2017-06-27 | 广州五舟科技股份有限公司 | 分布式计算平台及其文件管理方法 |
CN107341267A (zh) * | 2017-07-24 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种分布式文件***访问方法及平台 |
CN108053863A (zh) * | 2017-12-22 | 2018-05-18 | 中国人民解放军第三军医大学第附属医院 | 适合大小文件的海量医疗数据存储***及数据存储方法 |
CN110968259A (zh) * | 2018-09-30 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 分步式对象存储***、对象储存方法及存储介质 |
CN109743377A (zh) * | 2018-12-27 | 2019-05-10 | 杭州当虹科技股份有限公司 | 一种基于http的小文件读写优化方法 |
CN110825694A (zh) * | 2019-11-01 | 2020-02-21 | 北京锐安科技有限公司 | 数据处理方法、装置、设备和存储介质 |
CN111782612A (zh) * | 2020-05-14 | 2020-10-16 | 北京航空航天大学 | 跨域虚拟数据空间中文件数据边缘缓存方法 |
CN112202862A (zh) * | 2020-09-23 | 2021-01-08 | 北京明朝万达科技股份有限公司 | 一种基于kafka的集群数据以及文件的同步方法及装置 |
CN112306986A (zh) * | 2020-11-12 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 分布式文件***的存储方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113485978A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809726B2 (en) | Distributed storage method and device | |
JP6404907B2 (ja) | 効率的な読み取り用レプリカ | |
CN110719318B (zh) | 消息处理方法和*** | |
USRE49998E1 (en) | Metadata updating | |
US10785320B2 (en) | Managing operation of instances | |
CN111294845B (zh) | 节点切换方法、装置、计算机设备和存储介质 | |
CN112422497B (zh) | 消息传递方法、装置及计算机设备 | |
CN106452836B (zh) | 主节点设置方法及装置 | |
CN109697112B (zh) | 分布式集约化一站式作业***和实现方法 | |
CN112597202B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN111416836B (zh) | 基于Nginx的服务器维护方法、装置、计算机设备及存储介质 | |
CN113032099B (zh) | 云计算节点、文件管理方法及装置 | |
CN111338893A (zh) | 进程日志处理方法、装置、计算机设备以及存储介质 | |
US20240129251A1 (en) | Data processing method and apparatus, computer device, and readable storage medium | |
CN108418859B (zh) | 写数据的方法和装置 | |
CN114461593B (zh) | 日志写入方法及其装置、电子设备及存储介质 | |
CN112579550B (zh) | 一种分布式文件***的元数据信息同步方法及*** | |
CN113485978B (zh) | 一种提升文件存储nas读写吞吐能力的方法、***及存储器 | |
CN111342986A (zh) | 分布式节点管理方法及装置、分布式***、存储介质 | |
CN117520278A (zh) | 一种分布式文件***多客户端高精度目录配额控制方法 | |
EP3349416B1 (en) | Relationship chain processing method and system, and storage medium | |
CN103685359B (zh) | 数据处理方法及装置 | |
Mookdarsanit et al. | Light-weight operation of a failover system for Cloud computing | |
WO2022121387A1 (zh) | 数据存储方法、装置、服务器及介质 | |
CN112559445B (zh) | 数据写入方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |