文件读写方法、装置、系统、设备及计算机可读存储介质与流程

文档序号:18414239发布日期:2019-08-13 19:08阅读:146来源:国知局
文件读写方法、装置、系统、设备及计算机可读存储介质与流程

本发明涉及互联网技术领域,尤其涉及文件读写方法、装置、系统、设备及计算机可读存储介质。



背景技术:

随着互联网技术的飞速发展,应用越来越丰富,数据也呈几何级增长,海量数据的存储给本地存储带了巨大压力,分布式存储系统应运而生。

为保证分布式存储系统的可用性和可靠性,在分布式存储系统中,文件以多副本形式存储在多个副本节点上,当某一副本节点故障或性能不足时,需要进行文件重建或迁移,文件重建或迁移后,需要业务读写过程中改变文件路由,即文件读写请求的分发路径。在多客户端并发访问同一文件的情况下,如果存在某一客户端修改了文件路由,会导致多客户端缓存路由不一致的问题,最终导致文件无法被正常访问。

为解决上述问题,现有技术一般是设置一个用于保存文件路由信息的主控节点,分布式存储系统多客户端的读写请求需要统一发往该主控节点转发,这种方案的缺陷在于:主控节点的网络、cpu等资源容易成为分布式存储系统的性能瓶颈。



技术实现要素:

本发明的主要目的在于提出一种文件读写方法、装置、系统、设备及计算机可读存储介质,旨在实现在避免分布式存储系统产生性能瓶颈的前提下,客户端能够正常执行文件读写操作。

为实现上述目的,本发明提供一种文件读写方法,应用于客户端,所述方法包括如下步骤:

获取客户端本地缓存的文件路由信息;

根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;

当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;

根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。

优选地,所述根据所述最新文件路由信息,向所述服务端发送第二文件读写请求的步骤包括:

根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新;

根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求。

优选地,所述从所述分布式存储系统的元数据空间中获取最新文件路由信息的步骤之前,还包括:

将所述第一文件读写请求加入至预设的挂起队列中;

所述根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求的步骤之前,还包括:

唤醒所述挂起队列中的所述第一文件读写请求。

优选地,所述根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新的步骤之前,还包括:

获取所述服务端本地缓存的文件路由信息;

判断所述最新文件路由信息与所述服务端本地缓存的文件路由信息是否相同;

若所述最新文件路由信息与所述服务端本地缓存的文件路由信息不相同,则根据所述最新文件路由信息对所述服务端本地缓存的文件路由信息进行更新。

优选地,所述获取客户端本地缓存的文件路由信息的步骤之前,还包括:

向所述服务端发送文件路由设置请求,所述文件路由设置请求中携带有所述客户端本地缓存的文件路由信息。

此外,为实现上述目的,本发明还提供一种文件读写装置,所述文件读写装置包括:

第一获取模块,用于获取客户端本地缓存的文件路由信息;

第一发送模块,用于根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;

第二获取模块,用于当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;

第二发送模块,用于根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。

优选地,所述第二发送模块还用于:

根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新;

根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求。

优选地,所述文件读写装置还包括:

加入模块,用于将所述第一文件读写请求加入至预设的挂起队列中;

唤醒模块,用于唤醒所述挂起队列中的所述第一文件读写请求。

优选地,所述文件读写装置还包括:

第三获取模块,用于获取所述服务端本地缓存的文件路由信息;

第一判断模块,用于判断所述最新文件路由信息与所述服务端本地缓存的文件路由信息是否相同;

更新模块,用于若所述最新文件路由信息与所述服务端本地缓存的文件路由信息不相同,则根据所述最新文件路由信息对所述服务端本地缓存的文件路由信息进行更新。

优选地,所述文件读写装置还包括:

设置模块,用于向所述服务端发送文件路由设置请求,所述文件路由设置请求中携带有所述客户端本地缓存的文件路由信息。

此外,为实现上述目的,本发明还提供一种文件读写系统,所述文件读写系统包括客户端和服务端,其中:

所述客户端包括如上所述的文件读写装置;

所述服务端包括:

接收模块,用于接收客户端发送的第一文件读写请求,获取所述第一文件读写请求中携带的文件路由信息,以及服务端本地缓存的文件路由信息;

第二判断模块,用于判断所述第一文件读写请求中携带的文件路由信息与所述服务端本地缓存的文件路由信息是否相同;

返回模块,用于若所述第一文件读写请求中携带的文件路由信息与所述服务端本地缓存的文件路由信息不相同,则向所述客户端返回路由校验失败信息。

此外,为实现上述目的,本发明还提供一种文件读写设备,所述文件读写设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件读写程序,所述文件读写程序被所述处理器执行时实现如上所述的文件读写方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有文件读写程序,所述文件读写程序被处理器执行时实现如上所述的文件读写方法的步骤。

本发明获取客户端本地缓存的文件路由信息;根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。相比于现有技术,本发明无需设置主控节点,从而避免了主控节点的网络、cpu等资源成为分布式存储系统的性能瓶颈;此外,本发明客户端在接收到路由校验失败信息后,通过自动获取最新文件路由信息,并根据该最新文件路由信息向服务端发送第二文件读写请求,保证了客户端的文件读写请求能够被服务端正常执行。从而本发明实现了在避免分布式存储系统产生性能瓶颈的前提下,客户端能够正常执行文件读写操作。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;

图2为本发明文件读写方法第一实施例的流程示意图;

图3为本发明文件读写装置一实施例的模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。

本发明实施例文件读写设备可以是pc机、服务器或虚拟机设备。

如图1所示,该设备可以包括:处理器1001,例如cpu,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及文件读写程序。

在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的文件读写程序,并执行以下操作:

获取客户端本地缓存的文件路由信息;

根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;

当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;

根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。

进一步地,处理器1001可以调用存储器1005中存储的文件读写程序,还执行以下操作:

根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新;

根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求。

进一步地,处理器1001可以调用存储器1005中存储的文件读写程序,还执行以下操作:

将所述第一文件读写请求加入至预设的挂起队列中;

唤醒所述挂起队列中的所述第一文件读写请求。

进一步地,处理器1001可以调用存储器1005中存储的文件读写程序,还执行以下操作:

获取所述服务端本地缓存的文件路由信息;

判断所述最新文件路由信息与所述服务端本地缓存的文件路由信息是否相同;

若所述最新文件路由信息与所述服务端本地缓存的文件路由信息不相同,则根据所述最新文件路由信息对所述服务端本地缓存的文件路由信息进行更新。

进一步地,处理器1001可以调用存储器1005中存储的文件读写程序,还执行以下操作:

向所述服务端发送文件路由设置请求,所述文件路由设置请求中携带有所述客户端本地缓存的文件路由信息。

基于上述硬件结构,提出本发明文件读写方法各个实施例。

参照图2,图2为本发明文件读写方法第一实施例的流程示意图,所述方法包括:

步骤s10,获取客户端本地缓存的文件路由信息;

本实施例文件读写方法应用于分布式存储系统中的客户端。在分布式文件系统中,文件以多副本形式存储在多个副本节点上,每个副本节点可以看做是一个服务端。当客户端进行文件读写操作时,首先获取客户端本地缓存的文件路由信息,该文件路由信息用于表示文件读写请求的分发路径。

步骤s20,根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;

在获取到客户端本地缓存的文件路由信息后,根据该文件路由信息中的请求分发路径向分布式存储系统的服务端发送第一文件读写请求。比如,当前请求读写文件a,其对应的文件路由信息为副本节点0,1,2,副本节点0,1,2上分别存储有文件a的三个不同分片的副本,则客户端分别向副本节点0,1,2发送第一文件读写请求。

第一文件读写请求中携带有客户端本地缓存的文件路由信息,当服务端接收到客户端发送的第一文件读写请求后,获取该第一文件读写请求中携带的路由信息,以及服务端本地缓存的文件路由信息,然后判断该第一文件读写请求中携带的路由信息与服务端本地缓存的文件路由信息是否相同;若相同,则直接执行与该第一文件读写请求对应的文件读写操作;若不同,则说明在此之前存在其他客户端对服务端本地缓存的文件路由信息进行了设置或修改,或者该服务端中存储的文件副本已经重建或迁移至其他副本节点,此时服务端向客户端返回路由校验失败信息。

步骤s30,当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;

当客户端接收到服务端返回的路由校验失败信息时,从分布式存储系统的元数据空间中获取最新文件路由信息,其中,元数据空间用于保存文件的元数据,元数据空间中始终保存有最新的文件路由信息。

步骤s40,根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。

在获取到最新文件路由信息之后,客户端将本地缓存的文件路由信息更新为该最新文件路由信息,然后重试读写请求,即根据更新后的客户端本地缓存的文件路由信息,向服务端发送第二文件读写请求。

需要说明的是,上述重试读写请求的操作适用于多客户端并发访问相同的文件的应用场景,当任一客户端接收到服务端返回的路由校验失败信息时,都需要重试读写请求,以保证客户端能够正常执行文件读写操作,同时业务不感知路由校验失败的问题。

本实施例相比于现有技术,无需设置主控节点,从而避免了主控节点的网络、cpu等资源成为分布式存储系统的性能瓶颈;此外,本实施例客户端在接收到路由校验失败信息后,通过自动获取最新文件路由信息,并根据该最新文件路由信息向服务端发送第二文件读写请求,保证了客户端的文件读写请求能够被服务端正常执行。从而本发明实现了在避免分布式存储系统产生性能瓶颈的前提下,客户端能够正常执行文件读写操作。

进一步地,基于本发明文件读写方法第一实施例,提出本发明文件读写方法第二实施例。

在本实施例中,上述步骤s40可以进一步包括:根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新;根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求。

在获取到最新文件路由信息之后,客户端首先将本地缓存的文件路由信息更新为该最新文件路由信息,然后,根据第一文件读写请求所请求读写的文件,以及更新后的客户端本地缓存的文件路由信息,生成第二文件读写请求,比如,若第一文件读写请求请求读写文件a,且更新后的文件路由信息为副本节点0,1,3,则生成第二文件读写请求为:请求读写文件a,文件路由信息为副本节点0,1,3。之后,客户端进行请求重试,即向服务端发送该第二文件读写请求。

进一步地,所述从所述分布式存储系统的元数据空间中获取最新文件路由信息的步骤之前,还包括:将所述第一文件读写请求加入至预设的挂起队列中;对应地,所述根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求的步骤之前,还包括:唤醒所述挂起队列中的所述第一文件读写请求。

在本实施例中,客户端预先设置有一挂起队列,该挂起队列用于保证接收的文件读写请求的转发顺序不变。当客户端接收到服务端返回的路由校验失败信息时,首先将第一文件读写请求加入至挂起队列中,然后从元数据空间获取最新文件路由信息;在完成文件路由信息的更新后,唤醒挂起队列中的第一文件读写请求,并根据该第一文件读写请求所请求读写的文件和更新后的客户端本地缓存的文件路由信息,生成第二文件读写请求,然后,根据更新后的客户端本地缓存的文件路由信息中的请求分发路径,向服务端发送第二文件读写请求,该第二文件读写请求携带有更新后的所述客户端本地缓存的文件路由信息。

服务端在接收到该第二文件读写请求后,同样先执行缓存校验,即判断第二文件读写请求中携带的文件路由信息与服务端本地缓存的文件路由信息是否相同,若相同,则执行与该第二文件读写请求对应的文件读写操作。由此实现了客户端对文件的正常读写。

进一步地,基于本发明文件读写方法第二实施例,提出本发明文件读写方法第三实施例。

在本实施例中,所述根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新的步骤之前,还包括:获取所述服务端本地缓存的文件路由信息;判断所述最新文件路由信息与所述服务端本地缓存的文件路由信息是否相同;若所述最新文件路由信息与所述服务端本地缓存的文件路由信息不相同,则根据所述最新文件路由信息对所述服务端本地缓存的文件路由信息进行更新。

在本实施例中,客户端在从元数据空间中获取到最新文件路由信息后,向服务端发送文件路由信息获取请求,以获取服务端本地缓存的文件路由信息,然后,判断最新文件路由信息和服务端本地缓存的文件路由信息是否相同;若不相同,则说明当前服务端本地缓存的文件路由信息不是最新的文件路由信息,此时,需要根据最新文件路由信息对客户端本地缓存的文件路由信息进行更新,并向服务端发送更新指令,以更新服务端本地缓存的文件路由信息,也即将服务端本地缓存的文件路由信息更新为最新路由文件信息。

反之,若从元数据空间中获取到的最新文件路由信息与服务端本地缓存的文件路由信息相同,说明当前服务端本地缓存的文件路由信息已经是最新文件路由信息,此时无需对当前服务端本地缓存的文件路由信息进行更新,而只需对客户端本地缓存的文件路由信息进行更新即可。

通过上述方式,保证了服务端本地缓存的文件路由信息和客户端本地缓存的文件路由信息的一致性,且均为最新文件路由信息,为后续客户端能够正常执行文件读写操作提供了前提保证。

进一步地,基于本发明文件读写方法第一实施例,提出本发明文件读写方法第四实施例。

在本实施例中,在步骤s10之前,还可以包括:向所述服务端发送文件路由设置请求,所述文件路由设置请求中携带有所述客户端本地缓存的文件路由信息。

在本实施例中,在数据重建或迁移时,分布式文件系统的客户端可以向服务端发送文件路由设置请求,该文件路由设置请求中携带有客户端本地缓存的文件路由信息。服务端接收客户端发送的文件路由设置请求,获取该文件路由设置请求中携带的文件路由信息,将该文件路由设置请求中携带的文件路由信息保存至预设的路由存储数据库中,在服务端进程启动时,将路由存储数据库中保存的文件路由信息加载至服务端本地缓存中,以供后续需要校验客户端的文件读写请求中携带的文件路由信息与服务端本地当前缓存的文件路由信息是否相同时,直接从服务端本地缓存中读取文件路由信息。

通过上述方式,保证了客户端本地缓存的文件路由信息与服务端本地缓存的文件路由信息的一致性,从而为客户端能够正常执行文件读写操作提供了前提保证。

本发明还提供一种文件读写装置。参照图3,图3为本发明文件读写装置一实施例的模块示意图。本实施例中,所述文件读写装置包括:

第一获取模块10,用于获取客户端本地缓存的文件路由信息;

第一发送模块20,用于根据所述客户端本地缓存的文件路由信息,向分布式存储系统的服务端发送第一文件读写请求;

第二获取模块30,用于当接收到所述服务端返回的路由校验失败信息时,从所述分布式存储系统的元数据空间中获取最新文件路由信息;

第二发送模块40,用于根据所述最新文件路由信息,向所述服务端发送第二文件读写请求。

进一步地,所述第二发送模块40还用于:

根据所述最新文件路由信息对所述客户端本地缓存的文件路由信息进行更新;

根据所述第一文件读写请求和更新后的所述客户端本地缓存的文件路由信息,生成第二文件读写请求,向所述服务端发送所述第二文件读写请求。

上述各功能模块实现的方法可参照本发明文件读写方法实施例,此处不再赘述。

本实施例相比于现有技术,无需设置主控节点,从而避免了主控节点的网络、cpu等资源成为分布式存储系统的性能瓶颈;此外,本实施例客户端在接收到路由校验失败信息后,通过自动获取最新文件路由信息,并根据该最新文件路由信息向服务端发送第二文件读写请求,保证了客户端的文件读写请求能够被服务端正常执行。从而本发明实现了在避免分布式存储系统产生性能瓶颈的前提下,客户端能够正常执行文件读写操作。

本发明还提供一种文件读写系统。在本发明文件读写系统一实施例中,所述文件读写系统包括客户端和服务端,其中:

所述客户端包括如上所述的文件读写装置;

所述服务端包括:

接收模块,用于接收客户端发送的第一文件读写请求,获取所述第一文件读写请求中携带的文件路由信息,以及服务端本地缓存的文件路由信息;

判断模块,用于判断所述第一文件读写请求中携带的文件路由信息与所述服务端本地缓存的文件路由信息是否相同;

返回模块,用于若所述第一文件读写请求中携带的文件路由信息与所述服务端本地缓存的文件路由信息不相同,则向所述客户端返回路由校验失败信息。

在本实施例中,客户端向服务端发送第一文件读写请求,当服务端接收模块接收到客户端发送的第一文件读写请求后,获取该第一文件读写请求中携带的路由信息,以及服务端本地缓存的文件路由信息,然后判断模块判断该第一文件读写请求中携带的路由信息与服务端本地缓存的文件路由信息是否相同;若相同,则直接执行与该第一文件读写请求对应的文件读写操作;若不同,则说明在此之前存在其他客户端对服务端本地缓存的文件路由信息进行了设置或修改,或者该服务端中存储的文件副本已经重建或迁移至其他副本节点,此时返回模块向客户端返回路由校验失败信息,以使客户端更新文件路由信息并重试文件读写请求。

本实施例相比于现有技术,无需设置主控节点,从而避免了主控节点的网络、cpu等资源成为分布式存储系统的性能瓶颈;此外,本实施例客户端在接收到路由校验失败信息后,通过自动获取最新文件路由信息,并根据该最新文件路由信息向服务端发送第二文件读写请求,保证了客户端的文件读写请求能够被服务端正常执行。从而本发明实现了在避免分布式存储系统产生性能瓶颈的前提下,客户端能够正常执行文件读写操作。

本发明还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有文件读写程序,所述文件读写程序被处理器执行时实现如上所述的文件读写方法的步骤。

其中,在所述处理器上运行的文件读写程序被执行时所实现的方法可参照本发明文件读写方法各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1