【技术实现步骤摘要】
基于自适应乐观锁的文件锁定方法、系统及存储介质
本申请涉及计算机
,特别是涉及基于自适应乐观锁的文件锁定方法、系统、电子设备及计算机可读存储介质。
技术介绍
当多个进程对同一文件进行访问时,为了避免并发操作引起的数据混乱,通常会对需要操作的文件进行加锁。但如果不同进程访问的是该文件的不同区间数据,那么对整个文件加锁的开销就相对较高,这种情况下需要使用字节范围锁来减少冲突。范围锁锁定的是文件当中的某个区域,对同一文件可以允许多个范围锁,从而提高多进程同时访问的并发度。但是在单个进程多次访问同一文件的不同区域的情况下,字节范围锁的效率就不如文件锁。目前采用乐观锁机制来解决范围锁在单个进程多次访问同一文件不同区域时效率较低的问题。乐观锁机制的主要思想如图1所示:在收到对文件某个区域的访问请求时,根据已经分配的锁范围,给予该请求进程包括请求区域在内的最大范围锁。也就是说请求进程得到的不是请求锁的准确范围,而是在不与当前已有的其他范围锁发生冲突的前提下,覆盖请求锁范围,同时扩展了与请求范围连续的最大范围。现有技术对单个进程多次访问某一文件的不同范围时非常有效,但如果有多个进程需要交错访问文件的不同范围时,这种乐观锁机制又很容易造成冲突,从而需要大量的释放锁操作,这样会导致锁请求的效率大大降低,并且会造成网络负载增多以及操作延迟。
技术实现思路
本申请实施例提供了一种基于自适应乐观锁的文件锁定方法、系统、电子设备及计算机可读存储介质,以至少解决乐观锁机制面临多个进程交错访问文件的不同范围 ...
【技术保护点】
1.一种基于自适应乐观锁的文件锁定方法,其特征在于,包括:/n访问请求获取步骤,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;/n锁冲突判断步骤,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;/n请求处理步骤,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围获取释放资源。/n
【技术特征摘要】
1.一种基于自适应乐观锁的文件锁定方法,其特征在于,包括:
访问请求获取步骤,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;
锁冲突判断步骤,用于当已分配锁发生资源释放时,获取所述等待队列中队首锁请求,判断所述队首锁请求是否与所述队首锁请求对应的文件中已有锁请求的范围存在冲突;
请求处理步骤,用于当所述队首锁请求与所述文件中已存在的锁请求无冲突时,赋予所述队首锁请求对应的资源;反之,根据所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围获取释放资源。
2.根据权利要求1所述的基于自适应乐观锁的文件锁定方法,其特征在于,所述请求处理步骤进一步包括:
请求资源赋予步骤,用于当所述队首锁请求与所述文件中已有锁请求无冲突时,赋予所述队首锁请求对应的资源;
扩展范围判断步骤,用于判断所述队首锁请求与所述已有锁请求的冲突范围是否属于扩展范围;
资源释放步骤,用于若所述冲突范围属于拓展范围,则当所述已有锁请求所属客户端释放所述扩展范围资源时,根据所述队首锁请求对所述扩展范围进行加锁,并将所述队首锁请求移出所述等待队列;否则,所述队首锁请求等待所述已有锁请求释放资源并执行所述锁冲突判断步骤。
3.根据权利要求2所述的基于自适应乐观锁的文件锁定方法,其特征在于,所述请求资源赋予步骤进一步包括:
唯一锁请求处理步骤,用于判断所述队首锁请求是否为所述等待队列中唯一的锁请求,若所述队首锁请求为所述等待队列中唯一的锁请求,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;
客户端锁请求获取步骤,用于若所述队首锁请求不是所述等待队列中唯一的锁请求,则依序遍历所述等待队列中锁请求并获取所述客户端的锁请求;
锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为所述队首锁请求,则根据乐观锁机制对所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列;
扩展锁请求处理步骤,用于若所述等待队列中所述客户端的锁请求为包括所述队首锁请求的至少二锁请求,则根据所述至少二锁请求在所述等待队列的位置进行锁请求处理。
4.根据权利要求3所述的基于自适应乐观锁的文件锁定方法,其特征在于,扩展锁请求处理步骤进一步包括:
锁请求位置获取步骤,用于判断所述至少二锁请求是否位于所述等待队列的预设位置,若所述至少二锁请求位于所述等待队列的预设位置,则根据乐观锁机制对所述队首锁请求对应的资源的扩展范围加锁并将所述队首锁请求移出所述等待队列;否则,根据所述队首锁请求对应的资源进行加锁并将所述队首锁请求移出所述等待队列。
5.一种基于自适应乐观锁的文件锁定系统,其特征在于,包括:
访问请求获取模块,用于接收一客户端的文件访问请求并通过一等待队列缓存所述访问请求对应的锁请求;
锁冲突判断模块,...
【专利技术属性】
技术研发人员:朱黎,刘远,郭镔,
申请(专利权)人:北京明略昭辉科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。