CN110554914B - 资源锁管理方法、装置、服务器及存储介质 - Google Patents
资源锁管理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN110554914B CN110554914B CN201910635787.1A CN201910635787A CN110554914B CN 110554914 B CN110554914 B CN 110554914B CN 201910635787 A CN201910635787 A CN 201910635787A CN 110554914 B CN110554914 B CN 110554914B
- Authority
- CN
- China
- Prior art keywords
- lock
- resource
- resource lock
- locks
- container
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及计算机技术领域,特别涉及一种资源锁管理方法、装置、服务器及存储介质。资源锁管理方法,包括:响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,则删除所述已过期的资源锁;创建所述目标资源锁。采用本发明的实施方式,实现了对资源锁的统一管理,提升对资源锁的管理和操作效率。
Description
技术领域
本发明实施例涉及计算机技术领域,特别涉及一种资源锁管理方法、装置、服务器及存储介质。
背景技术
随着互联网行业的高速发展,使用互联网的用户数量和经互联网传输的数据量呈爆发式增长,从而使互联网应用系统面对高并发场景成为了十分常见的情况。在高并发的场景下,应用系统需要同时并行处理许多用户请求,当多个用户同时对同一个资源进行请求操作时易造成资源请求冲突,同时对资源的安全性造成影响。为了避免这种问题,通常对资源设置资源锁来保障资源的安全性。
然而发明人发现相关技术中至少存在如下问题:高并发场景下通常存在大批量且无规律的资源锁,但缺乏对大批量且无规律的资源锁的统一管理方式,造成应用系统内对资源锁的计算开销增大,也影响了对资源锁的管理和操作效率。
发明内容
本发明实施方式的目的在于提供一种资源锁管理方法、装置、服务器及存储介质,实现了对资源锁的统一管理,提升对资源锁的管理和操作效率。
为解决上述技术问题,本发明的实施方式提供了一种资源锁管理方法,包括:响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,则删除所述已过期的资源锁;创建所述目标资源锁。
本发明的实施方式还提供了一种资源锁管理装置,包括:获取模块,用于响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;判断模块,用于根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;删除模块,用于在判断存在已过期的资源锁时删除所述已过期的资源锁;创建模块,用于创建所述目标资源锁。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述的资源锁管理方法。
本发明的实施方式还提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的资源锁管理方法。
本发明实施方式相对于现有技术而言,响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,则删除所述已过期的资源锁;创建所述目标资源锁。本发明实施方式中,对于资源锁的最近被访问时间进行了记录,并根据各资源锁的最近被访问时间记录,对各资源锁进行过期状态的判定,从而在创建新的目标资源锁前,能够根据各资源锁的过期状态对已过期的资源锁进行删除,也就是自动释放了过期的资源锁,自动回收了无用的资源锁对存储空间的占用,避免大量无用的数据影响应用系统的计算开销和运行效率,同时也为新的资源锁的创建腾出了存储空间;上述实施方式提供了对资源锁的统一管理方法,使得即使在高并发场景下对大量资源锁的创建和释放等操作也有规可循,有效提升了对资源锁的管理和操作的效率。
另外,所述已创建的资源锁存储于预先建立的锁容器中;所述已创建的资源锁对应有锁对象信息,所述锁对象信息存储于预先建立的锁链表中,所述锁对象信息包括所述最近被访问时间记录;所述删除所述已过期的资源锁,包括:在所述锁容器中删除所述已过期的资源锁;在所述锁链表中删除所述已过期的资源锁对应的锁对象信息;本实施方式中预先建立了用于存储资源锁的锁容器和用于存储锁对象信息的锁链表,锁对象信息能保证资源锁各项属性,使得应用系统对于资源锁的管理更具条理;由于本实施方式中预先建立有用于管理资源锁的锁管理器和锁链表,因此在删除已过期的资源锁时,需要在锁容器中删除已过期的资源锁,同时在锁链表中删除已过期的资源锁对应的锁对象信息。
另外,所述已创建的资源锁对应的锁对象信息还包括资源锁的有效时长;所述根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁,包括:遍历所述锁链表,根据遍历到的锁对象信息中包括的所述资源锁的有效时长、所述最近被访问时间记录,及当前时间,判断所述遍历到的锁对象信息对应的资源锁是否已过期,直至对所述锁链表遍历结束;本实施方式提供了一种准确高效判断资源锁是否过期的方式,针对性地对每个资源锁都设置了自有对应的有效时长;对于确定的资源锁,计算当前时间与该资源锁最近被访问时间记录的差值,若差值大于该资源锁的有效时长,说明在最近一个该资源锁的有效时长内该资源锁未被访问,即可认为该资源锁长时间未被访问,则判定该资源锁已经超时,即该资源锁处于过期状态。
另外,在所述创建所述目标资源锁前,还包括:判断所述锁容器中的资源锁的个数是否大于或等于预设锁个数阈值;若是,则对所述锁容器中的资源锁进行删除,删除后所述锁容器中资源锁的个数小于所述预设锁个数阈值;也就是说,应用系统对于锁容器中存储的资源锁的个数进行了限制,在创建新的资源锁前对超出锁个数阈值的资源锁进行删除,并使得删除后锁容器中的锁个数小于锁个数阈值,从而为即将创建的资源锁腾出了存储空间,且在创建新的资源锁后,锁容器中的锁个数也不会超出锁个数阈值,有效控制了资源锁对于存储空间的占用,避免了在例如高并发场景下无限制地创建大批量资源锁,导致应用系统中的资源锁过多而严重影响应用系统运行效率的情况。
另外,所述对所述锁容器中的资源锁进行删除,包括:根据所述锁链表中的锁对象信息确定待删除的资源锁,并对所述锁容器中的资源锁进行删除。
另外,所述根据所述锁链表中的锁对象信息确定待删除的资源锁,包括:根据所述锁链表中的锁对象信息中包括的所述已创建的资源锁的最近被访问时间记录,通过最近最少使用算法确定待删除的资源锁;由于最近最少使用算法是可将最近被访问的数据放在链表顶部,较早之前被访问的数据放在链表底部,因此可从链表底部开始删除数据,即删除的是最近最少被访问的数据;如果一个资源锁在最近一段时间内没有被访问到,那么在将来被访问的可能性也较小,因此根据最近最少使用算法对资源锁进行淘汰,以将对资源锁的访问情况的影响降到较低程度。
另外,在所述创建所述目标资源锁后,还包括:将所述目标资源锁的创建时间作为所述目标资源锁的最近被访问时间记录存储于所述锁链表中。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是根据本发明第一实施方式的资源锁管理方法的流程图;
图2是根据本发明第二实施方式的资源锁管理方法的流程图;
图3是根据本发明第二实施方式的另一种资源锁管理方法的流程图;
图4是根据本发明第三实施方式的资源锁管理装置的结构方框图;
图5是根据本发明第四实施方式的服务器的结构方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本发明的第一实施方式涉及一种资源锁管理方法,具体流程如图1所示,包括:
步骤101,响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;
步骤102,根据已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,执行步骤103;若否,执行步骤104。
步骤103,删除已过期的资源锁。
步骤104,创建目标资源锁。
下面对本实施方式的资源锁管理方法的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。
本实施方式中,预先建立有用于存储已创建的资源锁的锁容器,锁容器也称作锁map,可视作一种以键值形式存储数据的结构,只要输入待查找的键(key),即可在锁map中查找到键(key)对应的值;在实际应用中,可采用哈希表ConcurrentHashMap作为存储已创建的资源锁的锁容器,ConcurrentHashMap可以应对不安全的并发环境,减少不同用户竞争资源锁时对于应用系统的性能产生的影响。同时,还预先建立有锁链表,锁容器中已创建的资源锁对应有表征资源锁各项属性等的锁对象信息,锁对象信息存储于该预先建立的锁链表中,也就是通过锁链表来保存资源锁的各项缓存数据。本实施方式中的锁容器和锁链表可统称为锁管理器,锁管理器的存在使得对于资源锁的管理更具条理;在实际应用中,可将锁管理器视作应用系统中一个独立的功能模块或处理器。
在步骤101中,应用系统响应于对新的目标资源锁的创建请求,从锁链表中获取应用系统中已创建的资源锁的最近被访问时间记录,资源锁的最近被访问时间记录属于锁对象信息包括的内容。在锁链表中,锁对象信息包括的内容可理解为以对应关系的形式被存储,例如,对于资源A的资源A锁的锁对象信息在锁链表中存储为:
资源A—资源A锁—资源A锁最近被访问时间记录。
当资源A锁被请求访问时,则对锁链表中存储的资源A锁最近被访问时间记录进行更新。另外,上述锁对象信息也可以存储于锁容器中,应用系统也可从锁容器中获取资源锁对应的锁对象信息。
在步骤102中,根据获取到的已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;资源锁是否过期可通过多种方式进行判断,例如:对每个已创建的资源锁预设其对应的锁有效时长,作为锁对象信息包括的内容进行存储,例如对于资源A的资源锁的锁对象信息,在锁链表中存储为:
资源A—资源A锁—资源A锁有效时长—资源A锁最近被访问时间记录。
在判断是否存在已过期的资源锁时,遍历锁链表,根据遍历到的每个已创建的资源锁的锁对象信息中包括的锁有效时长和最近被访问时间记录,计算当前时间与每个已创建的资源锁的锁最近被访问时间记录的差值,若计算得到的差值大于该资源锁的锁有效时长,说明被计算的资源锁在当前时间往前的一段锁有效时长内未被访问,则判定该资源锁已经超时,即该资源锁处于过期状态。在一个实例中,对于资源A锁,资源A锁的有效时长为1小时,资源A锁最近被访问时间记录为8时,当前时间为10时,则当前时间与资源A锁最近被访问时间记录的差值为2小时,大于资源A锁的有效时长1小时,则判定资源A锁已经过期。另外,也可对已创建的资源锁预设统一的过期阈值(可理解为统一的一段时长),遍历锁链表,根据遍历到的每个已创建的资源锁的锁对象信息中包括的最近被访问时间记录,计算当前时间与每个已创建的资源锁的最近被访问时间记录的差值,若计算得到的差值大于统一的过期阈值,说明被计算的资源锁在当前时间往前的过期阈值内未被访问,则判定被计算的资源锁已过期。
在步骤103中,若在遍历锁链表的过程中发现存在已过期的资源锁,则删除已过期的资源锁,直至对锁链表遍历结合,删除完所有已过期的资源锁;通过这种方式,能够根据各资源锁的过期状态对已过期的资源锁进行删除,也就是自动释放了过期的资源锁,自动回收了无用的资源锁对存储空间的占用,避免大量无用的数据影响应用系统的计算开销和运行效率,同时也为新的资源锁的创建腾出了存储空间;由于本实施方式中预先建立有用于管理资源锁的锁管理器和锁链表,因此在删除已过期的资源锁时,需要在锁容器中删除已过期的资源锁,同时在锁链表中删除已过期的资源锁对应的锁对象信息。
在步骤104中,若不存在过期的资源锁,或是已完成对已过期的资源锁的删除,则创建目标资源锁,将创建的目标资源锁存储于锁容器中,同时将目标资源锁的锁对象信息存储于锁链表中,即预设目标资源锁的锁有效时长进行存储,并将目标资源锁的创建时间作为目标资源锁的最近被访问时间记录进行存储。当创建的目标资源锁在后续被请求访问到时,则在锁链表中更新该目标资源锁的最近被访问时间记录。
本实施方式相对于现有技术而言,响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,则删除所述已过期的资源锁;创建所述目标资源锁。本发明实施方式中预先建立有锁管理器,锁管理器包括用于存储已创建的资源锁的锁容器,和用于存储资源锁的锁对象信息的锁链表,锁链表中存储的锁对象信息对于资源锁的最近被访问时间进行了记录;根据各资源锁的最近被访问时间记录,对各资源锁进行过期状态的判定,从而在创建新的目标资源锁前,能够根据各资源锁的过期状态对已过期的资源锁进行删除,也就是自动释放了过期的资源锁,自动回收了无用的资源锁对存储空间的占用,避免大量无用的数据影响应用系统的计算开销和运行效率,同时也为新的资源锁的创建腾出了存储空间;上述实施方式提供了用于管理资源锁的锁管理器及对资源锁的统一管理方法,使得即使在高并发场景下对大量资源锁的创建和释放等操作也有规可循,有效提升了对资源锁的管理和操作的效率。
本发明第二实施方式涉及一种资源锁管理方法,本实施方式与第一实施方式大致相同,本发明第二实施方式中,在创建目标资源锁前,还在资源锁大于或等于锁个数阈值的情况下对资源锁进行删除。本实施方式中的资源锁管理方法如图2所示,下面对图2的流程做具体说明:
步骤201,响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;此步骤与步骤101大致相同,此处不再赘述。
步骤202,根据已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,执行步骤103;若否,执行步骤104。此步骤与步骤102大致相同,此处不再赘述。
步骤203,删除已过期的资源锁。此步骤与步骤103大致相同,此处不再赘述。
步骤204,判断锁容器中的资源锁的个数是否大于或等于锁个数阈值;若是,执行步骤205;若否,执行步骤206。
步骤205,对锁容器中的资源锁进行删除。
具体地说,预设有锁容器中允许存储的锁个数阈值,用于控制资源锁对于存储空间的占用;在创建新的资源锁前,判断锁容器中存储的已创建的资源锁的个数是否大于或等于预设锁个数阈值;当锁容器中存储的资源锁个数大于锁个数阈值时,需要对资源锁进行删除,以控制资源锁的数量;当锁容器中存储的资源锁个数等于锁个数阈值时,考虑到即将要创建新的资源锁,因此也需要对资源锁进行删除,从而为即将要创建的资源锁腾出了存储空间;也就是说,删除后锁容器中存储的资源锁的个数应小于预设的锁个数阈值。在一个实例中,预设的锁个数阈值为10个,当前锁容器中存储的已创建的资源锁的个数为10个;由于还需创建1个新的资源锁,所以对锁容器中存储的资源锁进行删除,使得删除后锁容器中存储的资源锁的个数小于10个(即可至少删除一个资源锁,使得删除后锁容器中存储的资源锁的个数为9个,从而在创建1个新的资源锁后,锁容器中存储的资源锁的个数为10个,不超过预设锁个数阈值)。
具体地说,在删除锁容器中的资源锁时,根据锁链表中的锁对象信息,确定待删除的资源锁;本实施方式中,通过最近最少使用算法来确定待删除的资源锁:最近最少使用算法即LRU算法,LRU算法将最近使用的数据存放到靠近缓存顶部的位置,当一个新数据被访问时,LRU算法将它放置到缓存的顶部,也就是说较早之前被访问的数据位于缓存底部;当缓存达到极限时,较早之前访问的数据将从缓存底部开始被移除,也就是移除了最近最少使用的数据。由于本实施方式中锁链表中需要存储每个资源锁最近被访问时间记录,因此在锁链表中存储锁对象信息时,就可通过LRU算法,以每个资源锁最近被访问时间记录为标准,对每个资源锁的锁对象信息进行存储,也就是说,将最近被访问时间记录较早的资源锁的锁对象信息放置于锁链表的底部,将最近被访问时间记录较新的资源锁的锁对象信息放置于锁链表的顶部,当有资源锁的最近被访问时间记录更新时,将更新的锁对象信息放置于锁链表的顶部。通过LRU算法将锁对象信息存储至锁链表,使得在确定待删除的资源锁时,可将处于锁链表底部的锁对象信息对应的资源锁,确定为待删除的资源锁。另外,也可在在删除锁容器中的资源锁时,通过最近最少使用算法将锁链表中的锁对象信息重存为链表,重存的链表底部也是最近被访问时间记录较早的资源锁的锁对象信息,从而可将处于重存的链表底部的锁对象信息对应的资源锁,确定为待删除的资源锁。
由于一个资源锁在最近一段时间内没有被访问到,那么在将来被访问的可能性也较小,因此根据最近最少使用算法对资源锁进行淘汰,以将对资源锁的访问情况的影响降到较低程度。需要说明的是,在实际应用中,也可通过其他的缓存淘汰算法(例如最不经常使用算法LFU、自适应缓存替换算法ARC、先进先出算法FIFO等)确定待删除的资源锁。
步骤206,创建目标资源锁。此步骤与步骤104大致相同,此处不再赘述。
需要说明的是,本实施方式中是在创建新的目标资源锁前,对超过锁个数阈值的资源锁进行删除,同样也可以在创建新的目标资源锁后,通过缓存淘汰算法对超过锁个数阈值的资源锁进行删除;在创建新的目标资源锁后对超过锁个数阈值的资源锁进行删除时,只需保持删除后的锁容器中存储的资源锁的个数小于或等于锁个数阈值即可。通过上述方式来保持锁容器中存储的资源锁的个数不超过锁个数阈值,有效控制了资源锁对于存储空间的占用,避免了在例如高并发场景下无限制地创建大批量资源锁,导致应用系统中的资源锁过多而严重影响应用系统运行效率的情况。
下面以一实例对资源锁管理方法进行说明,如图3所示:
步骤301,接收对目标资源锁的请求;
步骤302,判断锁容器中是否存在目标资源锁;若否,执行步骤303;若是,执行步骤309。
具体地说,用户为了获取目标资源的访问权限,需要对目标资源的资源锁(即目标资源锁)发起请求;应用系统接收到对目标资源锁的请求后,根据目标资源的资源名在锁容器(锁map)中查找目标资源对应的资源锁;若锁容器中不存在目标资源锁,则自动发出对于目标资源的资源锁(即目标资源锁)的创建请求,从而应用系统响应于对目标资源锁的创建请求,实施本实施方式中的资源所管理方法。若锁容器中存在目标资源锁,则可向用户返回请求的目标资源锁。
步骤303,响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;此步骤与步骤201大致相同,此处不再赘述。
步骤304,根据已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;若是,执行步骤305;若否,执行步骤306。此步骤与步骤202大致相同,此处不再赘述。
步骤305,删除已过期的资源锁。此步骤与步骤203大致相同,此处不再赘述。
步骤306,判断锁容器中的资源锁的个数是否大于或等于锁个数阈值;若是,执行步骤307;若否,执行步骤308。此步骤与步骤204大致相同,此处不再赘述。
步骤307,对锁容器中的资源锁进行删除。此步骤与步骤205大致相同,此处不再赘述。
步骤308,在锁容器中创建目标锁,将目标资源锁的锁对象信息放置于锁链表顶部。
具体地说,本步骤大致与步骤104中创建目标资源锁的方式相同;另外,本实施方式中,锁链表通过最近最少使用算法存储锁对象信息,因此将创建目标资源锁的时间作为目标资源锁的最近被访问时间记录作为目标资源锁的最近被访问时间记录进行存储,并将新创建的目标资源锁的锁对象信息放置于锁链表的顶部。
步骤309,更新目标资源锁的最近被访问时间记录,将目标资源锁的锁对象信息移动至锁链表顶部。
具体地说,本实施方式中,锁链表通过最近最少使用算法存储锁对象信息;当锁容器中存在目标资源锁时,将锁链表中存储的目标资源锁的锁对象信息进行更新,即将目标资源锁的最近被访问时间记录更新为用户请求目标资源锁的时间,并将目标资源锁的锁对象信息移动至锁链表顶部,即将最新被访问的数据放置于缓存的顶部。
步骤310,返回目标资源锁。
具体地说,当锁容器中不存在目标资源锁时,则创建目标资源锁,将创建的目标资源锁返回至用户;当锁容器中存在目标资源锁时,则直接将目标资源锁返回至用户。
上述实例中包含了对于资源锁的请求、创建及释放等各项操作,均属于本实施例所说明的资源锁管理方法。
本实施方式相对于现有技术而言,在创建所述目标资源锁前,还包括:判断所述锁容器中的资源锁的个数是否大于或等于预设锁个数阈值;若是,则根据所述锁链表中的锁对象信息中包括的所述已创建的资源锁的最近被访问时间记录,通过最近最少使用算法确定待删除的资源锁,并对所述锁容器中的资源锁进行删除,删除后所述锁容器中资源锁的个数小于所述预设锁个数阈值;也就是说,应用系统对于锁容器中存储的资源锁的个数进行了限制,在创建新的资源锁前对超出锁个数阈值的资源锁进行删除,并使得删除后锁容器中的锁个数小于锁个数阈值,从而为即将创建的资源锁腾出了存储空间,且在创建新的资源锁后,锁容器中的锁个数也不会超出锁个数阈值,有效控制了资源锁对于存储空间的占用,避免了在例如高并发场景下无限制地创建大批量资源锁,导致应用系统中的资源锁过多而严重影响应用系统运行效率的情况;且由于删除资源锁时使用的最近最少使用算法是可将最近被访问的数据放在链表顶部,较早之前被访问的数据放在链表底部,因此可从链表底部开始删除数据,即删除的是最近最少被访问的数据;如果一个资源锁在最近一段时间内没有被访问到,那么在将来被访问的可能性也较小,因此根据最近最少使用算法对资源锁进行淘汰,以将对资源锁的访问情况的影响降到较低程度。
本发明第三实施方式涉及一种资源锁管理装置,如图4所示,包括:获取模块401,判断模块402,删除模块403,创建模块404。
获取模块401,用于响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;
判断模块402,用于根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;
删除模块403,用于在判断存在已过期的资源锁时删除所述已过期的资源锁;
创建模块404,用于创建所述目标资源锁。
在一个实例中,所述已创建的资源锁存储于预先建立的锁容器中;所述已创建的资源锁对应有锁对象信息,所述锁对象信息存储于预先建立的锁链表中,所述锁对象信息包括所述最近被访问时间记录;所述删除模块403删除所述已过期的资源锁,包括:在所述锁容器中删除所述已过期的资源锁,在所述锁链表中删除所述已过期的资源锁对应的锁对象信息。
在一个实例中,所述已创建的资源锁对应的锁对象信息还包括资源锁的有效时长;所述判断模块402根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁,包括:遍历所述锁链表,根据遍历到的锁对象信息中包括的所述资源锁的有效时长、所述最近被访问时间记录,及当前时间,判断所述遍历到的锁对象信息对应的资源锁是否已过期,直至对所述锁链表遍历结束。
在一个实例中,在所述创建模块404创建所述目标资源锁前,判断模块402还用于:判断所述锁容器中的资源锁的个数是否大于或等于预设锁个数阈值;若是,则删除模块403对所述锁容器中的资源锁进行删除,删除后所述锁容器中资源锁的个数小于所述预设锁个数阈值。
在一个实例中,所述删除模块403对所述锁容器中的资源锁进行删除,包括:根据所述锁链表中的锁对象信息确定待删除的资源锁,并对所述锁容器中的资源锁进行删除。
在一个实例中,所述删除模块403根据所述锁链表中的锁对象信息确定待删除的资源锁,包括:根据所述锁链表中的锁对象信息中包括的所述已创建的资源锁的最近被访问时间记录,通过最近最少使用算法确定待删除的资源锁。
不难发现,本实施方式为与第一实施方式或第二实施方式的相对应装置的实施例,本实施方式可与第一实施方式或第二实施方式互相配合实施,第一实施方式或第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,此处不再赘述。相应的,本实施方式中提到的相关技术细节也可应用在第一实施方式或第二实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种服务器,如图5所示,包括:至少一个处理器501;以及,与至少一个处理器501通信连接的存储器502;其中,存储器502存储有可被至少一个处理器501执行的指令,指令被至少一个处理器501执行,以使至少一个处理器501能够执行上述资源锁管理方法。
其中,存储器502和处理器501采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器502的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器501处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器501。
处理器501负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器502可以被用于存储处理器501在执行操作时所使用的数据。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述资源锁管理方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (9)
1.一种资源锁管理方法,其特征在于,包括:
响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;
根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;
若是,则删除所述已过期的资源锁;
创建所述目标资源锁,所述已创建的资源锁存储于预先建立的锁容器中;
其中,在所述创建所述目标资源锁前,还包括:
判断所述锁容器中的资源锁的个数是否大于或等于预设锁个数阈值;若是,则对所述锁容器中的资源锁进行删除,删除后所述锁容器中资源锁的个数小于所述预设锁个数阈值;
在创建新的目标资源锁后,还包括:
若所述锁容器中的资源锁的个数超过所述预设锁个数阈值,则对所述资源锁进行删除, 删除后的锁容器中存储的资源锁的个数小于或等于所述预设锁个数阈值。
2.根据权利要求1所述的资源锁管理方法,其特征在于,所述已创建的资源锁对应有锁对象信息,所述锁对象信息存储于预先建立的锁链表中,所述锁对象信息包括所述最近被访问时间记录;
所述删除所述已过期的资源锁,包括:
在所述锁容器中删除所述已过期的资源锁;
在所述锁链表中删除所述已过期的资源锁对应的锁对象信息。
3.根据权利要求2所述的资源锁管理方法,其特征在于,所述已创建的资源锁对应的锁对象信息还包括资源锁的有效时长;
所述根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁,包括:
遍历所述锁链表,根据遍历到的锁对象信息中包括的所述资源锁的有效时长、所述最近被访问时间记录,及当前时间,判断所述遍历到的锁对象信息对应的资源锁是否已过期,直至对所述锁链表遍历结束。
4.根据权利要求2所述的资源锁管理方法,其特征在于,所述对所述锁容器中的资源锁进行删除,包括:
根据所述锁链表中的锁对象信息确定待删除的资源锁,并对所述锁容器中的资源锁进行删除。
5.根据权利要求4所述的资源锁管理方法,其特征在于,所述根据所述锁链表中的锁对象信息确定待删除的资源锁,包括:
根据所述锁链表中的锁对象信息中包括的所述已创建的资源锁的最近被访问时间记录,通过最近最少使用算法确定待删除的资源锁。
6.根据权利要求2至5中任一项所述的资源锁管理方法,其特征在于,在所述创建所述目标资源锁后,还包括:
将所述目标资源锁的创建时间作为所述目标资源锁的最近被访问时间记录存储于所述锁链表中。
7.一种资源锁管理装置,其特征在于,包括:
获取模块,用于响应于对目标资源锁的创建请求,获取已创建的资源锁的最近被访问时间记录;
判断模块,用于根据所述已创建的资源锁的最近被访问时间记录,判断是否存在已过期的资源锁;
删除模块,用于在判断存在已过期的资源锁时删除所述已过期的资源锁;
创建模块,用于创建所述目标资源锁,所述已创建的资源锁存储于预先建立的锁容器中;
在所述创建模块创建新的资源锁前,判断模块还用于:判断锁容器中的资源锁的个数是否大于或等于预设锁个数阈值,若是,则对所述锁容器中的资源锁进行删除,删除后所述锁容器中资源锁的个数小于所述预设锁个数阈值;
在所述创建模块创建新的资源锁后,判断模块还用于:判断锁容器中的资源锁的个数是否超过所述预设锁个数阈值,若超过所述预设锁个数阈值则对所述资源锁进行删除,删除后所述锁容器中存储的资源锁的个数小于所述预设锁个数阈值。
8.一种服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6中任一项所述的资源锁管理方法。
9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的资源锁管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635787.1A CN110554914B (zh) | 2019-07-15 | 2019-07-15 | 资源锁管理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635787.1A CN110554914B (zh) | 2019-07-15 | 2019-07-15 | 资源锁管理方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110554914A CN110554914A (zh) | 2019-12-10 |
CN110554914B true CN110554914B (zh) | 2022-11-04 |
Family
ID=68735809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910635787.1A Active CN110554914B (zh) | 2019-07-15 | 2019-07-15 | 资源锁管理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110554914B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367682B (zh) * | 2020-03-06 | 2022-07-08 | 苏州浪潮智能科技有限公司 | 一种资源操作锁的控制方法、系统、装置及可读存储介质 |
CN113342507B (zh) * | 2021-07-07 | 2024-03-29 | 湖南四方天箭信息科技有限公司 | 一种分布式锁服务实现方法、装置及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201406833D0 (en) * | 2014-04-16 | 2014-05-28 | Ibm | A busy lock and a passive lock featuring embedded load management capabilities |
CN106776055A (zh) * | 2017-02-19 | 2017-05-31 | 网宿科技股份有限公司 | 一种分布式锁实现方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5759305B2 (ja) * | 2011-08-19 | 2015-08-05 | キヤノン株式会社 | アクセス管理システム、アクセス管理方法、アクセス管理サーバ、連携サーバ、およびプログラム |
US9298507B2 (en) * | 2013-09-26 | 2016-03-29 | International Business Machines Corporation | Data processing resource management |
US10417056B2 (en) * | 2015-08-04 | 2019-09-17 | Oracle International Corporation | Systems and methods for performing concurrency restriction and throttling over contended locks |
CN106020939A (zh) * | 2016-05-31 | 2016-10-12 | 北京小米移动软件有限公司 | 删除锁的方法、装置和用于删除锁的装置 |
CN106874125B (zh) * | 2017-01-13 | 2021-04-06 | 北京元心科技有限公司 | 多容器系统间共享系统资源的方法及装置 |
CN109189582B (zh) * | 2018-07-20 | 2020-09-15 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
-
2019
- 2019-07-15 CN CN201910635787.1A patent/CN110554914B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201406833D0 (en) * | 2014-04-16 | 2014-05-28 | Ibm | A busy lock and a passive lock featuring embedded load management capabilities |
CN106776055A (zh) * | 2017-02-19 | 2017-05-31 | 网宿科技股份有限公司 | 一种分布式锁实现方法和系统 |
Non-Patent Citations (2)
Title |
---|
Towards Automatic Lock Removal for Scalable Synchronization;Maya Arbel等;《Lecture Notes in Computer Science》;20151002;1-16页 * |
并发数据结构及其在动态内存管理中的应用;刘恒;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20140215(第2期);I138-91 * |
Also Published As
Publication number | Publication date |
---|---|
CN110554914A (zh) | 2019-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8868831B2 (en) | Caching data between a database server and a storage system | |
US10872037B2 (en) | Estimating worker nodes needed for performing garbage collection operations | |
US8868610B2 (en) | File system with optimistic I/O operations on shared storage | |
US9734157B1 (en) | Method for sub-block operations on a journal block using ranged locking | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
EP2541423B1 (en) | Replacement policy for resource container | |
CN110109868B (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
CN105608115A (zh) | 数据获取方法与装置 | |
CN108897628A (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN109213604B (zh) | 一种数据源的管理方法和装置 | |
KR101634403B1 (ko) | 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 | |
CN110554914B (zh) | 资源锁管理方法、装置、服务器及存储介质 | |
US20200310964A1 (en) | Marking impacted similarity groups in garbage collection operations in deduplicated storage systems | |
CN112052264B (zh) | 业务数据查询方法、装置、电子设备及可读存储介质 | |
US20200310965A1 (en) | Deleting data in storage systems that perform garbage collection | |
CN109697127B (zh) | 一种对共享资源的访问操作加锁的方法和装置 | |
CN113485635A (zh) | 数据存储方法、装置、设备及存储介质 | |
US9021208B2 (en) | Information processing device, memory management method, and computer-readable recording medium | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
US8341368B2 (en) | Automatic reallocation of structured external storage structures | |
US20140006348A1 (en) | Opportunistic clearing of sync states associated with a database | |
CN103077099A (zh) | 一种块级快照系统及基于该系统的用户读写方法 | |
CN111291083A (zh) | 网页源码数据处理方法、装置及计算机设备 | |
CN107967306B (zh) | 一种存储系统中关联块的快速挖掘方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |