CN105512279A - 一种元数据访问方法、相关设备及系统 - Google Patents

一种元数据访问方法、相关设备及系统 Download PDF

Info

Publication number
CN105512279A
CN105512279A CN201510888579.4A CN201510888579A CN105512279A CN 105512279 A CN105512279 A CN 105512279A CN 201510888579 A CN201510888579 A CN 201510888579A CN 105512279 A CN105512279 A CN 105512279A
Authority
CN
China
Prior art keywords
metadata
client
target directory
target
catalogue
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.)
Granted
Application number
CN201510888579.4A
Other languages
English (en)
Other versions
CN105512279B (zh
Inventor
王晓锋
方新
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510888579.4A priority Critical patent/CN105512279B/zh
Publication of CN105512279A publication Critical patent/CN105512279A/zh
Priority to PCT/CN2016/107979 priority patent/WO2017092673A1/zh
Application granted granted Critical
Publication of CN105512279B publication Critical patent/CN105512279B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS

Abstract

本发明实施例公开了一种元数据访问方法、相关设备及系统,该方法包括:第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对目标目录中所有元数据的排它访问权限,该目标目录为存储有多个元数据的目录,该目标目录中所有元数据的排它访问权限用于供第一客户端访问该目标目录中的第一目标元数据,以及访问该目标目录中除该第一目标元数据之外的元数据;当申请到该权限时,访问目标目录中的第一目标元数据。采用本发明,一次性获取目标目录下所有元数据的排它访问权限,能够减少维护缓存一致性的开销。

Description

一种元数据访问方法、相关设备及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种元数据访问方法、相关设备及系统。
背景技术
分布式文件系统(DistributedFileSystem,GFS)采用了文件的元数据和数据访问分离的架构,通过独立的元数据服务子系统提供元数据访问功能,使分布式文件系统具备了一定的扩展能力,能够提供海量文件的存储和访问服务。请参见图1,GFS中元数据访问的部分包括三个子系统:元数据客户子系统10、元数据服务子系统20和集群服务子系统30,元数据客户子系统10包括多个客户端(Client),图1中以客户端101~103为例;元数据服务子系统20包括多个元数据服务器,图1中以元数据服务器201~203为例;集群服务子系统30主要包括集群管理服务器301、分布式一致性服务器302和元数据路由服务器303。
图1中的客户端访问元数据的原理如图2所示,当客户端101需要访问目标元数据时,先向分布式一致性服务器302发送对该目标元数据的排它访问权限,如果申请到了该排它访问权限,那么该客户端101就是所有的客户端101~103中唯一可以直接请求元数据服务器201~203对该目标元数据进行操作的客户端,这样一来就保证了该目标元数据的缓存一致性。之后客户端101向元数据路由服务器303查询目标元数据的归属信息,即查询该目标元数据归属到哪个元数据服务器操作;元数据路由服务器303根据存储的元数据与元数据服务器的映射关系查询目标元数据的归属信息,并将查询到的归属信息发送给客户端101;该客户端101对该归属信息进行分析,当分析出目标元数据归属到元数据服务器201时,向该元数据服务器201发出请求以请求访问目标元数据,元数据服务器201接收客户端101的请求,并根据该请求对目标元数据进行操作,然后将操作结果反馈给客户端101,相应地,客户端101接收元数据服务器201发送的操作结果,并将该操作结果缓存到本地,至此,客户端101访问目标元数据结束。
上述分布式一致性服务器302授予客户端101对目标元数据的排它访问权限可以通过分布式锁、分布式协议等技术来实现,当通过分布式锁来时,分布式一致性服务器302和客户端101之间需要进行交互来执行锁申请、锁释放以及锁召回的操作,该过程中节点间的通信开销较大;尤其在海量小文件(LotofSmallFiles,LoSF)的场景下,分布式文件系统(GFS)中的小文件的元数据非常多,客户端101访问其中每个小文件的元数据时都要与分布式一致性服务器进行锁申请、锁释放以及锁召回的操作,这个过程产生的巨大的通信开销降低了客户端访问元数据的效率。
发明内容
本发明实施例公开了一种元数据的访问方法、相关设备及系统,能够减少客户端访问元数据的过程中维护元数据缓存一致性的开销,提高元数据的访问效率。
第一方面,本发明实施例提供了一种元数据的访问方法,该方法包括:
第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据。
通过执行上述步骤,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
结合第一方面,在第一方面的第一种可能的实现方式中,当所述第一客户端未申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息向所述第二客户端发送请求消息以通过所述第二客户端访问所述第一目标元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
通过执行上述步骤,第一客户端在申请不到目标目录中所有元数据的排它访问权限时,通过已经获取了目标目录中所有元数据的排它访问权限的第二客户端访问第一目标元数据,使得第一客户端在申请不到目标目录中所有元数据的排它访问权限时依然可以顺利访问到目标元数据。
结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限包括:
第一客户端在请求访问目标目录中的第一目标元数据时,获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
若是,则向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息;
所述第一客户端根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果发送给所述第三客户端。
通过执行上述步骤,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中第一目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该第一目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问第一目标元数据。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
则所述第一客户端按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
通过执行上述步骤,第一客户端在访问目标目录中的其他元数据(如第二目标元数据)时,可以直接对该第二目标元数据进行访问,无需再次申请访问访问权限,提高了第一客户端访问目标目录中的元数据的效率。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第一客户端访问所述第一目标元数据包括:
所述第一客户端向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
所述第一客户端接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
所述第一客户端向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
所述第一客户端接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
通过执行上述步骤,目标元数据服务器接收到第一客户端发送的访问目标目录下的第一目标元数据的请求后,在对目标目录中的第一目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第一方面的第六种可能的实现方式中,所述第一客户端访问所述第一目标元数据包括:
所述第一客户端向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端;
所述第一客户端接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端;
所述第一客户端向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限;
所述第一客户端接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
所述第一客户端根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
通过执行上述步骤,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对第一目标元数据进行操作,减少了节点之间的开销,提高了访问第一目标元数据的访问效率。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第五种可能的实现方式,或者第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
若满足,则所述第一客户端释放所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
通过执行上述步骤,第一客户端上的负载过高时,自动释放目标目录中所有元数据的排它访问权限,让负载较低的第四客户端来获取该目标目录中所有元数据的排它访问权限以达到分担负载的目的;或者在第一客户端访问目标目录中的元数据的频率比其他客户端访问目标目录中的元数据的频率低时,自动释放目标目录中所有元数据的排它访问权限,让访问频率较高的客户端获取目标目录中所有元数据的排它访问权限,以减少转发访问所产生的负载,提高了访问目标目录中元数据的效率。
第二方面,本发明实施例提供一种元数据访问方法,该方法包括:
目录锁服务器在第一客户端访问目标目录中的目标元数据时,接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
所述目录锁服务器根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;若授予了所述第二客户端,则所述目录锁服务器向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
通过执行上述步骤,第一客户端访问目标目录中的目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
结合第二方面,在第二方面的第一种可能的实现方式中,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器在第三客户端访问所述目标元数据时,接收所述第三客户端发送的所述第一申请消息;
所述目录锁服务器向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
通过执行上述步骤,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问目标元数据。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
所述目录锁服务器根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
通过执行上述步骤,目标元数据服务器接收到第一客户端发送的访问目标目录下的目标元数据的请求后,在对目标目录中的目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
结合第二方面,或者第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
所述目录锁服务器根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作,其中,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
通过执行上述步骤,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对目标元数据进行操作,减少了节点之间的开销,提高了访问目标元数据的访问效率。
第三方面,本发明实施例提供一种终端,其特征在于,所述终端为第一客户端,所述第一客户端包括发送装置、接收装置、存储器和处理器,所述处理器调用所述存储器中的访问元数据的程序,用于执行如下操作:
在请求访问目标目录中的第一目标元数据时,通过所述发送装置向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述处理器当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述处理器访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
当申请到对所述目标目录中所有元数据的排它访问权限时,访问所述第一目标元数据。
通过执行上述操作,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
结合第三方面,在第三方面的第一种可能的实现方式中,当未申请到对所述目标目录中所有元数据的排它访问权限时,通过所述接收装置接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息通过所述发送装置向所述第二客户端发送请求消息以通过所述第二客户端访问所述目标目录中的元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
通过执行上述操作,第一客户端在申请不到目标目录中所有元数据的排它访问权限时,通过已经获取了目标目录中所有元数据的排它访问权限的第二客户端访问第一目标元数据,使得第一客户端在申请不到目标目录中所有元数据的排它访问权限时依然可以顺利访问到目标元数据。
结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述处理器向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限的方式具体为:
获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
若是,则通过发送装置向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理访问所述第一目标元数据之后,所述处理器还用于:
通过所述接收装置接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息;
根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果通过所述发送装置发送给所述第三客户端。
通过执行上述操作,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中第一目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该第一目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问第一目标元数据。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器访问所述第一目标元数据之后,所述处理器还用于:
在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
则所述处理器按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
通过执行上述操作,第一客户端在访问目标目录中的其他元数据(如第二目标元数据)时,可以直接对该第二目标元数据进行访问,无需再次申请访问访问权限,提高了第一客户端访问目标目录中的元数据的效率。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,或者第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述处理器访问所述第一目标元数据的方式具体为:
向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
通过所述接收装置接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
通过所述发送装置向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
通过所述接收装置接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
通过执行上述操作,目标元数据服务器接收到第一客户端发送的访问目标目录下的第一目标元数据的请求后,在对目标目录中的第一目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,或者第三方面的第四种可能的实现方式,在第三方面的第六种可能的实现方式中,所述处理器访问所述第一目标元数据的方式具体为:
通过所述发送装置向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端;
通过所述接收装置接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端;
通过所述发送装置向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限;
通过所述接收装置接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述处理器操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
通过执行上述操作,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对第一目标元数据进行操作,减少了节点之间的开销,提高了访问第一目标元数据的访问效率。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第五种可能的实现方式,或者第六方面的第四种可能的实现方式,在第三方面的第七种可能的实现方式中,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器访问所述第一目标元数据之后,所述处理器还用于:
判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
若满足,则释放对所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
通过执行上述操作,第一客户端上的负载过高时,自动释放目标目录中所有元数据的排它访问权限,让负载较低的第四客户端来获取该目标目录中所有元数据的排它访问权限以达到分担负载的目的;或者在第一客户端访问目标目录中的元数据的频率比其他客户端访问目标目录中的元数据的频率低时,自动释放目标目录中所有元数据的排它访问权限,让访问频率较高的客户端获取目标目录中所有元数据的排它访问权限,以减少转发访问所产生的负载,提高了访问目标目录中元数据的效率。
第四方面,本发明实施例提供一种终端,其特征在于,所述终端为目录锁服务器,所述目录锁服务器包括发送装置、接收装置、存储器和处理器,所述处理器调用所述存储器中的访问元数据的程序,用于执行如下操作:
在第一客户端访问目标目录中的目标元数据时,通过所述接收装置接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
若未授予所述第二客户端,则将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;若授予了所述第二客户端,则通过所述发送装置向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
通过执行上述操作,第一客户端访问目标目录中的目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
结合第四方面,在第四方面的第一种可能的实现方式中,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
在第三客户端访问所述目标元数据时,通过接收装置接收所述第三客户端发送的所述第一申请消息;
通过所述发送装置向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
通过执行上述操作,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问目标元数据。
结合第四方面,或者第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
通过所述接收装置接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
通过执行上述操作,目标元数据服务器接收到第一客户端发送的访问目标目录下的目标元数据的请求后,在对目标目录中的目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
结合第四方面,或者第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
通过所述接收装置接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作,其中,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
通过执行上述操作,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对目标元数据进行操作,减少了节点之间的开销,提高了访问目标元数据的访问效率。
第五方面,本发明实施例提供一种分布式文件系统,该系统包括第一客户端、第二客户端和目录锁服务器,其中:
第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
所述目录锁服务器接收所述第一客户端发送的第一申请消息,并判断所述目标目录中所有元数据的排它访问权限是否授予了第二客户端;
若所述目标目录中所有元数据的排它访问权限未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端,并向所述第一客户端发送通知消息以通知所述目标目录中所有元数据的排它访问权限授予所述第一客户端;
所述第一客户端接收所述通知消息,并根据所述通知消息访问所述第一目标元数据。
通过运行该系统,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
结合第五方面,在第五方面的第一种可能的实现方式中:
所述第一客户端为第三方面的任一种可能的实现方式所描述的第一客户端;
所述目录锁服务器为第四方面的任一种可能的实现方式所描述的目录锁服务器。
在以上描述的一些方案中,所述存储有多个元数据的目录包括存储有用来描述海量小文件的多个元数据的目录。
在以上描述的一些方案中,所述向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限包括:
基于分布式锁服务向目录锁服务器发送第一申请消息,申请访问所述目标目录的锁以获取对所述目标目录中所有元数据的排它访问权限,其中,所述访问所述目标目录的锁为不可抢占的分布式锁。
在以上描述的一些方案中,所述向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限包括:
基于分布式锁服务向目录锁服务器发送第二申请消息,申请操作所述目标目录的锁以获取对所述目标目录中所有元数据的排它操作权限,其中,所述操作所述目标目录的锁为可抢占的分布式锁。
在以上描述的一些方案中,所述第一客户端判断访问所述目标目录中的元数据所产生的负载是否满足预设条件包括:所述第一客户端记录自身主动访问所述目标目录下的元数据所产生的第一负载,以及根据其他客户端的请求消息访问所述目标目录中的元数据所产生的第二负载;端判断所述第一负载与所述第二负载的相对大小是否满足预设条件。
第六方面,本发明实施例提供一种访问元数据的装置,所述装置包括用于执行本发明实施例第一方面任一方式的部分或全部步骤的功能单元。
第七方面,本发明实施例提供一种访问元数据的装置,所述装置包括用于执行本发明实施例第二方面任一方式的部分或全部步骤的功能单元。
通过实施本发明实施例,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是现有技术中的一种分布式文件系统的结构示意图;
图2是图1所示的分布式文件系统的原理示意图;
图3是本发明实施例提供的一种元数据访问方法的流程示意图;
图4是本发明实施例提供的又一种元数据访问方法的流程示意图;
图5是本发明实施例提供的又一种元数据访问方法的流程示意图;
图5A是本发明实施例提供的一种元数据访问的原理示意图;
图5B是图5A中各个设备进行交互的流程示意图;
图6是本发明实施例提供的又一种元数据访问方法的流程示意图;
图6A是本发明实施例提供的一种元数据访问的原理示意图;
图6B是图6A中各个设备进行交互的流程示意图;
图7是本发明实施例提供的又一种元数据访问方法的流程示意图;
图8是本发明实施例提供的一种终端的结构示意图;
图9是本发明实施例提供的又一种终端的结构示意图;
图10是本发明实施例提供的一种分布式文件系统的结构示意图;
图11是本发明实施例提供的又一种终端的结构示意图;
图12是本发明实施例提供的又一种终端的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明实施例中的技术方案进行清楚地描述;其中,图3~7用来描述本发明实施例的方法。
请参见图3,图3是本发明实施例提供的一种元数据访问方法的流程示意图,讲述第一客户端如何获取目标目录下所有元数据的排它访问权限,该方法包括但不限于如下步骤。
步骤S303:第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据。
具体地,分布式文件系统中存在很多客户端,第一客户端为当前请求访问目标目录中的第一目标元数据的一个随机的客户端;该分布式文件系统中存在用来存放多个元数据的目标目录,该目标目录中的第一目标元数据为第一客户端当前需要访问的元数据。
进一步地,目录锁服务器能够提供分布式锁服务,如搭载zookeeper服务的服务器;目录锁服务器通过授予访问目标目录的锁来协调各个客户端对目标目录的访问权限,如果目录锁服务器将访问目标目录的锁授予第一客户端,那么第一客户端就具备了访问目标目录下所有元数据的权限。
进一步地,分布式锁服务可以设置为可抢占分布式锁和不可抢占分布式锁;若设置为可抢占的分布式锁,第一客户端申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么目录锁服务器会根据抢占机制释放访问目标目录的锁,并重新将访问目标目录的锁授予第一客户端,如果访问目标目录的锁未授予其他客户端,那么目录锁服务器则直接将访问目标目录的锁授予第一客户端;若设置为不可抢占的分布式锁,第一客户端申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么目录锁服务器会根据不可抢占的机制,不将访问目标目录的锁授予第一客户端,如果访问目标目录的锁未授予其他客户端,那么目录锁服务器则直接将访问目标目录的锁授予第一客户端。在本发明实施例中,访问目标目录的锁可以设置为不可抢占的分布式锁,这样一来,第一客户端申请到访问目标目录的锁后,就具备了对目标目录中所有元数据的排它访问权限,即除了第一客户端之外,其他的客户端没有访问该目标目录中元数据的权限(即访问第一目标元数据和除第一目标元数据之外的元数据的权限),除非第一客户端主动释放访问目标目录的锁。
在一种可选的方案中,当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:所述第一客户端在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;则所述第一客户端按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
也即是说,当第一客户端在请求访问目标目录中的第一目标元数据时,原本只需要申请第一目标元数据的排它访问权限,但是第一客户端实际申请了目标目录中所有元数据的排它访问权限,这样一来,当第一客户端请求访问目标目录中除第一目标元数据之外的元数据(如第二目标元数据)时,会判断出自身已经获取了访问该第二目标元数据的权限,因此不需要再申请第二目标元数据的排它访问权限,而是直接对第二目标元数据进行访问。
在一种可选的方案中,所述第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限包括:第一客户端在请求访问目标目录中的第一目标元数据时,获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;若是,则向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
具体地,该分布式文件系统中存在多种目录属性的目录,不同目录属性的目录中存储的内容可能存在区别,其中,有一种目录属性的目录中专门用来存储多个元数据,可选的,该多个元数据可以具体为描述海量小文件的元数据(每个小文件对应有自身的元数据)。第一客户端访问目标目录时先对该目标目录的目录属性进行分析,判断该目标目录是否为上述存储多个元数据的目录。该目标目录也可以看作是一个文件,因此也对应有描述该目标目录的元数据,并且描述目标目录的元数据存放在目标目录的上一级目录中。
当第一客户端请求访问目标目录下的第一目标元数据时,首先向元数据路由服务器发送该上一级目录的归属信息的查询请求;该元数据路由服务器接收第一客户端的查询请求,从存储的目录与元数据服务器的映射关系中查找该上一级目录归属的元数据服务器,其中,该上一级目录归属到哪个元数据服务器则该元数据服务器具备对该上一级目录的操作权限;然后将该上一级目录的归属信息反馈给第一客户端,第一客户端接收元数据路由服务器发送的归属信息,对该归属信息进行分析得出该上一级目录归属的元数据服务器,然后向该上一级目录归属的元数据服务器请求存储于该上一级目录中的用于描述目标目录的元数据,该上一级目录归属的元数据服务器读取存储于该上一级目录中的用于描述目标目录的元数据,并将读取到的描述目标目录的元数据发送给该第一客户端。
举例来说,假设存在一个路径…/A/B/f,其中,目录B为目标目录,目录A为目录B的上一级目录,目录B下存储有描述某个文件的第一目标元数据f,目录A下存储有描述目录B的元数据;当第一客户端要访问第一目标元数据f时,首先需要向元数据路由服务器查找目录A所归属的元数据服务器,然后向该元数据服务器请求目录A下描述目录B的元数据,相应地,该元数据服务器接收第一客户端的请求,读取目录A中描述目录B的元数据,并将读取到的描述目录B的元数据发送给第一客户端。
进一步地,第一客户端接收到目标目录的上一级目录所归属的元数据服务器发送的描述目标目录的元数据后,对描述目标目录的元数据进行分析,判断该目标目录是否存储多个元数据的目录,在本发明实施例中,描述每个目录的元数据都存在标识信息,用来定义各个目录的目录属性,因此第一客户端可以基于描述目标目录中的元数据中的“标识信息”得出目标目录的目录属性,进而得出该目标目录是否为存储多个元数据的目录。
举例来说,描述目标目录的元数据可以包含“标识信息”来标识目标目录的目录属性,当该标识信息设置为“1”时,表明目标目录为上述存储多个元数据的目录,当该标识信息设置为“0”时,表明目标目录不为上述存储多个元数据的目录。“标识信息”可以由用户在建立目标目录时设置,也可以由用户在建立完目标目录后进行修改。当第一客户端接收到描述目标目录的元数据后,判断其中的“标识信息”是“1”还是“0”即可得出目标目录是否为存储多个元数据的目录。
步骤S304:当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据。
具体地,目录锁服务器接收第一客户端发送的第一申请消息,对该第一申请消息进行分析,得出该第一申请消息用于申请目标目录中所有元数据的排它访问权限,因此该目录锁服务器判断目标目录中所有元数据的排它访问权限是否已经授予了其他客户端,若没有则目录锁服务器将目标目录中所有元数据的排它访问权限授予第一客户端,这样一来,所有的客户端中只有第一客户端具备访问目标目录中元数据的权限,该第一客户端后续访问该目标目录中的任意元数据时,第一客户端不需要再申请访问该任意元数据的权限。获取到目标目录中所有元数据的排它访问权限后,该第一客户端访问该目标目录中的元数据。需要说明的是,元数据进行读、写等操作均属于访问元数据,其中,当对元数据进行读时,访问元数据的过程包括请求元数据服务器读取元数据并接收元数据服务器发送的读取的该元数据;当对元数据进行写时,访问元数据的过程包括请求元数据服务器向元数据中写入内容(包括修改)并接收元数据服务器发送的写入结果。除了读和写外,还存在其他的访问元数据的方式,此处不再对其他的方式一一举例。在现有技术中,元数据服务器为具备操作元数据权限的设备。
举例来说,假设目标目录为目录B,目录B的上一级目录为目录A,目录B下有文件的元数据d、e和f,当第一客户端访问路径…/A/B/下的第一目标元数据f时,向目录锁服务器申请目录B中所有元数据的排它访问权限,然后第一客户端就可以访问元数据f,并且在后续访问元数据e或者d时均可以直接访问,而无需再申请访问目录B的访问权限,也不需要再申请访问e和d的权限。
通过执行步骤S303~S304,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
在一种可选的方案中,当所述第一客户端未申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息向所述第二客户端发送请求消息以通过所述第二客户端访问所述第一目标元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
具体地,当目录锁服务器判断出目标目录中所有元数据的排它访问权限已经授予了其他客户端(如第二客户端)时,目录锁服务器则不会将目标目录中所有元数据的排它访问权限授予第一客户端,但是,目录锁服务器会向第一客户端发送包含第二客户端所在的节点信息,相应地,第一客户端接收目录锁服务器发送的节点信息,并从该节点信息中解析出第二客户端的节点,然后基于该节点向第二客户端发送访问目标目录的请求,相应地,第二客户端接收第一客户端发送的访问目标目录的请求,根据该请求来访问目标目录下的第一目标元数据,并将访问结果发送给第一客户端。
执行完上述步骤S303~S304之后,如果第一客户端获取了目标目录下所有元数据的权限,第一客户端还可执行步骤S305和S306来为其他无法获取目标目录的访问权限的第三客户端提供访问第一目标目录中元数据的服务,具体地流程图如图4所示。其中,步骤S305和S306的详细描述如下:
步骤S305:所述第一客户端接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息。
具体地,当目录锁服务器将目标目录中所有元数据的排它访问权限授予了第一客户端后,目录锁服务器还会接收到第三客户端申请目标目录中所有元数据的排它访问权限的请求(该第三客户端泛指未获得该目标目录中所有元数据的排它访问权限的一类客户端),由于该排它访问权限已经授予了第一客户端,因此目录锁服务器不会将目标目录中所有元数据的排它访问权限再授予第三客户端,但是,为了保证第三客户端能够正常地访问目标目录中的元数据,目录锁服务器会向第三客户端发送第一客户端的节点信息,第三客户端接收目录锁服务器发送的节点信息,并根据该节点信息分析出需要通过第一客户端访问目标目录下的第一目标元数据,然后向第一客户端发送申请消息,该申请消息中包含第三客户端需要访问的目标目录下的第一目标元数据的信息,相应地,第一客户端接收第三客户端发送的申请消息。
步骤S306:所述第一客户端根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果发送给所述第三客户端。
具体地,第一客户端对申请消息进行分析,得出第三客户端需要访问的元数据为第一目标元数据,进一步判断该第一目标元数据是否在缓存中,若是则对缓存的第一目标元数据进行读、写等操作,并将操作结果反馈给第三客户端;若不在缓存中则请求目标目录所归属的元数据服务器对该第一目标元数据进行读、写等操作,然后将操作结果反馈给第三客户端。
通过执行步骤S305和S306,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中第一目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该第一目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问第一目标元数据。
步骤S304中第一客户端获取到目标目录中所有元数据的排它访问权限后,所述第一客户端访问所述第一目标元数据可以具体通过步骤S307~S310来实现;对应的流程图如图5所示。其中,步骤S307~S310的详细描述如下:
步骤S307:所述第一客户端向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息。
具体地,第一客户端向元数据路由服务器发送查询请求,以查询目标目录的归属信息;该元数据路由服务器接收第一客户端的查询请求,从存储的目录与元数据服务器的映射关系中查找该目标目录对应的目标元数据服务器,然后向第一客户端发送归属信息,指示目标目录归属到目标元数据服务器。
步骤S308:所述第一客户端接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器。
具体地,第一客户端接收元数据路由服务器发送的归属信息,对该归属信息进行分析得出该目标目录的操作权限归属到目标元数据服务器。
步骤S309:所述第一客户端向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据。
具体地,由于第一客户端已经获取了目标目录中所有元数据的排他访问权限,因此第一客户端有权限向目标元数据服务器发送操作请求消息,请求目标元数据服务器对第一目标元数据进行操作,而其他未获取到目标目录中所有元数据的排它访问权限的客户端则无法请求目标元数据服务器对该第一目标元数据进行操作。
步骤S310:所述第一客户端接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
具体地,目标元数据服务器接收第一客户端发送的操作请求消息,对该请求消息进行解析得出第一客户端请求操作的元数据为目标目录中的第一目标元数据,因此向目录锁服务器发送申请请求,申请目标目录中所有元数据的排它操作权限;相应地,目录锁服务器接收元数据服务器发送的申请请求,此时无论目标目录中的所有元数据的排它操作权限是否授予了其他客户端,目录锁服务器均会将目标目录中所有元数据的排它操作权限授予目标元数据服务器(假如目标目录的排它操作权限具体通过分布式锁来实现,那么当操作目标目录的锁已经授予了其他客户端时,目录锁服务器召回操作目标目录的锁,然后将操作目标目录的锁授予第一客户端;当操作目标目录的锁未授予其他客户端时,目录锁服务器直接将操作目标目录的锁授予第一客户端),使得所有的元数据服务器中只有目标元数据服务器能够对目标目录中的元数据进行操作。进一步地,目标元数据服务器对目标目录中的第一目标元数据进行操作,然后将操作该第一目标元数据的操作结果发送给第一客户端,相应地,第一客户端接收目标元数据服务器发送的操作该第一目标元数据的操作结果,至此,第一客户端完成了对目标目录中的第一目标元数据的访问。
需要说明的是,申请目标目录中所有元数据的排它操作权限与申请目标目录中所有元数据的排它访问权限都可以通过基于目录粒度的分布式锁来实现,其中,申请目标目录中所有元数据的排它操作权限用到的是可抢占的分布式锁,申请目标目录中所有元数据的排它访问权限用到的是不可抢占的分布式锁。
通过执行步骤S307~S310,目标元数据服务器接收到第一客户端发送的访问目标目录下的第一目标元数据的请求后,在对目标目录中的第一目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
步骤S304中第一客户端获取到目标目录中所有元数据的排它访问权限后,所述第一客户端访问所述第一目标元数据可以具体通过步骤S311~S315来实现;对应的流程图如图6所示。步骤S311~S315的详细描述如下:
步骤S311:所述第一客户端向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端。
具体地,第一客户端向元数据路由服务器发送切换消息,元数据路由服务器接收第一客户端发送的该切换消息,并对该切换消息进行分析,当分析出该切换消息用于指示将目标目录归属到第一客户端时,元数据路由服务器修改路由表中的映射关系,使目标目录对应到第一客户端,即,将目标目录的操作权限归属到第一客户端。
步骤S312:所述第一客户端接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端。
具体地,元数据路由服务器向第一客户端发送路由切换成功的通知消息,第一客户端接收元数据路由服务器发送的通知消息,对该通知消息进行分析可以获知目标目录已经归属到第一客户端。
需要说明的是,在第一客户端中可以设置客户端代理和元数据服务代理,客户端代理用于提供元数据的缓存和向目录锁服务器申请目标目录中所有元数据的排它访问权限;元数据服务代理用于存储目标目录和向目录锁服务器申请目标目录中所有元数据的排它操作权限。
步骤S313:所述第一客户端向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限。
具体地,当第一客户端通过通知消息获知目标目录归属到自身时,第一客户端向目录锁服务器发送第二申请消息,申请目标目录中所有元数据的排它操作权限;相应地,目录锁服务器接收第一客户端发送的第二申请消息,此时无论是否有其他的元数据服务器对目标目录进行操作,目录锁服务器均会将目标目录的操作权限授予第一客户端,并向第一客户端发送授予消息来通知目标目录中所有元数据的操作权限已经授予了该第一客户端。
步骤S314:所述第一客户端接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据。
具体地,第一客户端接收目录锁服务器发送的授予消息,对该授予消息分析之后可以获知自身已经获取了目标目录中所有元数据的排它操作权限(包括对第一目标元数据以及目标目录中除第一目标元数据以外的元数据的排它操作权限),至此,第一客户端就可以对目标目录中的元数据进行操作,而无需请求额外的元数据服务器对目标目录下的元数据进行操作。
步骤S315:所述第一客户端根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
具体地,第一客户端基于已经获取的目标目录中所有元数据的排它操作权限对目标目录中的第一目标元数据进行操作,并获得操作结果,至此,第一客户端完成了对目标目录中的第一目标元数据的访问。当访问的形式是读时,该操作结果包括是否读取成功,当读取成功时还包括读取到的元数据;当访问的形式为写(或修改)时,该操作结果包括是否写入成功,其余形式的访问此处不一一举例。
通过执行步骤S311~S315,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对第一目标元数据进行操作,减少了节点之间的开销,提高了访问第一目标元数据的访问效率。
执行完上述步骤S303~S304之后,如果目录锁服务器授予了第一客户端访问目标目录的权限,第一客户端还可执行步骤S316和S317来均衡各个客户端的负载,具体地流程图如图7所示。步骤S316和S317的详细描述如下:
步骤S316:所述第一客户端判断访问所述目标目录中的元数据所产生的负载是否满足预设条件。
第一种情况,第一客户端在访问目标目录中的元数据之后,实时检测自身运行时的整体负载,并将该整体负载的负载值与预设阈值进行比较,判断第一客户端的整体负载是否超过了预设阈值,该预设阈值为根据实际需要设置的一个用来参考对比的负载值。
第二种情况,所述第一客户端记录自身主动访问所述目标目录下的元数据所产生的第一负载,以及根据其他客户端的请求消息访问所述目标目录中的元数据所产生的第二负载;所述第一客户端进一步判断所述第一负载与所述第二负载的相对大小是否满足预设条件,例如,第一负载小于第二负载。
步骤S317:若满足,则所述第一客户端释放所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
具体地,当第一客户端判断访问所述目标目录中的元数据所产生的负载满足预设条件时,主动释放目标目录中所有元数据的排它访问权限,这时候,第四客户端则可以向目录锁服务器申请目标目录中所有元数据的排它访问权限,当第四客户端申请到了目标目录中所有元数据的排它访问权限后,第一客户端如果需要访问目标目录则需要通过该第四客户端来访问。
需要说明的时,本发明实施例中的第三客户端和第四客户端可以为同一个客户端,也可以不为同一个客户端。
通过执行步骤S316和S317,第一客户端上的负载过高时,自动释放目标目录中所有元数据的排它访问权限,让负载较低的第四客户端来获取该目标目录中所有元数据的排它访问权限以达到分担负载的目的;或者在第一客户端访问目标目录中的元数据的频率比其他客户端访问目标目录中的元数据的频率低时,自动释放目标目录中所有元数据的排它访问权限,让访问频率较高的客户端获取目标目录中所有元数据的排它访问权限,以减少转发访问所产生的负载,提高了访问目标目录中元数据的效率。
进一步地,上述步骤S303~S317中的部分步骤可以进行组合形成其他方案例如步骤S303~S306与步骤S307~S310进行组合;步骤S303~S306与步骤S311~S315进行组合;步骤S303~S310与S316~S317进行组合;步骤S303~S306与步骤S311~S317进行组合等,组合产生的益效果可以参照上述各个步骤的相关描述,此处不再赘述。
以上对本发明的方案进行了详细介绍,以下结合具体场景从多侧对图5和图6所示的方案进行描述。
请参照图5A和5B,图5A是本发明实施例提供的一种元数据访问的原理示意图;图5B是图5A中各个设备进行交互的流程示意图。图5A中包括第一客户端101、第二客户端102、第三客户端103(可以根据实际需要来部署客户端的数量)、目录锁服务器305、元数据路由服务器303、第一元数据服务器201、第二元数据服务器202和第三元数据服务器203。
图5A和5B中还特地为各个设备示出了人为划分的功能单元,旨在突出各个设备能够执行哪些步骤,相应设备中可能存在与该功能单元相对应的物理实体,也可能不存在与该功能单元相对应的物理实体,以下对各个设备的功能单元进行简单的介绍:第一客户端101(其他客户端也一样)包含元数据缓存单元和访问目录的锁单元,元数据缓存单元用于对元数据服务器发送的元数据进行缓存,访问目录的锁单元用于向目录锁服务器305的访问目录的锁单元申请目录中所有元数据的排它访问权限;元数据路由服务器303包含路由服务单元,用于为第一客户端101提供目录的归属查询服务;第一元数据服务器201、第二元数据服务器202和第三元数据服务器203均包含元数据服务单元和操作目录的锁单元,元数据服务单元用于实现元数据的持久化保存一致,操作目录的锁单元用于向目录锁服务器305的操作目录的锁单元申请目录中所有元数据的排它操作权限。
第一客户端101访问路径“…/A/B/f”时的流程如步骤S501~S517所示,其中,目录B为目录A下的目录,第一目标元数据f为目录B下的众多元数据中的一项。
步骤S501:第一客户端101向元数据路由服务器303请求目录A的归属信息。
步骤S502:元数据路由服务器303从存储的目录与元数据服务器的映射关系中,查找出目录A所归属的第一元数据服务器201,并告知第一客户端101。
步骤S503:第一客户端101向第一元数据服务器201请求目录A下描述目录B的元数据。
步骤S504:第一元数据服务器201向目录锁服务器305发送申请请求,请求操作目录A的锁(为了描述方便可以称作“目录A的归属锁”)以获取目录A中所有元数据的排它访问权限。
步骤S505:目录锁服务器305将目录A的归属锁授予第一元数据服务器201,使得所有的元数据服务器中只有第一元数据服务器201具备对目录A中所有元数据的操作权限。
步骤S506:第一元数据服务器201从目录A中读取描述目录B的元数据。
步骤S507:第一元数据服务器201将读取到的描述目录B的元数据发送给第一客户端101。
步骤S508:第一客户端101对描述目录B的元数据进行分析,判断目录B是否为存储多个元数据的目录。
步骤S509:若判断出目录B为存储多个元数据的目录,则第一客户端101向目录锁服务器305发送申请请求,请求访问目录B的锁(为了描述方便可以称作“目录B的加速锁”)以获取目录B中所有元数据的排它访问权限。
步骤S510:当目录锁服务器305发现目录B的加速锁未授予其他客户端时,目录锁服务器305将目录B的加速锁授予第一客户端101,使得所有的客户端中只有第一客户端101具备访问目录B中所有元数据的权限。之后的步骤S511~S517为第一客户端访问目录B中的元数据的具体过程。
步骤S511:第一客户端101向元数据路由服务器303请求目录B的归属信息。
步骤S512:元数据路由服务器303从存储的目录与元数据服务器的映射关系中,查找出目录B所对应的(即归属的)第二元数据服务器202,并告知第一客户端101。
步骤S513:第一客户端101向第二元数据服务器202请求访问目录B下的第一目标元数据f。
步骤S514:第二元数据服务器202向目录锁服务器305申请操作目录B的锁(即目录B的归属锁)以获取目录B中所有元数据的排它操作权限。
步骤S515:基于抢占的分布式锁的规则,无论目录B的归属锁是否授予了其他元数据服务器,目录锁服务器305均会将目录B的归属锁授予第二元数据服务器202,并告知第二元数据服务器202,使得在所有的元数据服务器中只有第二元数据服务器202具备对目标目录中所有元数据的排它操作权限。
步骤S516:第二元数据服务器202对目录B中第一目标元数据f进行操作。
步骤S517:第二元数据服务器202将操作第一目标元数据f的操作结果发送给第一客户端101。
需要说明的是,步骤S501~S517执行的细节可以对应参照步骤S303~S304,以及步骤S307~S310的相关描述,此处不再赘述。
请参见图6A和6B,图6A是本发明实施例提供的一种元数据访问的原理示意图;图6B是图6A中各个设备进行交互的流程示意图。图6A中包括第一客户端101、第二客户端102、第三客户端103(可以根据实际需要来部署客户端的数量)、目录锁服务器305和元数据路由服务器303。
图6A和6B中还特地为各个设备示出了人为划分的功能单元,以下对各个设备的功能单元进行简单的介绍:第一客户端101(其他客户端也一样)包含元数据缓存单元、访问目录的锁单元、元数据服务单元和操作目录的锁单元,元数据缓存单元用于对元数据服务器发送的元数据进行缓存,访问目录的锁单元用于向目录锁服务器305的访问目录的锁单元申请该目录的排它访问权限,元数据服务单元用于实现元数据的读、写、持久化保存等操作,操作目录的锁单元用于向目录锁服务器305的操作目录的锁单元申请目录的排它操作权限;元数据路由服务器303包含路由服务单元和路由切换单元,路由服务单元用于为第一客户端101提供目录的归属查询服务,路由切换单元用于将目录归属到客户端上。
第一客户端101访问路径“…/A/B/f”时的流程如步骤S601~S615所示,其中,目录B为目录A下的目录,第一目标元数据f为目录B下的众多元数据中的一项。
步骤S601:第一客户端101向元数据路由服务303器请求目录A的归属信息。
步骤S602:元数据路由服务器303从存储的目录与元数据服务器的映射关系中,查找出目录A所归属的目标元数据服务器,并告知第一客户端101。
步骤S603:第一客户端101向目标元数据服务器请求目录A下描述目录B的元数据。
步骤S604:目标元数据服务器向目录锁服务器305发送申请请求,请求操作目录A的锁(为了描述方便可以称作“目录A的归属锁”)以获取目录A中所有元数据的排它访问权限。
步骤S605:目录锁服务器305将目录A的归属锁授予目标元数据服务器,使得所有的元数据服务器中只有目标元数据服务器具备对目录A中所有元数据的操作权限。
步骤S606:目标元数据服务器从目录A中读取描述目录B的元数据。
步骤S607:目标元数据服务器将读取到的描述目录B的元数据发送给第一客户端101。
步骤S608:第一客户端101对描述目录B的元数据进行分析,判断目录B是否为存储多个元数据的目录。
步骤S609:若判断出目录B为存储多个元数据的目录,则第一客户端101向目录锁服务器305发送申请请求,请求访问目录B的锁(为了描述方便可以称作“目录B的加速锁”)以获取目录B中所有元数据的排它访问权限。
步骤S610:当目录锁服务器305发现目录B的加速锁未授予其他客户端时,目录锁服务器305将目录B的加速锁授予第一客户端101,使得所有的客户端中只有第一客户端101具备访问目录B中所有元数据的权限。之后的步骤S611~S615为第一客户端101访问目录B中的元数据的具体过程。
步骤S611:第一客户端101向元数据路由服务器303发送请求消息,请求元数据路由服务器修改目录与目标元数据服务器的对应关系,将目录B的归属对应到第一客户端101上。
步骤S612:元数据路由服务器303修改目录与目标元数据服务器的对应关系,将目录B归属到第一客户端101上,并告知第一客户端101。
步骤S613:第一客户端101向目录锁服务器305申请操作目录B的锁(即目录B的归属锁)以获取目录B中所有元数据的排它操作权限。
步骤S614:基于抢占的分布式锁的规则,无论目录B的归属锁是否授予了其他目标元数据服务器,目录锁服务器305均会将目录B的归属锁授予第一客户端101,并告知第一客户端101,使得只有第一客户端101自身具备对目标目录中的元数据的操作权限。
步骤S615:第一客户端101对目录B中的第一目标元数据f进程操作,获得操作结果。
需要说明的是,步骤S601~S615执行的细节可以对应参照步骤S302~S304,以及步骤S311~S315的相关描述,此处不再赘述。
上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。
请参见图8,图8是本发明实施例提供的一种终端80的结构示意图,该终端80为以下描述的第一客户端80,该终端80可以包括接收装置801、发送装置802,存储器803和处理器804(处理器可以为一个也可以为多个,图8中以一个处理器为例),接收装置801、发送装置802,存储器803和处理器804分别连接总线805,其中,存储器803中存储一组元数据访问程序代码,且处理器804调用存储器803中存储的元数据访问程序代码,用于执行以下操作:
在请求访问目标目录中的第一目标元数据时通过所述发送装置802向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述处理器804当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述处理器804访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
当申请到对所述目标目录中所有元数据的排它访问权限时,访问所述第一目标元数据。
在具体实现中,目录锁服务器能够提供分布式锁服务,如搭载zookeeper服务的服务器;目录锁服务器通过授予访问目标目录的锁来协调各个客户端对目标目录的访问权限,如果目录锁服务器将访问目标目录的锁授予处理器804,那么处理器804就具备了访问目标目录下所有元数据的权限;进一步地,分布式锁服务可以设置为可抢占分布式锁和不可抢占分布式锁;若设置为可抢占的分布式锁,处理器804申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么目录锁服务器会根据抢占机制释放访问目标目录的锁,并重新将访问目标目录的锁授予该处理器804,如果访问目标目录的锁未授予其他客户端,那么目录锁服务器则直接将访问目标目录的锁授予处理器804;若设置为不可抢占的分布式锁,处理器804申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么目录锁服务器会根据不可抢占的机制,不会将访问目标目录的锁授予第一客户端80,如果访问目标目录的锁未授予其他客户端,那么目录锁服务器则直接将访问目标目录的锁授予处理器804。在本发明实施例中,访问目标目录的锁可以设置为不可抢占的分布式锁,这样一来,处理器804申请到访问目标目录的锁后,就具备了对目标目录中所有元数据的排它访问权限,即除了处理器804之外,其他的客户端没有访问该目标目录中元数据的权限,除非该处理器804主动释放访问目标目录的锁。
处理器804通过执行上述操作,在访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中所有元数据的排它访问权限,这样一来,第一客户端80就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
作为一种可选的实施方案,当未申请到对所述目标目录中所有元数据的排它访问权限时,通过所述接收装置801接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息通过所述发送装置802向所述第二客户端发送请求消息以通过所述第二客户端访问所述目标目录中的元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
处理器704通过执行上述操作,在申请不到目标目录中所有元数据的排它访问权限时,通过已经获取了目标目录中所有元数据的排它访问权限的第二客户端访问第一目标元数据,使得第一客户端80在申请不到目标目录中所有元数据的排它访问权限时依然可以顺利访问到目标元数据。
作为一种可选的实施方案,所述处理器804通过所述发送装置802向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限的方式具体为:
获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
若是,则通过所述发送装置802向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
具体实现中,处理器804通过获取描述目标目录的元数据来判断目标目录中是否为存储多个元数据的目录,在现有的元数据的基础上,新增一项“目录属性”,该“目录属性”的值不同则代表目标目录为不同属性,其中,有一种属性用来表明该目标目录为存储多个元数据的目录,相应地,处理器804对该“目录属性”进行分析即可得出该目标目录是否为存储多个元数据的目录。作为一种可选的实施方式,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器804访问所述第一目标元数据之后,所述处理器804还用于:
通过所述接收装置801接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端80访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端80的节点信息后,根据所述第一客户端80的节点信息向所述第一客户端80发送的消息;
根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果通过所述发送装置802发送给所述第三客户端。
处理器804通过执行上述操作,获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中第一目标元数据的需求,则为第三客户端提供访问目标目录中的第一目标元数据的服务,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问第一目标元数据。
作为一种可选的实施方式,所述当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器804访问所述第一目标元数据之后,所述处理器804还用于:
在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
处理器804通过执行上述操作,在访问目标目录中的其他元数据(如第二目标元数据)时,可以直接对该第二目标元数据进行访问,无需再次申请访问访问权限,提高了处理器804访问目标目录中的元数据的效率。
作为一种可选的实施方式,所述处理器804访问所述第一目标元数据的方式具体为:
向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
通过所述接收装置801接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
通过所述发送装置802向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
通过所述接收装置801接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
处理器804通过执行上述操作,目标元数据服务器接收到处理器804发送的访问目标目录下的第一目标元数据的请求后,在对目标目录中的第一目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
作为一种可选的实施方式,所述处理器804访问所述第一目标元数据的方式具体为:
通过所述发送装置802向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端80;
通过所述接收装置801接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端80;
通过所述发送装置802向所述目录锁服务器发送第二申请消息申请对所述目标目录中所有元数据的排它操作权限;
通过所述接收装置801接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述处理器804操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
处理器804通过执行上述操作,使第一客户端80同时充当客户端和元数据服务器的功能,处理器804获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对第一目标元数据进行操作,减少了节点之间的开销,提高了访问第一目标元数据的访问效率
作为一种可选的实施方式,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器804访问所述第一目标元数据之后,所述处理器804还用于:
判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
若满足,则释放对所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
具体实现中,处理器804会实时对访问目标目录中的元数据所产生的负载进行检测,检测的方式包括但不限于以下列举的两种情况:
第一种情况,处理器804实时检测第一客户端80运行时的整体负载,并将该整体负载的负载值与预设阈值进行比较,判断第一客户端80的整体负载是否超过了预设阈值,该预设阈值为根据实际需要设置的一个用来参考对比的负载值。
第二种情况,所述处理器804记录第一客户端80主动访问所述目标目录下的元数据所产生的第一负载,以及根据其他客户端的请求消息访问所述目标目录中的元数据所产生的第二负载;所述第一客户端80进一步判断所述第一负载与所述第二负载的相对大小是否满足预设条件,例如,第一负载小于第二负载。
处理器804执行上述操作的具体过程还可以参照图3~7对应的方发实施例的相应描述,此处不再赘述。
处理器804通过执行上述操作,在第一客户端80上的负载过高时,自动释放目标目录中所有元数据的排它访问权限,让负载较低的第四客户端来获取该目标目录中所有元数据的排它访问权限以达到分担负载的目的;或者在第一客户端访问目标目录中的元数据的频率比其他客户端访问目标目录中的元数据的频率低时,自动释放目标目录中所有元数据的排它访问权限,让访问频率较高的客户端获取目标目录中所有元数据的排它访问权限,以减少转发访问所产生的负载,提高了访问目标目录中元数据的效率。
请参见图9,图9是本发明实施例提供的又一种终端90的结构示意图,该终端90为以下描述的目录锁服务器90,该终端90可以包括接收装置901、发送装置902,存储器903和处理器904(处理器可以为一个也可以为多个,图9中以一个处理器为例),接收装置901、发送装置902,存储器903和处理器904分别连接总线905,其中,存储器903中存储一组元数据访问程序代码,且处理器904调用存储器903中存储的元数据访问程序代码,用于执行以下操作:
在第一客户端访问目标目录中的目标元数据时,通过所述接收装置901接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
若未授予所述第二客户端,则将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;若授予了所述第二客户端,则通过所述发送装置902向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
在具体实现中,目录锁服务器能够提供分布式锁服务,如搭载zookeeper服务的服务器;处理器904能够基于该分布式锁服务,通过授予访问目标目录的锁来协调各个客户端对目标目录的访问权限,如果处理器904将访问目标目录的锁授予第一客户端,那么第一客户端就具备了访问目标目录下所有元数据的权限;进一步地,分布式锁服务可以设置为可抢占分布式锁和不可抢占分布式锁;若设置为可抢占的分布式锁,第一客户端申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么处理器904会根据抢占机制释放访问目标目录的锁,并重新将访问目标目录的锁授予该第一客户端,如果访问目标目录的锁未授予其他客户端,那么处理器904则直接将访问目标目录的锁授予第一客户端;若设置为不可抢占的分布式锁,第一客户端申请访问目标目录的锁时,如果访问目标目录的锁已经授予了其他客户端,那么处理器904会根据不可抢占的机制,不会将访问目标目录的锁授予第一客户端,如果访问目标目录的锁未授予其他客户端,那么处理器904则直接将访问目标目录的锁授予第一客户端。在本发明实施例中,访问目标目录的锁可以设置为不可抢占的分布式锁,这样一来,第一客户端申请到访问目标目录的锁后,就具备了对目标目录中所有元数据的排它访问权限,即除了第一客户端之外,其他的客户端没有访问该目标目录中元数据的权限,除非该第一客户端主动释放访问目标目录的锁。
处理器904通过执行上述操作,在第一客户端访问目标目录中的目标元数据时,处理器904一次性将目标目录中所有元数据的排它访问权全部授予第一客户端以维护缓存一致性,这样一来,第一客户端就可以顺利访问目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
作为一种可选的方案,若未授予所述第二客户端,所述处理器904将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器904还用于:
在第三客户端访问所述目标元数据时,通过接收装置901接收所述第三客户端发送的所述第一申请消息;
通过所述发送装置902向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
处理器904通过执行上述操作,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录目标元数据的需求,则第三客户端可以基于处理器904发送的节点信息将访问请求发送至第一客户端,通过第一客户端访问该目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问目标元数据。
作为一种可选的方案,若未授予所述第二客户端,所述处理器904将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器904还用于:
通过所述接收装置901接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
处理器904通过执行上述操作,目标元数据服务器接收到第一客户端发送的访问目标目录下的目标元数据的请求后,在对目标目录中的目标元数据进行操作之前,先向处理器904申请目标目录中所有元数据的排它操作权限,相应地,处理器904将目标目录中所有元数据的排它操作权限授予目标元数据服务器,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性。
作为一种可选的方案,若未授予所述第二客户端,所述处理器904将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器904还用于:
通过所述接收装置901接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作。
处理器904执行上述操作的具体过程还可以参照图3~7对应的方发实施例的相应描述,此处不再赘述。
处理器904通过执行上述操作,在第一客户端同时充当客户端和元数据服务器的功能的前提下,处理器904授予第一客户端目标目录中所有元数据的排它访问权限后,第一客户端不需要与远端的元数据服务器进行交互来请求元数据服务器对目标元数据进行操作,减少了节点之间的开销,提高了访问目标元数据的访问效率。
请参见图10,图10是本发明实施例提供的一种分布式文件系统100的结构示意图,该分布式文件系统100包括第一客户端83、目录锁服务器84和第二客户端85,其中:
第一客户端83在请求访问目标目录中的第一目标元数据时向目录锁服务器84发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
所述目录锁服务器84接收所述第一客户端83发送的第一申请消息,并判断所述目标目录中所有元数据的排它访问权限是否授予了第二客户端85;
若所述目标目录中所有元数据的排它访问权限未授予所述第二客户端85,则所述目录锁服务器84将所述目标目录中所有元数据的排它访问权限授予所述第一客户端83,并向所述第一客户端发送通知消息以通知所述目标目录中所有元数据的排它访问权限授予所述第一客户端;
所述第一客户端83接收所述通知消息,并根据所述通知消息访问所述第一目标元数据。
进一步地,分布式文件系统100中的第一客户端83可以参照上述图8所示的实施例描述的终端80,目录锁服务器84可以参照图9所示实施例中描述的终端90,此处均不再赘述。
通过运行该分布式文件系统100,第一客户端83访问目标目录中的第一目标元数据时,一次性向目录锁服务器84申请目标目录中的所有元数据的排它访问权限,这样一来,第一客户端83就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
请参见图11,图11是本发明实施例提供的又一种终端110的结构示意图;该终端110为以下描述的第一客户端110,该终端110包括申请单元1101和第一访问单元1103,各个单元的描述如下:
申请单元1101用于在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
第一访问单元1103用于在所述申请单元1101申请到对所述目标目录中所有元数据的排它访问权限时,访问所述第一目标元数据。
作为一种可选的方案,所述第一访问单元1103还用于在所述申请单元1101未申请到对所述目标目录中所有元数据的排它访问权限时,接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息向所述第二客户端发送请求消息以通过所述第二客户端访问所述目标目录中的元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
作为一种可选的方案,所述申请单元1101包括获取子单元、判断子单元和申请子单元,其中:
获取子单元,用于获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
判断子单元,用于根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
申请子单元,用于在判断子单元的判断结果为是时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
作为一种可选的方案,所述终端110还包括:
接收单元,用于接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一访问单元1103访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息;
发送单元,用于根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果发送给所述第三客户端。
作为一种可选的方案,所述终端110还包括:
第二访问单元,用于在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
则按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
作为一种可选的方案,所述第一访问单元1103包括:
请求子单元,用于向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
第一接收子单元,用于接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
第一发送子单元,用于向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
第二接收子单元,用于接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
作为一种可选的方案,所述第一访问单元1103包括:
第二发送子单元,用于向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端;
第三接收子单元,用于接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端;
申请子单元,用于向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限;
第四接收子单元,用于接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
操作子单元,用于根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
作为一种可选的方案,所述终端110还包括:
判断单元,用于判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
释放单元,用于在所述判断单元的判断结果为是时,端释放所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
终端(第一客户端)110访问元数据的原理还可以参照图3~7对应的方发实施例的相应描述,此处不再赘述。
在图11所示的终端110中,第一客户端(终端)110访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中的所有元数据的排它访问权限这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
请参见图12,图12是本发明实施例提供的又一种终端120,该终端120为以下描述的目录锁服务器120,该终端120包括第一接收单元1201、判断单元1202和第一授予单元1203,其中,各个单元的描述如下。
第一接收单元1201用于在第一客户端访问目标目录中的目标元数据时,接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
判断单元1202用于根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
第一授予单元1203用于在所述判断单元1202的判断结果为否时,将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;在所述判断单元1202的判断结果为是时,向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
作为一种可选的方案,所述终端120还包括:
第二接收单元,用于在第三客户端访问所述目标元数据时,接收所述第三客户端发送的所述第一申请消息;
第一发送单元,用于向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
作为一种可选的方案,所述终端120还包括:
第三接收单元,用于接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
第二授予单元,用于根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
作为一种可选的方案,所述第一授予单元1203在所述判断单元1202的判断结果为否时,将所述目标目录中所有元数据的排它访问权限授予所述第一客户端以使所述第一客户端访问所述目标目录中的元数据之后,所述终端120还包括:
第四接收单元,用于接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
第三授予单元,用于根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作,其中,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
终端(目录锁服务器)120访问元数据的原理还可以参照图3~7对应的方发实施例的相应描述,此处不再赘述。
在图12所示的终端120中,第一客户端访问目标目录中的目标元数据时,一次性向目录锁服务器申请目标目录中的所有元数据的访问权限,这样一来,第一客户端就可以顺利访问目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
综上所述,通过实施本发明实施例,第一客户端访问目标目录中的第一目标元数据时,一次性向目录锁服务器申请目标目录中的所有元数据的排它访问权限,这样一来,第一客户端就可以顺利访问第一目标元数据,并且后续访问目标目录中其他元数据时不需要再重新申请访问权限,节省了维护缓存一致性的开销。
进一步地,第一客户端获取到目标目录中所有元数据的排它访问权限后,如果第三客户端有访问目标目录中第一目标元数据的需求,则第三客户端将访问请求发送至第一客户端,通过第一客户端访问该第一目标元数据,保证了申请不到目标目录中所有元数据的排它访问权限的客户端也都能正常地访问第一目标元数据;目标元数据服务器接收到第一客户端发送的访问目标目录下的第一目标元数据的请求后,在对第一目标元数据进行操作之前,先向目录锁服务器申请目标目录中所有元数据的排它操作权限,使得所有的元数据服务器中始终只有一个元数据服务器具备对目标目录的操作权限,保证了目标目录下的元数据的持久化保存一致性;进一步地,第一客户端同时充当客户端和元数据服务器的功能,第一客户端获取到目标目录中所有元数据的排它访问权限后,不需要与远端的元数据服务器进行交互来请求元数据服务器对第一目标元数据进行操作,减少了节点之间的开销,提高了访问第一目标元数据的访问效率;再进一步地,第一客户端上的负载过高时,自动释放目标目录中所有元数据的排它访问权限,让负载较低的第四客户端来获取该目标目录中所有元数据的排它访问权限以达到分担负载的目的;或者在第一客户端访问目标目录中的元数据的频率比其他客户端访问目标目录中的元数据的频率低时,自动释放目标目录中所有元数据的排它访问权限,让访问频率较高的客户端获取目标目录中所有元数据的排它访问权限,以减少转发访问所产生的负载,提高了访问目标目录中元数据的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可以对其进行修改和各种组合。相应地,本说明书和附图仅仅是所附权利要求书所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。

Claims (26)

1.一种元数据访问方法,其特征在于,包括:
第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据。
2.根据权利要求1所述的方法,其特征在于,当所述第一客户端未申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息向所述第二客户端发送请求消息以通过所述第二客户端访问所述第一目标元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
3.根据权利要求1或2所述的方法,其特征在于,所述第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限包括:
第一客户端在请求访问目标目录中的第一目标元数据时,获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
若是,则向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息;
所述第一客户端根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果发送给所述第三客户端。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
则所述第一客户端按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
6.根据权利要求1~5任一项所述的方法,其特征在于,所述第一客户端访问所述第一目标元数据包括:
所述第一客户端向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
所述第一客户端接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
所述第一客户端向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
所述第一客户端接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
7.根据权利要求1~5任一项所述的方法,其特征在于,所述第一客户端访问所述第一目标元数据包括:
所述第一客户端向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端;
所述第一客户端接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端;
所述第一客户端向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限;
所述第一客户端接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
所述第一客户端根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
8.根据权利要求1、2、3、6或7所述的方法,其特征在于,所述当所述第一客户端申请到对所述目标目录中所有元数据的排它访问权限时,所述第一客户端访问所述第一目标元数据之后,所述方法还包括:
所述第一客户端判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
若满足,则所述第一客户端释放所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
9.一种元数据访问方法,其特征在于,包括:
目录锁服务器在第一客户端访问目标目录中的目标元数据时,接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
所述目录锁服务器根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问所述目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;若授予了所述第二客户端,则所述目录锁服务器向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
10.根据权利要求9所述的方法,其特征在于,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器在第三客户端访问所述目标元数据时,接收所述第三客户端发送的所述第一申请消息;
所述目录锁服务器向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
11.根据权利要求9或10所述的方法,其特征在于,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
所述目录锁服务器根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
12.根据权利要求9或10所述的方法,其特征在于,所述若未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述方法还包括:
所述目录锁服务器接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
所述目录锁服务器根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作,其中,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
13.一种终端,其特征在于,所述终端为第一客户端,所述第一客户端包括发送装置、接收装置、存储器和处理器,所述处理器调用所述存储器中的访问元数据的程序,用于来执行如下操作:
在请求访问目标目录中的第一目标元数据时,通过所述发送装置向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述处理器当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述处理器访问所述目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
当申请到对所述目标目录中所有元数据的排它访问权限时,访问所述第一目标元数据。
14.根据权利要求13所述的终端,其特征在于,当未申请到对所述目标目录中所有元数据的排它访问权限时,通过所述接收装置接收所述目录锁服务器发送的第二客户端所在的节点信息,并根据所述节点信息通过所述发送装置向所述第二客户端发送请求消息以通过所述第二客户端访问所述第一目标元数据,所述第二客户端为向所述目录锁服务器申请到了对所述目标目录中所有元数据的排它访问权限的客户端。
15.根据权利要求13或14所述的终端,其特征在于,所述在请求访问目标目录中的第一目标元数据时,通过所述发送装置向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限的方式,具体为:
获取描述所述目标目录的元数据,所述描述所述目标目录的元数据设有用于标识所述目标目录是否为存储有多个元数据的目录的标识信息;
根据所述描述所述目标目录的元数据来判断所述目标目录是否为存储有多个元数据的目录;
若是,则通过所述发送装置向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限。
16.根据权利要求13~15任一项所述的终端,其特征在于,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理访问所述第一目标元数据之后,所述处理器还用于:
通过所述接收装置接收第三客户端发送的请求消息,所述请求消息用于请求通过所述第一客户端访问所述第一目标元数据,所述请求消息为所述第三客户端向所述目录锁服务器申请对所述目标目录中所有元数据的排它访问权限,并接收到所述目录锁服务器返回的所述第一客户端的节点信息后,根据所述第一客户端的节点信息向所述第一客户端发送的消息;
根据所述请求消息访问所述第一目标元数据,并将访问所述第一目标元数据的访问结果通过所述发送装置发送给所述第三客户端。
17.根据权利要求13~16任一项所述的终端,其特征在于,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器访问所述第一目标元数据之后,所述处理器还用于:
在请求访问所述目标目录中的第二目标元数据时,如果第二目标元数据属于所述目标目录中除所述第一目标元数据之外的元数据;
则所述处理器按照已获得的对所述第二目标元数据的排它访问权限,对所述第二目标元数据进行访问。
18.根据权利要求13~17任一项所述的终端,其特征在于,所述处理器访问所述第一目标元数据的方式具体为:
向元数据路由服务器请求所述目标目录的归属信息,所述元数据路由服务器预存有目录的归属信息;
通过所述接收装置接收所述元数据路由服务器发送的所述目标目录的归属信息,所述目标目录的归属信息用于指示所述目标目录的操作权限归属到目标元数据服务器;
通过所述发送装置向所述目标元数据服务器发送操作请求消息,请求所述目标元数据服务器根据所述对所述目标目录中所有元数据的排它访问权限操作所述第一目标元数据;
通过所述接收装置接收所述目标元数据服务器发送的操作结果;所述操作结果为所述目标元数据服务器向所述目录锁服务器申请到对所述目标目录中所有元数据的排它操作权限后,对所述第一目标元数据进行操作的结果。
19.根据权利要求13~17任一项所述的终端,其特征在于,所述处理器访问所述第一目标元数据的方式具体为:
通过所述发送装置向元数据路由服务器发送切换消息,指示所述元数据路由服务器将所述目标目录的操作权限归属到所述第一客户端;
通过所述接收装置接收所述元数据路由服务器发送的通知消息,所述通知消息用于指示所述目标目录的操作权限归属到所述第一客户端;
通过所述发送装置向所述目录锁服务器发送第二申请消息以申请对所述目标目录中所有元数据的排它操作权限;
通过所述接收装置接收所述目录锁服务器发送的授予所述目标目录中所有元数据的排它操作权限的授予消息,所述目标目录中所有元数据的排它操作权限用于供第一客户端操作所述目标目录中的第一目标元数据,以及操作所述目标目录中除所述第一目标元数据之外的元数据;
根据所述目标目录中所有元数据的排它操作权限对所述第一目标元数据进行操作,获得操作结果。
20.根据权利要求13、14、15、18或19所述的终端,其特征在于,当申请到对所述目标目录中所有元数据的排它访问权限时,所述处理器访问所述第一目标元数据之后,所述处理器还用于:
判断访问所述目标目录中的元数据所产生的负载是否满足预设条件;
若满足,则释放对所述目标目录中的所有元数据的排它访问权限,以便所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予第四客户端。
21.一种终端,其特征在于,所述终端为目录锁服务器,所述目录锁服务器包括发送装置、接收装置、存储器和处理器,所述处理器调用所述存储器中的访问元数据的程序,用于执行如下操作:
在第一客户端访问目标目录中的目标元数据时,通过所述接收装置接收所述第一客户端发送的第一申请消息,所述第一申请消息用于申请对所述目标目录中所有元数据的排它访问权限,所述目标目录为存储有多个元数据的目录,所述目标元数据为所述第一客户端当前需要访问的元数据;
根据所述第一申请消息判断所述目标目录中所有元数据的排它访问权限是否已经授予了第二客户端,所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问目标目录中的目标元数据,以及访问所述目标目录中除所述目标元数据之外的元数据;
若未授予所述第二客户端,则将所述目标目录中所有元数据的排它访问权限授予所述第一客户端;若授予了所述第二客户端,则通过所述发送装置向所述第一客户端发送所述第二客户端所在的节点信息,以使所述第一客户端基于所述第二客户端所在的节点信息通过所述第二客户端访问所述目标元数据。
22.根据权利要求21所述的终端,其特征在于,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
在第三客户端访问所述目标元数据时,通过接收装置接收所述第三客户端发送的所述第一申请消息;
通过所述发送装置向所述第三客户端发送所述第一客户端所在的节点信息,以使所述第三客户端基于所述第一客户端所在的节点信息通过所述第一客户端访问所述目标元数据。
23.根据权利要求21或22所述的终端,其特征在于,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
通过所述接收装置接收目标元数据服务器发送的第二申请消息,所述第二申请消息为所述目标元数据服务器接收到所述第一客户端访问所述目标元数据时发送的操作消息时发送的,用于申请对所述目标目录中所有元数据的排它操作权限的消息;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述目标元数据服务器,以使所述目标元数据服务器对所述目标元数据进行操作并将操作结果反馈给所述第一客户端,其中,所述目标目录中所有元数据的排它操作权限用于供所述目标元数据服务器操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
24.根据权利要求21或22所述的终端,其特征在于,若未授予所述第二客户端,所述处理器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端之后,所述处理器还用于:
通过所述接收装置接收所述第一客户端发送的第二申请消息,所述第二申请消息用于申请对所述目标目录中所有元数据的排它操作权限;
根据所述第二申请消息将所述目标目录中所有元数据的排它操作权限授予所述第一客户端,以使所述第一客户端对所述目标元数据进行操作,其中,所述目标目录中所有元数据的排它操作权限用于供所述第一客户端操作所述目标目录中的目标元数据,以及操作所述目标目录中除所述目标元数据之外的元数据。
25.一种分布式文件系统,其特征在于,包括第一客户端、第二客户端和目录锁服务器,其中:
所述第一客户端在请求访问目标目录中的第一目标元数据时,向目录锁服务器发送第一申请消息以申请对所述目标目录中所有元数据的排它访问权限,其中,所述目标目录为存储有多个元数据的目录,所述第一目标元数据为所述第一客户端当前需要访问的元数据;所述目标目录中所有元数据的排它访问权限用于供所述第一客户端访问目标目录中的第一目标元数据,以及访问所述目标目录中除所述第一目标元数据之外的元数据;
所述目录锁服务器接收所述第一客户端发送的第一申请消息,并判断所述目标目录中所有元数据的排它访问权限是否授予了第二客户端;
若所述目标目录中所有元数据的排它访问权限未授予所述第二客户端,则所述目录锁服务器将所述目标目录中所有元数据的排它访问权限授予所述第一客户端,并向所述第一客户端发送通知消息以通知所述目标目录中所有元数据的排它访问权限授予所述第一客户端;
所述第一客户端接收所述通知消息,并根据所述通知消息访问所述第一目标元数据。
26.根据权利要求25所述的系统,其特征在于,
所述第一客户端为权利要求13~20任一项所述的终端;
所述目录锁服务器为权利要求21~24任一项所述的终端。
CN201510888579.4A 2015-12-04 2015-12-04 一种元数据访问方法、相关设备及系统 Active CN105512279B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201510888579.4A CN105512279B (zh) 2015-12-04 2015-12-04 一种元数据访问方法、相关设备及系统
PCT/CN2016/107979 WO2017092673A1 (zh) 2015-12-04 2016-11-30 一种元数据访问方法、相关设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510888579.4A CN105512279B (zh) 2015-12-04 2015-12-04 一种元数据访问方法、相关设备及系统

Publications (2)

Publication Number Publication Date
CN105512279A true CN105512279A (zh) 2016-04-20
CN105512279B CN105512279B (zh) 2019-05-03

Family

ID=55720261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510888579.4A Active CN105512279B (zh) 2015-12-04 2015-12-04 一种元数据访问方法、相关设备及系统

Country Status (2)

Country Link
CN (1) CN105512279B (zh)
WO (1) WO2017092673A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017092673A1 (zh) * 2015-12-04 2017-06-08 华为技术有限公司 一种元数据访问方法、相关设备及系统
CN109510846A (zh) * 2017-09-14 2019-03-22 北京金山云网络技术有限公司 Api调用系统、方法、装置、电子设备及存储介质
CN110347650A (zh) * 2019-07-16 2019-10-18 北京明略软件系统有限公司 一种元数据采集方法及装置
CN110941591A (zh) * 2019-11-22 2020-03-31 浪潮电子信息产业股份有限公司 一种文件删除方法、装置、设备及可读存储介质
CN111046001A (zh) * 2019-12-28 2020-04-21 浪潮电子信息产业股份有限公司 一种批量创建文件的方法、装置、设备及存储介质
CN111049779A (zh) * 2018-10-12 2020-04-21 伊姆西Ip控股有限责任公司 信息处理方法、电子设备以及计算机程序产品
CN115250270A (zh) * 2022-07-28 2022-10-28 中国银行股份有限公司 基于5g消息的文件申请方法及相关设备
CN117591038A (zh) * 2024-01-18 2024-02-23 济南浪潮数据技术有限公司 一种数据访问方法、装置、分布式存储系统及设备和介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112449018A (zh) * 2020-11-25 2021-03-05 杭州视洞科技有限公司 一种基于端侧的多机房数据同步与部署方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101375250A (zh) * 2006-02-03 2009-02-25 甲骨文国际公司 自适应区域锁定
US20110173356A1 (en) * 2010-01-08 2011-07-14 Vasantha Prabhu Exclusive access during a critical sub-operation to enable simultaneous operations
CN103501339A (zh) * 2013-09-30 2014-01-08 华为技术有限公司 元数据处理方法及元数据服务器
CN104113587A (zh) * 2014-06-23 2014-10-22 华中科技大学 一种分布式文件系统客户端元数据缓存优化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512279B (zh) * 2015-12-04 2019-05-03 华为技术有限公司 一种元数据访问方法、相关设备及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101375250A (zh) * 2006-02-03 2009-02-25 甲骨文国际公司 自适应区域锁定
US20110173356A1 (en) * 2010-01-08 2011-07-14 Vasantha Prabhu Exclusive access during a critical sub-operation to enable simultaneous operations
CN103501339A (zh) * 2013-09-30 2014-01-08 华为技术有限公司 元数据处理方法及元数据服务器
CN104113587A (zh) * 2014-06-23 2014-10-22 华中科技大学 一种分布式文件系统客户端元数据缓存优化方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017092673A1 (zh) * 2015-12-04 2017-06-08 华为技术有限公司 一种元数据访问方法、相关设备及系统
CN109510846A (zh) * 2017-09-14 2019-03-22 北京金山云网络技术有限公司 Api调用系统、方法、装置、电子设备及存储介质
CN109510846B (zh) * 2017-09-14 2020-11-03 北京金山云网络技术有限公司 Api调用系统、方法、装置、电子设备及存储介质
CN111049779A (zh) * 2018-10-12 2020-04-21 伊姆西Ip控股有限责任公司 信息处理方法、电子设备以及计算机程序产品
CN111049779B (zh) * 2018-10-12 2022-04-26 伊姆西Ip控股有限责任公司 信息处理方法、电子设备以及计算机可读介质
CN110347650A (zh) * 2019-07-16 2019-10-18 北京明略软件系统有限公司 一种元数据采集方法及装置
CN110941591A (zh) * 2019-11-22 2020-03-31 浪潮电子信息产业股份有限公司 一种文件删除方法、装置、设备及可读存储介质
CN111046001A (zh) * 2019-12-28 2020-04-21 浪潮电子信息产业股份有限公司 一种批量创建文件的方法、装置、设备及存储介质
CN111046001B (zh) * 2019-12-28 2023-03-14 浪潮电子信息产业股份有限公司 一种批量创建文件的方法、装置、设备及存储介质
CN115250270A (zh) * 2022-07-28 2022-10-28 中国银行股份有限公司 基于5g消息的文件申请方法及相关设备
CN115250270B (zh) * 2022-07-28 2024-02-23 中国银行股份有限公司 基于5g消息的文件申请方法及相关设备
CN117591038A (zh) * 2024-01-18 2024-02-23 济南浪潮数据技术有限公司 一种数据访问方法、装置、分布式存储系统及设备和介质

Also Published As

Publication number Publication date
WO2017092673A1 (zh) 2017-06-08
CN105512279B (zh) 2019-05-03

Similar Documents

Publication Publication Date Title
CN105512279A (zh) 一种元数据访问方法、相关设备及系统
US8069224B2 (en) Method, equipment and system for resource acquisition
US8069269B2 (en) Methods and apparatus for accessing content in a virtual pool on a content addressable storage system
US10341367B1 (en) System and method for inquiring IOC information by P2P protocol
US7958200B2 (en) Methods, computer program products, and apparatuses for providing remote client access to exported file systems
US10831612B2 (en) Primary node-standby node data transmission method, control node, and database system
JP5584910B2 (ja) 分散ストレージ
CN104954468A (zh) 资源的分配方法及装置
CN106933548B (zh) 全局信息获取、处理及更新、方法、装置和系统
CN106933550B (zh) 全局信息获取、处理及更新方法、装置和系统
CN107391758A (zh) 数据库切换方法、装置及设备
CN110069210B (zh) 一种存储系统、存储资源的分配方法及装置
CN109302448B (zh) 一种数据处理方法及装置
US20230239675A1 (en) Application context relocation method and apparatus
US20190372825A1 (en) Communication apparatus, communication method, and recording medium
KR102016417B1 (ko) 분산 파일 시스템을 채용한 스토리지 시스템에서 클라이언트 장치와 함께 파일의 분산 잠금을 관리하도록 구성되는 데이터 서버 장치
US11010410B1 (en) Processing data groupings belonging to data grouping containers
CN104102557A (zh) 一种基于聚类的云计算平台数据备份方法
CN111212138B (zh) 一种跨站点存储系统及数据信息访问方法
CN105022796B (zh) 一种文件遍历方法、装置及系统
CN111857548B (zh) 数据读取方法、装置及系统
CN113905252A (zh) 直播间的数据存储方法、装置、电子设备及存储介质
CN114764403A (zh) 一种数据迁移方法、装置、设备及存储介质
KR102033383B1 (ko) 분산데이터 환경에서의 데이터 관리방법 및 시스템
CN114579514B (zh) 一种基于多计算节点的文件处理方法、装置及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant