掌桥专利:专业的专利平台
掌桥专利
首页

一种元数据多并发控制方法、系统及相关组件

文献发布时间:2023-06-19 19:33:46


一种元数据多并发控制方法、系统及相关组件

技术领域

本发明涉及分布式系统领域,特别涉及一种元数据多并发控制方法、系统及相关组件。

背景技术

随着人工智能、互联网技术的发展,在交通卡口、医疗、银行、地质检测等领域,数据存储量越来越大,同时对文件系统的性能要求也越来越高。海量文件的存储在读写文件时,对于文件系统的元数据处理能力要求越来越高,加之互联网技术的推动,如何确保读写一致性已经成为分布式文件系统的关键技术。

目前,读写一致性的确保措施主要为使用客户端大锁进行资源管控,即在文件系统客户端使用一把锁对全局资源进行管控,无论是元数据处理还是数据处理,亦或是多文件并发处理,都由一把锁管控,这样确实能够保证读写一致性,但会导致所有客户端的操作都在竞争此锁,使得上层的多线程并发严重缩减,操作线程出现较大的锁等待耗时,严重阻塞客户端操作的并发性,使整个系统的性能严重下降。

因此,如何提供一种解决上述技术问题的方案是目前本领域技术人员需要解决的问题。

发明内容

有鉴于此,本发明的目的在于提供一种高并发的元数据多并发控制方法、系统及相关组件。其具体方案如下:

一种元数据多并发控制方法,包括:

根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

当收到目标操作请求,根据所述目标操作请求添加对应的所述锁结构;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当任一所述锁结构对应收到的所有所述目标操作请求均完成,对所述锁结构进行解锁。

优选的,所述根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构的过程,包括:

根据分布式文件结构中元数据文件之间的互斥关系,确定与所述元数据文件一一对应的多个文件锁结构;

根据元数据操作请求之间的互斥关系,确定与所述元数据操作请求一一对应的多个请求锁结构。

优选的,所述文件锁结构的优先级高于所述请求锁结构。

优选的,所述根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:

创建对应客户端资源的客户端锁结构。

优选的,所述请求锁结构的优先级高于所述客户端锁结构。

优选的,所述按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求的过程,包括:

对所有所述目标操作请求引用的指针进行指针计数;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当所述指针计数为零,对所述指针进行删除操作。

优选的,所述当所述指针计数为零,对所述指针进行删除操作的过程,包括:

当所述指针计数为零,等待延时时间段后对所述指针进行删除操作。

相应的,本申请还公开了一种元数据多并发控制系统,包括:

确定模块,用于根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

加锁模块,用于当收到目标操作请求,根据所述目标操作请求添加对应的所述锁结构;

执行模块,用于按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

解锁模块,用于当任一所述锁结构对应收到的所有所述目标操作请求均完成,对所述锁结构进行解锁。

相应的,本申请还公开了一种电子设备,包括:

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

处理器,用于执行所述计算机程序时实现如上文任一项所述元数据多并发控制方法的步骤。

相应的,本申请还公开了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上文任一项所述元数据多并发控制方法的步骤。

本申请公开了一种元数据多并发控制方法,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

附图说明

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

图1为本发明实施例中一种元数据多并发控制方法的步骤流程图;

图2为本发明实施例中一种分布式文件系统的映射关系图;

图3为本发明实施例中一种元数据多并发控制系统的结构分布图;

图4为本发明实施例中一种电子设备的结构分布图;

图5为本发明实施例中一种可读存储介质的结构分布图。

具体实施方式

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

客户端大锁确实能够保证读写一致性,但会导致所有客户端的操作都在竞争此锁,使得上层的多线程并发严重缩减,操作线程出现较大的锁等待耗时,严重阻塞客户端操作的并发性,使整个系统的性能严重下降。

本申请公开了一种元数据多并发控制方法,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

本发明实施例公开了一种元数据多并发控制方法,参见图1所示,包括:

S1:根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

S2:当收到目标操作请求,根据目标操作请求添加对应的锁结构;

S3:按照串行方式执行同一个锁结构当前对应收到的所有目标操作请求;

S4:当任一锁结构对应收到的所有目标操作请求均完成,对锁结构进行解锁。

具体的,本实施例中步骤S1中确定了多个锁结构,该锁结构用于为不同的线程加锁,以保证线程操作过程中操作对象的一致性,本实施例中确定了多个锁结构,每个锁结构对应一定的锁范围,相比于现有技术中使用的唯一客户端大锁,多个锁结构对应的锁范围相应降低,在某个锁结构对线程加锁时,其他锁结构对应的对象并未被加锁,可以与当前加锁的线程对应的操作并发进行,由于多个锁结构的对象之间耦合度降低,整个系统中线程操作的可并发能力提高,也即整体分布式文件系统的并发性能增高。

进一步的,步骤S1中根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构的过程,包括:

根据分布式文件结构中元数据文件之间的互斥关系,确定与元数据文件一一对应的多个文件锁结构;

根据元数据操作请求之间的互斥关系,确定与元数据操作请求一一对应的多个请求锁结构。

可以理解的是,本实施例中锁结构从两个维度上进行确定,其中在分布式文件结构的维度,根据该维度上每个元数据文件的互斥关系,可确定多个互斥的文件锁结构inode_lock,每个文件锁结构inode_lock与每个元数据文件一一对应;类似的,在分布式文件请求的维度,根据该维度上元数据操作请求之间的互斥关系,可确定多个请求锁结构request_lock,每个请求锁结构request_lock与每个元数据操作请求一一对应。

可以理解的是,除了文件锁结构inode_lock和请求锁结构request_lock外,还可以增加其他维度的锁结构,例如分布式文件系统中客户端资源对应的客户端锁结构client_lock,客户端资源为相对于分布式文件系统存储节点外的公共资源,可由客户端锁结构client_lock进行管理控制,因此,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:

创建对应客户端资源的客户端锁结构client_lock。

可以理解的是,具体的锁结构的类型选择、粒度设置、对象设置,可根据分布式文件系统中元数据并发控制规律进行调整,只要保证同一维度的锁结构互斥、同一维度的锁结构对应的对象互斥即可。

进一步的,目标操作请求包括且不限于查看、读取、创建、重命名、取消链接,步骤S2-S4为对于锁结构的应用。具体的,在收到目标操作请求后,根据目标操作请求添加对应的锁结构,根据锁结构的特性,同一个锁结构下对应的所有目标操作请求必须按照串行的方式依次执行,从而确保分布式系统中目标操作请求被执行过程中的读写一致性。

可以理解的是,对于一个已添加的锁结构,如果其对应收到的目标操作请求正在执行过程中,则保持锁状态,保持锁状态时可能还会收到新的目标操作请求,同样的,新的目标操作请求将安排在串行执行的操作顺序中。锁状态的解除,也即对锁结构进行解锁的动作,发生在保持锁状态的锁结构对应的所有目标操作请求均完成的前提下,当任一锁结构对应的所有目标操作请求均完成,则对该锁结构进行解锁,如果存在未完成的目标总操作请求,则保持锁状态。

本申请公开了一种元数据多并发控制方法,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

本发明实施例公开了一种具体的元数据多并发控制方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。

具体的,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构的过程,包括:

根据分布式文件结构中元数据文件之间的互斥关系,确定与元数据文件一一对应的多个文件锁结构inode_lock;

根据元数据操作请求之间的互斥关系,确定与元数据操作请求一一对应的多个请求锁结构request_lock。

可以理解的是,为了提高元数据并发,将客户端大锁在元数据文件结构维度细化为多个文件锁结构inode_lock,每个元数据文件对应的Inode结构体具有唯一的锁结构。文件锁结构inode_lock取代客户端大锁实现元数据文件的inode元数据的管控,每个文件锁结构inode_lock管理每个元数据文件的元数据资源,包括inode结构体中元素变量的增删改茶,文件锁结构inode_lock之间互相独立,从而实现元数据文件之间的元数据并发。

可以理解的是,为了提高元数据请求的并发性,将客户端大锁在元数据操作请求维度细化为多个请求锁结构request_lock,每个元数据操作请求对应唯一的锁结构。请求锁结构request_lock取代客户端大锁实现元数据请求类的数据资源的管控,具体包括元数据请求结构体Metarequest中的元素变量的增删改查,请求锁结构request_lock之间相互独立,可以实现元数据请求之间的并发。

可以理解的是,如图2所示,客户端、元数据文件和元数据操作请求之间的映射关系如图。文件锁结构inode_lock和请求锁结构request_lock中,文件锁结构inode_lock实现了元数据文件之间的元数据并发,是元数据文件对客户端大锁的公共竞争降级为仅在同一元数据文件内部的文件锁竞争,客户端大锁的竞争程度降低,同时消除了元数据文件之间的所竞争,实现了元数据文件之间的元数据并发处理;请求锁结构request_lock实现了元数据操作请求的并发,将元数据请求对客户端大锁的公共竞争降级为同一请求内部的锁竞争,解除了对客户端大锁的竞争依赖,使得元数据操作请求可以按照请求粒度进行。

可以理解的是,文件锁结构inode_lock实现了元数据文件粒度并发,请求锁结构request_lock实现了请求粒度并发。对于同一个元数据文件,如果存在多个元数据操作请求,多个元数据操作请求将按照串行执行,同时执行前需要先对元数据文件进行处理,因此需要加上文件锁结构inode_lock,因此对于同文件多请求,请求将串行执行,对于多文件多请求,按照一文件一请求的原则,按照文件粒度进行并发处理。

具体的,文件锁结构inode_lock和请求锁结构request_lock都是mutex类型的互斥锁,文件锁结构inode_lock在确定后随着inode结构体一起初始化,请求锁结构request_lock在元数据操作请求获取到客户端唯一id之后初始化。

可以理解的是,inode结构体中的元素进行增删改查操作之前均需要加上文件锁结构inode_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元素数据导致数据不一致的问题;Metarequest的元素进行增删改查操作之前均需要加上请求锁结构request_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元数据导致数据不一致的问题。

进一步的,文件锁结构inode_lock的优先级高于请求锁结构request_lock。

可以理解的是,前期的元数据处理中主要使用文件锁结构inode_lock,中间涉及到元数据操作请求时文件锁结构inode_lock和请求锁结构request_lock进行嵌套处理,后期请求应答处理的时候主要使用文件锁结构inode_lock,文件锁结构inode_lock和请求锁结构request_lock对应的数据相互独立又相互嵌套。具体的,文件锁结构inode_lock的优先级高于请求锁结构request_lock,如果元数据文件上已经加有请求锁结构request_lock,而现在又需要增加文件锁结构inode_lock,需要对原有请求锁结构request_lock解锁,然后添加文件锁结构inode_lock,再重新添加请求锁结构request_lock。

进一步的,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:创建对应客户端资源的客户端锁结构client_lock。

此时,请求锁结构request_lock的优先级高于客户端锁结构client_lock,总的优先级包括:文件锁结构inode_lock高于请求锁结构request_lock,请求锁结构request_lock高于客户端锁结构client_lock。

例如在已添加客户端锁结构client_lock时,又需要添加文件锁结构inode_lock,则先对客户端锁结构client_lock解锁,然后添加文件锁结构inode_lock,再重新添加客户端锁结构client_lock,其他场景的锁添加方式类似,均按照优先级进行。

本发明实施例公开了一种具体的元数据多并发控制方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。

具体的,为了避免在高并发的目标操作请求的执行过程中指针对象被意外或提前删除导致出现野指针,可通过对引用的指针进行提前技术、延迟删除等操作,来降低野指针出现的可能性。

具体的,按照串行方式执行同一个所述锁结构当前对应收到的所有目标操作请求的过程,包括:

对所有目标操作请求引用的指针进行指针计数;

按照串行方式执行同一个所述锁结构当前对应收到的所有目标操作请求;

当指针计数为零,对指针进行删除操作。

进一步的,当指针计数为零,对指针进行删除操作的过程,包括:

当指针计数为零,等待延时时间段后对指针进行删除操作。

可以理解的是,对引用的指针的引用次数进行指针计数,可避免数据结构的析构导致的野指针问题,同时将指针计数为零的指针添加到延时队列中,使用定时线程触发进行延迟删除,双重措施确保了了野指针问题的消除。

相应的,本申请实施例还公开了一种元数据多并发控制系统,参见图3所示,包括:

确定模块1,用于根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

加锁模块2,用于当收到目标操作请求,根据所述目标操作请求添加对应的所述锁结构;

执行模块3,用于按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

解锁模块4,用于当任一所述锁结构对应收到的所有所述目标操作请求均完成,对所述锁结构进行解锁。

本申请公开了一种元数据多并发控制系统,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

在一些具体的实施例中,所述确定模块1根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构的过程,包括:

根据分布式文件结构中元数据文件之间的互斥关系,确定与所述元数据文件一一对应的多个文件锁结构;

根据元数据操作请求之间的互斥关系,确定与所述元数据操作请求一一对应的多个请求锁结构。

在一些具体的实施例中,所述文件锁结构的优先级高于所述请求锁结构。

在一些具体的实施例中,所述确定模块1根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:

创建对应客户端资源的客户端锁结构client_lock。

在一些具体的实施例中,所述请求锁结构的优先级高于所述客户端锁结构client_lock。

在一些具体的实施例中,所述执行模块3按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求的过程,包括:

对所有所述目标操作请求引用的指针进行指针计数;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当所述指针计数为零,对所述指针进行删除操作。

在一些具体的实施例中,所述当所述指针计数为零,对所述指针进行删除操作的过程,包括:

当所述指针计数为零,等待延时时间段后对所述指针进行删除操作。

具体的,本实施例中确定了多个锁结构,该锁结构用于为不同的线程加锁,以保证线程操作过程中操作对象的一致性,本实施例中确定了多个锁结构,每个锁结构对应一定的锁范围,相比于现有技术中使用的唯一客户端大锁,多个锁结构对应的锁范围相应降低,在某个锁结构对线程加锁时,其他锁结构对应的对象并未被加锁,可以与当前加锁的线程对应的操作并发进行,由于多个锁结构的对象之间耦合度降低,整个系统中线程操作的可并发能力提高,也即整体分布式文件系统的并发性能增高。

可以理解的是,本实施例中锁结构从两个维度上进行确定,其中在分布式文件结构的维度,根据该维度上每个元数据文件的互斥关系,可确定多个互斥的文件锁结构inode_lock,每个文件锁结构inode_lock与每个元数据文件一一对应;类似的,在分布式文件请求的维度,根据该维度上元数据操作请求之间的互斥关系,可确定多个请求锁结构request_lock,每个请求锁结构request_lock与每个元数据操作请求一一对应。

可以理解的是,除了文件锁结构inode_lock和请求锁结构request_lock外,还可以增加其他维度的锁结构,例如分布式文件系统中客户端资源对应的客户端锁结构client_lock,客户端资源为相对于分布式文件系统存储节点外的公共资源,可由客户端锁结构client_lock进行管理控制。

可以理解的是,具体的锁结构的类型选择、粒度设置、对象设置,可根据分布式文件系统中元数据并发控制规律进行调整,只要保证同一维度的锁结构互斥、同一维度的锁结构对应的对象互斥即可。

进一步的,目标操作请求包括且不限于查看、读取、创建、重命名、取消链接。具体的,在收到目标操作请求后,根据目标操作请求添加对应的锁结构,根据锁结构的特性,同一个锁结构下对应的所有目标操作请求必须按照串行的方式依次执行,从而确保分布式系统中目标操作请求被执行过程中的读写一致性。

可以理解的是,对于一个已添加的锁结构,如果其对应收到的目标操作请求正在执行过程中,则保持锁状态,保持锁状态时可能还会收到新的目标操作请求,同样的,新的目标操作请求将安排在串行执行的操作顺序中。锁状态的解除,也即对锁结构进行解锁的动作,发生在保持锁状态的锁结构对应的所有目标操作请求均完成的前提下,当任一锁结构对应的所有目标操作请求均完成,则对该锁结构进行解锁,如果存在未完成的目标总操作请求,则保持锁状态。

可以理解的是,为了提高元数据并发,将客户端大锁在元数据文件结构维度细化为多个文件锁结构inode_lock,每个元数据文件对应的Inode结构体具有唯一的锁结构。文件锁结构inode_lock取代客户端大锁实现元数据文件的inode元数据的管控,每个文件锁结构inode_lock管理每个元数据文件的元数据资源,包括inode结构体中元素变量的增删改茶,文件锁结构inode_lock之间互相独立,从而实现元数据文件之间的元数据并发。

可以理解的是,为了提高元数据请求的并发性,将客户端大锁在元数据操作请求维度细化为多个请求锁结构request_lock,每个元数据操作请求对应唯一的锁结构。请求锁结构request_lock取代客户端大锁实现元数据请求类的数据资源的管控,具体包括元数据请求结构体Metarequest中的元素变量的增删改查,请求锁结构request_lock之间相互独立,可以实现元数据请求之间的并发。

可以理解的是,文件锁结构inode_lock和请求锁结构request_lock中,文件锁结构inode_lock实现了元数据文件之间的元数据并发,是元数据文件对客户端大锁的公共竞争降级为仅在同一元数据文件内部的文件锁竞争,客户端大锁的竞争程度降低,同时消除了元数据文件之间的所竞争,实现了元数据文件之间的元数据并发处理;请求锁结构request_lock实现了元数据操作请求的并发,将元数据请求对客户端大锁的公共竞争降级为同一请求内部的锁竞争,解除了对客户端大锁的竞争依赖,使得元数据操作请求可以按照请求粒度进行。

可以理解的是,文件锁结构inode_lock实现了元数据文件粒度并发,请求锁结构request_lock实现了请求粒度并发。对于同一个元数据文件,如果存在多个元数据操作请求,多个元数据操作请求将按照串行执行,同时执行前需要先对元数据文件进行处理,因此需要加上文件锁结构inode_lock,因此对于同文件多请求,请求将串行执行,对于多文件多请求,按照一文件一请求的原则,按照文件粒度进行并发处理。

具体的,文件锁结构inode_lock和请求锁结构request_lock都是mutex类型的互斥锁,文件锁结构inode_lock在确定后随着inode结构体一起初始化,请求锁结构request_lock在元数据操作请求获取到客户端唯一id之后初始化。

可以理解的是,inode结构体中的元素进行增删改查操作之前均需要加上文件锁结构inode_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元素数据导致数据不一致的问题;Metarequest的元素进行增删改查操作之前均需要加上请求锁结构request_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元数据导致数据不一致的问题。

进一步的,文件锁结构inode_lock的优先级高于请求锁结构request_lock。

可以理解的是,前期的元数据处理中主要使用文件锁结构inode_lock,中间涉及到元数据操作请求时文件锁结构inode_lock和请求锁结构request_lock进行嵌套处理,后期请求应答处理的时候主要使用文件锁结构inode_lock,文件锁结构inode_lock和请求锁结构request_lock对应的数据相互独立又相互嵌套。具体的,文件锁结构inode_lock的优先级高于请求锁结构request_lock,如果元数据文件上已经加有请求锁结构request_lock,而现在又需要增加文件锁结构inode_lock,需要对原有请求锁结构request_lock解锁,然后添加文件锁结构inode_lock,再重新添加请求锁结构request_lock。

进一步的,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:创建对应客户端资源的客户端锁结构client_lock。

此时,请求锁结构request_lock的优先级高于客户端锁结构client_lock,总的优先级包括:文件锁结构inode_lock高于请求锁结构request_lock,请求锁结构request_lock高于客户端锁结构client_lock。

例如在已添加客户端锁结构client_lock时,又需要添加文件锁结构inode_lock,则先对客户端锁结构client_lock解锁,然后添加文件锁结构inode_lock,再重新添加客户端锁结构client_lock,其他场景的锁添加方式类似,均按照优先级进行。

本申请实施例还公开了一种电子设备,参见图4所示,包括处理器11和存储器12;其中,所述处理11执行所述存储器12中保存的计算机程序时实现以下步骤:

根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

当收到目标操作请求,根据所述目标操作请求添加对应的所述锁结构;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当任一所述锁结构对应收到的所有所述目标操作请求均完成,对所述锁结构进行解锁。

本申请实施例公开了一种电子设备,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

在一些具体的实施例中,所述处理器11执行所述存储器12中保存的计算机子程序时,具体可以实现以下步骤:

根据分布式文件结构中元数据文件之间的互斥关系,确定与所述元数据文件一一对应的多个文件锁结构;

根据元数据操作请求之间的互斥关系,确定与所述元数据操作请求一一对应的多个请求锁结构。

在一些具体的实施例中,所述文件锁结构的优先级高于所述请求锁结构。

在一些具体的实施例中,所述处理器11执行所述存储器12中保存的计算机子程序时,具体可以实现以下步骤:

创建对应客户端资源的客户端锁结构。

在一些具体的实施例中,所述请求锁结构的优先级高于所述客户端锁结构。

在一些具体的实施例中,所述处理器11执行所述存储器12中保存的计算机子程序时,具体可以实现以下步骤:

对所有所述目标操作请求引用的指针进行指针计数;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当所述指针计数为零,对所述指针进行删除操作。

在一些具体的实施例中,所述处理器11执行所述存储器12中保存的计算机子程序时,具体可以实现以下步骤:

当所述指针计数为零,等待延时时间段后对所述指针进行删除操作。

进一步的,本实施例中的电子设备,还可以包括:

输入接口13,用于获取外界导入的计算机程序,并将获取到的计算机程序保存至所述存储器12中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器11中,以便处理器11利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口13具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。

输出接口14,用于将处理器11产生的各种数据输出至与其相连的终端设备,以便于与输出接口14相连的其他终端设备能够获取到处理器11产生的各种数据。本实施例中,所述输出接口14具体可以包括但不限于USB接口、串行接口等。

通讯单元15,用于在电子设备和外部服务器之间建立远程通讯连接,以便于电子设备能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元15具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。

键盘16,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。

显示器17,用于对元数据多并发控制过程的相关信息进行实时显示,以便于用户及时地了解当前元数据的控制情况。

鼠标18,可以用于协助用户输入数据并简化用户的操作。

具体的,本实施例中确定了多个锁结构,该锁结构用于为不同的线程加锁,以保证线程操作过程中操作对象的一致性,本实施例中确定了多个锁结构,每个锁结构对应一定的锁范围,相比于现有技术中使用的唯一客户端大锁,多个锁结构对应的锁范围相应降低,在某个锁结构对线程加锁时,其他锁结构对应的对象并未被加锁,可以与当前加锁的线程对应的操作并发进行,由于多个锁结构的对象之间耦合度降低,整个系统中线程操作的可并发能力提高,也即整体分布式文件系统的并发性能增高。

可以理解的是,本实施例中锁结构从两个维度上进行确定,其中在分布式文件结构的维度,根据该维度上每个元数据文件的互斥关系,可确定多个互斥的文件锁结构inode_lock,每个文件锁结构inode_lock与每个元数据文件一一对应;类似的,在分布式文件请求的维度,根据该维度上元数据操作请求之间的互斥关系,可确定多个请求锁结构request_lock,每个请求锁结构request_lock与每个元数据操作请求一一对应。

可以理解的是,除了文件锁结构inode_lock和请求锁结构request_lock外,还可以增加其他维度的锁结构,例如分布式文件系统中客户端资源对应的客户端锁结构client_lock,客户端资源为相对于分布式文件系统存储节点外的公共资源,可由客户端锁结构client_lock进行管理控制。

可以理解的是,具体的锁结构的类型选择、粒度设置、对象设置,可根据分布式文件系统中元数据并发控制规律进行调整,只要保证同一维度的锁结构互斥、同一维度的锁结构对应的对象互斥即可。

进一步的,目标操作请求包括且不限于查看、读取、创建、重命名、取消链接。具体的,在收到目标操作请求后,根据目标操作请求添加对应的锁结构,根据锁结构的特性,同一个锁结构下对应的所有目标操作请求必须按照串行的方式依次执行,从而确保分布式系统中目标操作请求被执行过程中的读写一致性。

可以理解的是,对于一个已添加的锁结构,如果其对应收到的目标操作请求正在执行过程中,则保持锁状态,保持锁状态时可能还会收到新的目标操作请求,同样的,新的目标操作请求将安排在串行执行的操作顺序中。锁状态的解除,也即对锁结构进行解锁的动作,发生在保持锁状态的锁结构对应的所有目标操作请求均完成的前提下,当任一锁结构对应的所有目标操作请求均完成,则对该锁结构进行解锁,如果存在未完成的目标总操作请求,则保持锁状态。

可以理解的是,为了提高元数据并发,将客户端大锁在元数据文件结构维度细化为多个文件锁结构inode_lock,每个元数据文件对应的Inode结构体具有唯一的锁结构。文件锁结构inode_lock取代客户端大锁实现元数据文件的inode元数据的管控,每个文件锁结构inode_lock管理每个元数据文件的元数据资源,包括inode结构体中元素变量的增删改茶,文件锁结构inode_lock之间互相独立,从而实现元数据文件之间的元数据并发。

可以理解的是,为了提高元数据请求的并发性,将客户端大锁在元数据操作请求维度细化为多个请求锁结构request_lock,每个元数据操作请求对应唯一的锁结构。请求锁结构request_lock取代客户端大锁实现元数据请求类的数据资源的管控,具体包括元数据请求结构体Metarequest中的元素变量的增删改查,请求锁结构request_lock之间相互独立,可以实现元数据请求之间的并发。

可以理解的是,文件锁结构inode_lock和请求锁结构request_lock中,文件锁结构inode_lock实现了元数据文件之间的元数据并发,是元数据文件对客户端大锁的公共竞争降级为仅在同一元数据文件内部的文件锁竞争,客户端大锁的竞争程度降低,同时消除了元数据文件之间的所竞争,实现了元数据文件之间的元数据并发处理;请求锁结构request_lock实现了元数据操作请求的并发,将元数据请求对客户端大锁的公共竞争降级为同一请求内部的锁竞争,解除了对客户端大锁的竞争依赖,使得元数据操作请求可以按照请求粒度进行。

可以理解的是,文件锁结构inode_lock实现了元数据文件粒度并发,请求锁结构request_lock实现了请求粒度并发。对于同一个元数据文件,如果存在多个元数据操作请求,多个元数据操作请求将按照串行执行,同时执行前需要先对元数据文件进行处理,因此需要加上文件锁结构inode_lock,因此对于同文件多请求,请求将串行执行,对于多文件多请求,按照一文件一请求的原则,按照文件粒度进行并发处理。

具体的,文件锁结构inode_lock和请求锁结构request_lock都是mutex类型的互斥锁,文件锁结构inode_lock在确定后随着inode结构体一起初始化,请求锁结构request_lock在元数据操作请求获取到客户端唯一id之后初始化。

可以理解的是,inode结构体中的元素进行增删改查操作之前均需要加上文件锁结构inode_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元素数据导致数据不一致的问题;Metarequest的元素进行增删改查操作之前均需要加上请求锁结构request_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元数据导致数据不一致的问题。

进一步的,文件锁结构inode_lock的优先级高于请求锁结构request_lock。

可以理解的是,前期的元数据处理中主要使用文件锁结构inode_lock,中间涉及到元数据操作请求时文件锁结构inode_lock和请求锁结构request_lock进行嵌套处理,后期请求应答处理的时候主要使用文件锁结构inode_lock,文件锁结构inode_lock和请求锁结构request_lock对应的数据相互独立又相互嵌套。具体的,文件锁结构inode_lock的优先级高于请求锁结构request_lock,如果元数据文件上已经加有请求锁结构request_lock,而现在又需要增加文件锁结构inode_lock,需要对原有请求锁结构request_lock解锁,然后添加文件锁结构inode_lock,再重新添加请求锁结构request_lock。

进一步的,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:创建对应客户端资源的客户端锁结构client_lock。

此时,请求锁结构request_lock的优先级高于客户端锁结构client_lock,总的优先级包括:文件锁结构inode_lock高于请求锁结构request_lock,请求锁结构request_lock高于客户端锁结构client_lock。

例如在已添加客户端锁结构client_lock时,又需要添加文件锁结构inode_lock,则先对客户端锁结构client_lock解锁,然后添加文件锁结构inode_lock,再重新添加客户端锁结构client_lock,其他场景的锁添加方式类似,均按照优先级进行。

进一步的,本申请实施例还公开了一种可读存储介质,这里所说的可读存储介质具体为计算机可读存储介质,包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动硬盘、CD-ROM或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

参见图5所示,可读存储介质20中存储有计算机程序21,所述计算机程序21被处理器执行时实现以下步骤:

根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构;

当收到目标操作请求,根据所述目标操作请求添加对应的所述锁结构;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当任一所述锁结构对应收到的所有所述目标操作请求均完成,对所述锁结构进行解锁。

本申请实施例公开了一种可读存储介质,设置了多个锁结构来实现系统中操作请求的并发处理,每个锁结构的作用粒度更细,各操作之间对锁结构的竞争减少,从而提高了分布式文件系统的元数据处理的并发性能。

在一些具体的实施例中,所述可读存储介质20中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:

根据分布式文件结构中元数据文件之间的互斥关系,确定与所述元数据文件一一对应的多个文件锁结构;

根据元数据操作请求之间的互斥关系,确定与所述元数据操作请求一一对应的多个请求锁结构。

在一些具体的实施例中,所述文件锁结构的优先级高于所述请求锁结构。

在一些具体的实施例中,所述可读存储介质20中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:

创建对应客户端资源的客户端锁结构。

在一些具体的实施例中,所述请求锁结构的优先级高于所述客户端锁结构。

在一些具体的实施例中,所述可读存储介质20中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:

对所有所述目标操作请求引用的指针进行指针计数;

按照串行方式执行同一个所述锁结构当前对应收到的所有所述目标操作请求;

当所述指针计数为零,对所述指针进行删除操作。

在一些具体的实施例中,所述可读存储介质20中存储的计算机子程序被处理器执行时,具体可以实现以下步骤:

当所述指针计数为零,等待延时时间段后对所述指针进行删除操作。

具体的,本实施例中确定了多个锁结构,该锁结构用于为不同的线程加锁,以保证线程操作过程中操作对象的一致性,本实施例中确定了多个锁结构,每个锁结构对应一定的锁范围,相比于现有技术中使用的唯一客户端大锁,多个锁结构对应的锁范围相应降低,在某个锁结构对线程加锁时,其他锁结构对应的对象并未被加锁,可以与当前加锁的线程对应的操作并发进行,由于多个锁结构的对象之间耦合度降低,整个系统中线程操作的可并发能力提高,也即整体分布式文件系统的并发性能增高。

可以理解的是,本实施例中锁结构从两个维度上进行确定,其中在分布式文件结构的维度,根据该维度上每个元数据文件的互斥关系,可确定多个互斥的文件锁结构inode_lock,每个文件锁结构inode_lock与每个元数据文件一一对应;类似的,在分布式文件请求的维度,根据该维度上元数据操作请求之间的互斥关系,可确定多个请求锁结构request_lock,每个请求锁结构request_lock与每个元数据操作请求一一对应。

可以理解的是,除了文件锁结构inode_lock和请求锁结构request_lock外,还可以增加其他维度的锁结构,例如分布式文件系统中客户端资源对应的客户端锁结构client_lock,客户端资源为相对于分布式文件系统存储节点外的公共资源,可由客户端锁结构client_lock进行管理控制。

可以理解的是,具体的锁结构的类型选择、粒度设置、对象设置,可根据分布式文件系统中元数据并发控制规律进行调整,只要保证同一维度的锁结构互斥、同一维度的锁结构对应的对象互斥即可。

进一步的,目标操作请求包括且不限于查看、读取、创建、重命名、取消链接。具体的,在收到目标操作请求后,根据目标操作请求添加对应的锁结构,根据锁结构的特性,同一个锁结构下对应的所有目标操作请求必须按照串行的方式依次执行,从而确保分布式系统中目标操作请求被执行过程中的读写一致性。

可以理解的是,对于一个已添加的锁结构,如果其对应收到的目标操作请求正在执行过程中,则保持锁状态,保持锁状态时可能还会收到新的目标操作请求,同样的,新的目标操作请求将安排在串行执行的操作顺序中。锁状态的解除,也即对锁结构进行解锁的动作,发生在保持锁状态的锁结构对应的所有目标操作请求均完成的前提下,当任一锁结构对应的所有目标操作请求均完成,则对该锁结构进行解锁,如果存在未完成的目标总操作请求,则保持锁状态。

