基于自适应乐观锁的文件锁定方法、系统及存储介质技术方案

技术编号:28941741 阅读:14 留言:0更新日期:2021-06-18 21:47
本申请涉及一种基于自适应乐观锁的文件锁定方法、系统、电子设备及存储介质,其中,该方法包括:访问请求获取步骤,用于接收客户端的文件访问请求并通过等待队列缓存访问请求对应的锁请求;锁冲突判断步骤,用于当已分配锁发生资源释放时,获取等待队列中队首锁请求,判断队首锁请求是否与队首锁请求对应的文件中已有锁请求的范围存在冲突;请求处理步骤,用于当队首锁请求与文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据队首锁请求与已有锁请求的冲突范围是否属于扩展范围获取释放资源。通过本申请,解决了解决乐观锁机制面临多个进程交错访问文件的不同范围时锁请求效率降低的问题,提高请求处理效率。

【技术实现步骤摘要】
基于自适应乐观锁的文件锁定方法、系统及存储介质
本申请涉及计算机
,特别是涉及基于自适应乐观锁的文件锁定方法、系统、电子设备及计算机可读存储介质。
技术介绍
当多个进程对同一文件进行访问时,为了避免并发操作引起的数据混乱,通常会对需要操作的文件进行加锁。但如果不同进程访问的是该文件的不同区间数据,那么对整个文件加锁的开销就相对较高,这种情况下需要使用字节范围锁来减少冲突。范围锁锁定的是文件当中的某个区域,对同一文件可以允许多个范围锁,从而提高多进程同时访问的并发度。但是在单个进程多次访问同一文件的不同区域的情况下,字节范围锁的效率就不如文件锁。目前采用乐观锁机制来解决范围锁在单个进程多次访问同一文件不同区域时效率较低的问题。乐观锁机制的主要思想如图1所示:在收到对文件某个区域的访问请求时,根据已经分配的锁范围,给予该请求进程包括请求区域在内的最大范围锁。也就是说请求进程得到的不是请求锁的准确范围,而是在不与当前已有的其他范围锁发生冲突的前提下,覆盖请求锁范围,同时扩展了与请求范围连续的最大范围。现有技术对单个进程多次访问某一文件的不同范围时非常有效,但如果有多个进程需要交错访问文件的不同范围时,这种乐观锁机制又很容易造成冲突,从而需要大量的释放锁操作,这样会导致锁请求的效率大大降低,并且会造成网络负载增多以及操作延迟。
技术实现思路
本申请实施例提供了一种基于自适应乐观锁的文件锁定方法、系统、电子设备及计算机可读存储介质,以至少解决乐观锁机制面临多个进程交错访问文件的不同范围时锁请求效率降低的问题。第一方面,本申请实施例提供了一种基于自适应乐观锁的文件锁定方法,包括:访问请求获取步骤,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;锁冲突判断步骤,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;请求处理步骤,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围获取释放资源。基于上述步骤,本申请实施例对所有的锁请求均通过所述等待队列进行缓存,并取所述等待队列队首锁请求判断其是否与已有锁请求冲突,解决了在多个进程交错访问文件的情况下大量释放锁操作导致的锁请求处理效率低下的问题,降低操作延迟,提高请求处理效率。在其中一些实施例中,所述请求处理步骤进一步包括:请求资源赋予步骤,用于当所述队首锁请求与所述文件中已有锁请求无冲突时,赋予所述队首锁请求对应的资源;扩展范围判断步骤,用于判断所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围;资源释放步骤,用于若所述冲突范围属于拓展范围,则当所述已有锁请求所属客户端释放所述扩展范围资源时,即为对所述扩展范围的资源进行解锁时,根据所述队首锁请求对所述扩展范围进行加锁,并将所述队首锁请求移出所述等待队列;否则,所述队首锁请求等待所述已有锁请求释放资源并执行所述锁冲突判断步骤。在其中一些实施例中,所述请求资源赋予步骤进一步包括:唯一锁请求处理步骤,用于判断所述队首锁请求是否为所述等待队列中唯一的锁请求,若所述队首锁请求为所述等待队列中唯一的锁请求,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;客户端锁请求获取步骤,用于若所述队首锁请求不是所述等待队列中唯一的锁请求,则依序遍历所述等待队列中锁请求并获取所述客户端的锁请求;锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为所述队首锁请求,即为所述等待队列中不存在其他来自所述客户端的锁请求,则根据乐观锁机制对所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列,值得注意的是,此时并非对所述队首锁请求对应的资源的扩展范围进行加锁;扩展锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为包括所述队首锁请求的至少二锁请求,即为所述等待队列中还有其他来自所述客户端的锁请求,则根据所述至少二锁请求在所述等待队列的位置进行锁请求处理。在其中一些实施例中,扩展锁请求处理步骤进一步包括:锁请求位置获取步骤,用于判断所述至少二锁请求是否位于所述等待队列的预设位置,若所述至少二锁请求位于所述等待队列的预设位置,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;否则,根据所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列,值得注意的是,此时并未对所述队首锁请求对应的资源的扩展范围进行加锁。基于上述步骤,提供了一种决定队首锁请求的加锁方式的判断规则及多种针对所述队首锁请求进行加锁的方式,一方面,尽可能保留了乐观锁针对锁请求的扩展范围进行加锁,以保留其在单线程访问时的优势;另一方面,通过直接针对所请求进行加锁的非乐观锁形式,以避免与其他锁请求产生冲突,进一步提高在多个进程交错访问文件的情况下的请求处理效率。在其中一些实施例中,所述预设位置为所述等待队列的前四分之一段的位置范围。在其中一些实施例中,本申请实施例的进行范围索引采用B+树作为数据结构实现,利用B+树的叶节点包含全部关键字信息且顺序链接的特性,进一步优化范围查找,B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中,B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。第二方面,本申请实施例提供了一种基于自适应乐观锁的文件锁定系统,包括:访问请求获取模块,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;锁冲突判断模块,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;请求处理模块,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,判断所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围并获取释放资源。基于上述模块,本申请实施例对所有的锁请求均通过所述等待队列进行缓存,并取所述等待队列队首锁请求判断其是否与已有锁请求冲突,解决了在多个进程交错访问文件的情况下大量释放锁操作导致的锁请求处理效率低下的问题,降低操作延迟,提高请求处理效率。在其中一些实施例中,所述请求处理模块进一步包括:请求资源赋予模块,用于当所述队首锁请求与所述文件中已有锁请求无冲突时,赋予所述队首锁请求对应的资源;扩展范围判断模块,用于判断所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围;资源释放模块,用于若所述冲突范围属于拓展范围,则当所述已有锁请求所属客户端释放所述扩展范围资源时,即为对所述扩展范围的资源进行解锁时,根据所述队首锁请求对相应资源加锁,并将所述队首锁请求移出所述等本文档来自技高网...

