一种基于CAP机制的文件访问方法、装置及设备与流程

文档序号:13642324阅读:360来源:国知局

本发明涉及文件访问技术领域,更具体地说,涉及一种基于cap机制的文件访问方法、装置、设备及计算机可读存储介质。



背景技术:

目前,用户对文件进行访问时,需要进行权限的申请;例如:用户读写文件时,对文件进行写操作申请写权限后,系统为该线程或客户端分配互斥型的文件锁以确保数据的一致性,在该线程或客户端在写文件的过程中禁止其他线程或客户端读、写该文件,就算线程要读、写文件的范围不在当前持有文件锁线程或客户端读、写范围内时,也只能等待当前持有文件锁线程读、写完数据释放文件锁后,其他线程才可以操作该文件,降低了文件读、写并发和性能,其他线程处于等待状态,线程占有的系统资源没有得到充分利用,对系统资源造成一定的浪费。

因此,如何对文件进行访问,以避免系统资源的浪费,并增加文件读、写的并发及性能,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种基于cap机制的文件访问方法、装置、设备及计算机可读存储介质,以实现对文件的访问,避免系统资源的浪费,并增加文件读、写的并发及性能。

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

一种基于cap机制的文件访问方法,包括:

接收客户端发送的文件访问请求;所述文件访问请求中携带本次操作文件的地址范围以及本次操作的类型信息;

判断所述本次操作文件的地址范围是否被锁定;

若否,则向所述客户端分配所述文件访问请求的访问权限,并添加所述地址范围的文件锁,以使所述客户端利用所述访问权限进行文件的访问;

若是,则根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问。

其中,所述根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问,包括:

判断所述地址范围被锁定的类型信息与所述本次操作的类型信息是否均为读操作;

若是,则所述权限分配结果为向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问;

若否,则所述权限分配结果为向所述客户端发送拒绝访问的通知信息。

其中,若所述权限分配结果为向所述客户端发送拒绝访问的通知信息,则所述文件访问方法还包括:

以预定时长为间隔,检测所述地址范围是否被锁定;

若检测到所述地址范围未被锁定,则向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问。

其中,客户端利用访问权限进行文件的访问之后,还包括:

接收客户端发送的访问权限释放信息;

利用所述访问权限释放信息,取消与所述访问权限释放信息对应的访问权限,并删除与所述访问权限释放信息对应的地址范围的文件锁。

一种基于cap机制的文件访问装置,包括:

第一接收模块,用于接收客户端发送的文件访问请求;所述文件访问请求中携带本次操作文件的地址范围以及本次操作的类型信息;

判断模块,用于判断所述本次操作文件的地址范围是否被锁定;

第一权限分配模块,用于在所述本次操作文件的地址范围未被锁定时,向所述客户端分配所述文件访问请求的访问权限,并添加所述地址范围的文件锁,以使所述客户端利用所述访问权限进行文件的访问;

权限分配结果确定模块,在所述本次操作文件的地址范围被锁定时,根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问。

其中,所述权限分配结果确定模块包括:

判断单元,用于判断所述地址范围被锁定的类型信息与所述本次操作的类型信息是否均为读操作;

第一权限分配结果确定单元,用于在所述地址范围被锁定的类型信息与所述本次操作的类型信息均为读操作时,确定所述权限分配结果为向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问;

第二权限分配结果确定单元,用于在所述地址范围被锁定的类型信息与所述本次操作的类型信息不均为读操作时,确定所述权限分配结果为向所述客户端发送拒绝访问的通知信息。

其中,若所述权限分配结果为向所述客户端发送拒绝访问的通知信息,则所述文件访问装置还包括:

检测模块,用于以预定时长为间隔,检测所述地址范围是否被锁定;

第二权限分配模块,用于检测到所述地址范围未被锁定时,则向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问。

其中,还包括:

第二接收模块,用于接收客户端发送的访问权限释放信息;

权限释放模块,用于利用所述访问权限释放信息,取消与所述访问权限释放信息对应的访问权限;

文件锁删除模块,用于删除与所述访问权限释放信息对应的地址范围的文件锁。

一种基于cap机制的文件访问设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述文件访问方法的步骤。

一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述文件访问方法的步骤。

通过以上方案可知,本发明实施例提供的一种基于cap机制的文件访问方法,包括:接收客户端发送的文件访问请求;所述文件访问请求中携带本次操作文件的地址范围以及本次操作的类型信息;判断所述本次操作文件的地址范围是否被锁定;若否,则向所述客户端分配所述文件访问请求的访问权限,并添加所述地址范围的文件锁,以使所述客户端利用所述访问权限进行文件的访问;若是,则根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问。

可见,在本方案中,通过实现文件的分段锁,在权限申请的过程中附带操作文件的范围,达到对文件内容进行分段控制和操作,减少客户端或线程的等待时间,实现文件的同步访问、提升读写性能;本发明还公开了一种基于cap机制的文件访问装置、设备及计算机可读存储介质,同样能实现上述技术效果。

附图说明

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

图1为本发明实施例公开的一种基于cap机制的文件访问方法流程示意图;

图2为本发明实施例公开的一种基于cap机制的文件访问装置结构示意图。

具体实施方式

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

本发明实施例公开了一种基于cap机制的文件访问方法、装置、设备及计算机可读存储介质,以实现对文件的访问,避免系统资源的浪费,并增加文件读、写的并发及性能。

参见图1,本发明实施例提供的一种基于cap机制的文件访问方法,包括:

s101、接收客户端发送的文件访问请求;所述文件访问请求中携带本次操作文件的地址范围以及本次操作的类型信息;

具体的,本方案中文件访问请求为客户端发送至元数据服务器的,该访问请求所对应的本次操作的类型信息包括:对文件的读操作或者写操作,通过元数据服务器根据文件访问请求携带的地址范围,查询本次操作文件的范围是否被其他客户端或线程锁定,从而来确定是否需要向客户端分配文件访问权限。

s102、判断所述本次操作文件的地址范围是否被锁定;若否,则执行s103,若是,则执行s104;

具体的,文件每次被客户端进行访问时,其被访问的地址范围都要添加文件锁;因此,本方案中的地址范围被锁定,代表正在有客户端或线程访问该地址范围,地址范围未被锁定,则代表没有客户端或线程访问该地址范围。

s103、向所述客户端分配所述文件访问请求的访问权限,并添加所述地址范围的文件锁,以使所述客户端利用所述访问权限进行文件的访问;

具体的,若该地址范围未被锁定,则说明没有客户端或线程访问该地址范围,这时,便可直接向客户端分配该地址范围的访问权限,并且分配该地址范围的访问权限后,需要添加该地址范围的文件锁,以使后续客户端再对该地址范围进行访问时提供一个访问依据。

s104、根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问。

具体的,若该地址范围已经被锁定,则代表其他客户端或者线程正在访问该地址范围,这时需要根据地址范围被锁定的类型及本次操作的类型来确定权限分配结果,该权限分配结果为标识是否向客户端分配访问权限的结果,当地址范围被锁定的类型信息以及本次操作的类型信息不同时,对应不同的权限分配结果。

需要说明的是,在本方案中,可利用ceph的cap权限控制机制实现文件分段锁,通过在权限申请的过程中附带操作文件的范围,达到对文件内容进行分段控制和操作,减少客户端或线程的等待时间,实现文件的同步访问、提升读写性能。

基于上述实施例,在本实施例中,根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问,具体包括:

判断所述地址范围被锁定的类型信息与所述本次操作的类型信息是否均为读操作;

若是,则所述权限分配结果为向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问;

若否,则所述权限分配结果为向所述客户端发送拒绝访问的通知信息。

具体的,客户端在读写文件时,需要申请相应的读权限或写权限,在向元数据服务器申请相应的权限时附加本次操作文件的范围,权限申请发送成功后等待元数据服务器返回。

元数据服务器在接收到客户端权限申请的消息后,查询本次操作文件的范围是否被其他客户端或线程锁定,若该范围未被锁定,则直接分配对应的权限;若被锁定,并且本次是读操作,该范围被读锁定,则给客户端分配读权限;该范围被写锁定,则拒绝给客户端分配权限;如果本次是写操作,该范围被读/写锁定,则拒绝给客户端分配写权限;客户端收到元数据服务器的权限分配结果后,若该权限分配结果为分配了对应的读权限/写权限,则进行相应读、写操作;若未分配对应的读权限/写权限,则说明申请失败,等待其他客户端或线程操作完成后再进行相应操作。

基于上述任意实施例,在本实施例中,若所述权限分配结果为向所述客户端发送拒绝访问的通知信息,则所述文件访问方法还包括:

以预定时长为间隔,检测所述地址范围是否被锁定;

若检测到所述地址范围未被锁定,则向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问。

具体的,若用户申请访问权限失败,这时客户端可等待预定时长后再次向元数据服务器发送文件访问请求,但是由于客户端不能准确的知道该地址范围何时解锁,因此会出现访问延时的情况;因此在本方案中,若用户申请访问权限失败,这时元数据服务器可以预定时长为间隔查询地址范围的状态,若地址范围的状态为未被锁定,这时便可主动向客户端分配对应的访问权限,以减少客户端的等待时长。