可以理解的是,为了提高元数据并发,将客户端大锁在元数据文件结构维度细化为多个文件锁结构inode_lock,每个元数据文件对应的Inode结构体具有唯一的锁结构。文件锁结构inode_lock取代客户端大锁实现元数据文件的inode元数据的管控,每个文件锁结构inode_lock管理每个元数据文件的元数据资源,包括inode结构体中元素变量的增删改茶,文件锁结构inode_lock之间互相独立,从而实现元数据文件之间的元数据并发。

可以理解的是,为了提高元数据请求的并发性,将客户端大锁在元数据操作请求维度细化为多个请求锁结构request_lock,每个元数据操作请求对应唯一的锁结构。请求锁结构request_lock取代客户端大锁实现元数据请求类的数据资源的管控,具体包括元数据请求结构体Metarequest中的元素变量的增删改查,请求锁结构request_lock之间相互独立,可以实现元数据请求之间的并发。

可以理解的是,文件锁结构inode_lock和请求锁结构request_lock中,文件锁结构inode_lock实现了元数据文件之间的元数据并发,是元数据文件对客户端大锁的公共竞争降级为仅在同一元数据文件内部的文件锁竞争,客户端大锁的竞争程度降低,同时消除了元数据文件之间的所竞争,实现了元数据文件之间的元数据并发处理;请求锁结构request_lock实现了元数据操作请求的并发,将元数据请求对客户端大锁的公共竞争降级为同一请求内部的锁竞争,解除了对客户端大锁的竞争依赖,使得元数据操作请求可以按照请求粒度进行。

可以理解的是,文件锁结构inode_lock实现了元数据文件粒度并发,请求锁结构request_lock实现了请求粒度并发。对于同一个元数据文件,如果存在多个元数据操作请求,多个元数据操作请求将按照串行执行,同时执行前需要先对元数据文件进行处理,因此需要加上文件锁结构inode_lock,因此对于同文件多请求,请求将串行执行,对于多文件多请求,按照一文件一请求的原则,按照文件粒度进行并发处理。

具体的,文件锁结构inode_lock和请求锁结构request_lock都是mutex类型的互斥锁,文件锁结构inode_lock在确定后随着inode结构体一起初始化,请求锁结构request_lock在元数据操作请求获取到客户端唯一id之后初始化。

可以理解的是,inode结构体中的元素进行增删改查操作之前均需要加上文件锁结构inode_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元素数据导致数据不一致的问题;Metarequest的元素进行增删改查操作之前均需要加上请求锁结构request_lock,避免多线程同时处理,出现线程1获取元素数据、线程2修改元数据导致数据不一致的问题。

进一步的,文件锁结构inode_lock的优先级高于请求锁结构request_lock。

可以理解的是,前期的元数据处理中主要使用文件锁结构inode_lock,中间涉及到元数据操作请求时文件锁结构inode_lock和请求锁结构request_lock进行嵌套处理,后期请求应答处理的时候主要使用文件锁结构inode_lock,文件锁结构inode_lock和请求锁结构request_lock对应的数据相互独立又相互嵌套。具体的,文件锁结构inode_lock的优先级高于请求锁结构request_lock,如果元数据文件上已经加有请求锁结构request_lock,而现在又需要增加文件锁结构inode_lock,需要对原有请求锁结构request_lock解锁,然后添加文件锁结构inode_lock,再重新添加请求锁结构request_lock。

进一步的,根据分布式文件结构及元数据操作请求之间的互斥关系,确定多个锁结构之前,还包括:创建对应客户端资源的客户端锁结构client_lock。

此时,请求锁结构request_lock的优先级高于客户端锁结构client_lock,总的优先级包括:文件锁结构inode_lock高于请求锁结构request_lock,请求锁结构request_lock高于客户端锁结构client_lock。

例如在已添加客户端锁结构client_lock时,又需要添加文件锁结构inode_lock,则先对客户端锁结构client_lock解锁,然后添加文件锁结构inode_lock,再重新添加客户端锁结构client_lock,其他场景的锁添加方式类似,均按照优先级进行。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种元数据多并发控制方法、系统及相关组件进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种元数据卷的存储状态记录方法、系统及相关组件
  • 一种元数据集群的故障恢复方法、系统及相关组件
  • 一种存储系统元数据的管理方法、管理系统及相关装置
  • 一种元数据缓存方法、系统及相关装置
  • 一种维修系统的信息交互方法、系统及相关组件
  • 一种元数据集群的故障恢复方法、系统及相关组件
  • 一种全闪存储系统元数据写缓存刷盘方法及相关组件
技术分类

06120115958875