【技术保护点】
1.一种基于自适应乐观锁的文件锁定方法,其特征在于,包括:/n访问请求获取步骤,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;/n锁冲突判断步骤,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;/n请求处理步骤,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围获取释放资源。/n

【技术特征摘要】
1.一种基于自适应乐观锁的文件锁定方法,其特征在于,包括:
访问请求获取步骤,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;
锁冲突判断步骤,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;
请求处理步骤,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围获取释放资源。


2.根据权利要求1所述的基于自适应乐观锁的文件锁定方法,其特征在于,所述请求处理步骤进一步包括:
请求资源赋予步骤,用于当所述队首锁请求与所述文件中已有锁请求无冲突时,赋予所述队首锁请求对应的资源;
扩展范围判断步骤,用于判断所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围;
资源释放步骤,用于若所述冲突范围属于拓展范围,则当所述已有锁请求所属客户端释放所述扩展范围资源时,根据所述队首锁请求对所述扩展范围进行加锁,并将所述队首锁请求移出所述等待队列;否则,所述队首锁请求等待所述已有锁请求释放资源并执行所述锁冲突判断步骤。


3.根据权利要求2所述的基于自适应乐观锁的文件锁定方法,其特征在于,所述请求资源赋予步骤进一步包括:
唯一锁请求处理步骤,用于判断所述队首锁请求是否为所述等待队列中唯一的锁请求,若所述队首锁请求为所述等待队列中唯一的锁请求,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;
客户端锁请求获取步骤,用于若所述队首锁请求不是所述等待队列中唯一的锁请求,则依序遍历所述等待队列中锁请求并获取所述客户端的锁请求;
锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为所述队首锁请求,则根据乐观锁机制对所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列;
扩展锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为包括所述队首锁请求的至少二锁请求,则根据所述至少二锁请求在所述等待队列的位置进行锁请求处理。


4.根据权利要求3所述的基于自适应乐观锁的文件锁定方法,其特征在于,扩展锁请求处理步骤进一步包括:
锁请求位置获取步骤,用于判断所述至少二锁请求是否位于所述等待队列的预设位置,若所述至少二锁请求位于所述等待队列的预设位置,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;否则,根据所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列。


5.一种基于自适应乐观锁的文件锁定系统,其特征在于,包括:
访问请求获取模块,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;
锁冲突判断模块,...

【专利技术属性】
技术研发人员:朱黎刘远郭镔
申请(专利权)人:北京明略昭辉科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1