基于上述任意实施例,在本实施例中,客户端利用访问权限进行文件的访问之后,还包括:

接收客户端发送的访问权限释放信息;

利用所述访问权限释放信息,取消与所述访问权限释放信息对应的访问权限,并删除与所述访问权限释放信息对应的地址范围的文件锁。

具体的,在本方案中,若客户端利用访问权限对文件执行操作后,可向元数据服务器发送释放相应的权限的消息,元数据服务器收到该消息后,进行相应权限取消和删除该范围的文件锁并给客户端回复消息,从而使该地址范围被其他客户端或者线程访问。

综上所述,本方案通过ceph在进行读写文件申请权限时,把文件的操作范围附带到权限消息中,元数据根据文件范围是否被加锁进行权限分配,不仅提高文件读写并发,对文件内容细粒度量化以达到精准控制,而且也提高了文件读写性能,解决写独占整个文件造成读写性能低的问题。

具体来说,本方案利用权限cap进行文件内容分段加锁,以及采用元数据进行文件内容细粒度加锁和管理主要包括如下几个步骤:

步骤一:用户读写数据申请权限时,把操作的文件范围信息附加到权限消息中;

步骤二:客户端发送消息到元数据服务器并等待元数据服务器回复;

步骤三:元数据服务器接收到客户端权限请求后,解析请求的权限和文件的加锁范围;

步骤四:元数据服务器处理客户端权限请求,根据本次申请权限类型查询文件该范围是否被其他客户端读/写锁定做授权或拒绝授权处理;

步骤五:元数据服务器把处理结果附加到cap授权消息中回复给客户端;

步骤六:客户端收到回复后,根据权限申请结果做相应处理,若授权成功则进行读/写;

步骤七:若授权失败,则等待该范围的锁被释放后进行相应操作;

步骤八:客户端读/写操作完成后,向元数据服务器发送释放权限的消息并等待回复;

步骤九:元数据服务器收到消息后,释放该文件的读写权限,并释放文件的本次范围锁,处理完后回复客户端;

步骤十:客户端收到回复后,更新文件的权限并返回。

下面对本发明实施例提供的文件访问装置进行介绍,下文描述的文件访问装置与上文描述的文件访问方法可以相互参照。

参见图2,本发明实施例提供的一种基于cap机制的文件访问装置,包括:

第一接收模块100,用于接收客户端发送的文件访问请求;所述文件访问请求中携带本次操作文件的地址范围以及本次操作的类型信息;

判断模块200,用于判断所述本次操作文件的地址范围是否被锁定;

第一权限分配模块300,用于在所述本次操作文件的地址范围未被锁定时,向所述客户端分配所述文件访问请求的访问权限,并添加所述地址范围的文件锁,以使所述客户端利用所述访问权限进行文件的访问;

权限分配结果确定模块400,在所述本次操作文件的地址范围被锁定时,根据所述地址范围被锁定的类型信息,以及本次操作的类型信息确定所述文件访问请求的权限分配结果,以使所述客户端利用所述权限分配结果进行文件的访问。

其中,所述权限分配结果确定模块包括:

判断单元,用于判断所述地址范围被锁定的类型信息与所述本次操作的类型信息是否均为读操作;

第一权限分配结果确定单元,用于在所述地址范围被锁定的类型信息与所述本次操作的类型信息均为读操作时,确定所述权限分配结果为向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问;

第二权限分配结果确定单元,用于在所述地址范围被锁定的类型信息与所述本次操作的类型信息不均为读操作时,确定所述权限分配结果为向所述客户端发送拒绝访问的通知信息。

其中,若所述权限分配结果为向所述客户端发送拒绝访问的通知信息,则所述文件访问装置还包括:

检测模块,用于以预定时长为间隔,检测所述地址范围是否被锁定;

第二权限分配模块,用于检测到所述地址范围未被锁定时,则向所述客户端分配所述文件访问请求的访问权限,以使所述客户端利用所述访问权限进行文件的访问。

其中,本方案还包括:

第二接收模块,用于接收客户端发送的访问权限释放信息;

权限释放模块,用于利用所述访问权限释放信息,取消与所述访问权限释放信息对应的访问权限;

文件锁删除模块,用于删除与所述访问权限释放信息对应的地址范围的文件锁。

在本实施例中,还提供一种基于cap机制的文件访问设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述任意一项文件访问方法实施例的步骤。

并且,本实施例还公开一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项文件访问方法实施例的步骤。

具体来说,该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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