CN112069025B - 锁过期事件的处理方法及装置 - Google Patents
锁过期事件的处理方法及装置 Download PDFInfo
- Publication number
- CN112069025B CN112069025B CN202010865872.XA CN202010865872A CN112069025B CN 112069025 B CN112069025 B CN 112069025B CN 202010865872 A CN202010865872 A CN 202010865872A CN 112069025 B CN112069025 B CN 112069025B
- Authority
- CN
- China
- Prior art keywords
- expiration
- event
- lock
- time
- target
- 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
- 238000003672 processing method Methods 0.000 title description 4
- 238000012544 monitoring process Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims abstract description 43
- 230000007958 sleep Effects 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000005059 dormancy Effects 0.000 claims abstract description 23
- 238000004590 computer program Methods 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 6
- 230000004622 sleep time Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000002411 adverse Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供了一种锁过期事件的处理方法及装置,该方法包括:在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件;在检测到目标锁过期事件未过期的情况下,计算得到过期时长;将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;目标时长小于预设固定监测时长。本发明实施例在过期时长小于预设固定监测时长的情况下,将本次的休眠时间调整为小于预设固定监测时长的目标时长,从而无需再等待预设固定监测时长之后,就可以检测并处理事件队列中已过期的锁过期事件。
Description
技术领域
本发明涉及互联网数据通信领域,尤其涉及一种锁过期事件的处理方法及装置。
背景技术
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。也就是说,分布式锁用于保证同一时间只有一个客户端可以对共享资源进行操作。因为如果出现多个客户端同时操作共享资源,就可能导致数据不一致,数据丢失等情况。为避免共享资源长期被同一客户端占用,通常在设置分布式锁的时候,会对应生成锁过期事件,记录分布式锁的过期时间或有效时间等相关信息。在一锁过期事件的有效时间过后,将对该锁过期事件进行处理,释放分布式锁。
目前通常采用时间轮算法处理锁过期事件。也就是说,设置固定时长的监测周期,每隔固定时长处理一次锁过期事件。
然而,在每次处理完锁过期事件之后,下一次处理锁过期事件之前,将存在一些锁过期事件已经过期。由于检测周期固定,仍要等到下一次处理锁过期事件的时候才可以处理这部分早已过期的锁过期事件。因此,这部分锁过期事件的处理存在较大的延迟,会对整个系统带来一些不利的影响。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的锁过期事件的处理方法及装置。
第一方面,本发明实施例提供了一种锁过期事件的处理方法,所述方法包括:
在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长。
可选的,在所述将唤醒状态切换为休眠状态的步骤之后,所述方法还包括:
在所述过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为所述预设固定监测时长。
可选的,所述事件队列中的锁过期事件根据各自的过期时间,按预设排序方式进行排列;其中,所述预设排序方式包括:小顶堆排序方式、从早到晚依次排序的方式或者从晚到早依次排序的方式。
可选的,在所述预设排序方式包括:小顶堆排序方式的情况下,所述检测事件队列中的目标锁过期事件是否过期,包括:
检测所述事件队列中位于堆顶位置的锁过期事件是否过期。
可选的,在所述预设排序方式包括:小顶堆排序方式的情况下,所述方法还包括:
在检测到所述事件队列中位于堆顶位置的锁过期事件已过期的情况下,循环执行对事件队列中位于堆顶位置的锁过期事件进行处理,去除所述事件队列中堆顶位置的锁过期事件,对所述事件队列中剩余的锁过期事件按小顶堆的排序方式重新进行排列,并再次检测所述事件队列中位于堆顶位置的锁过期事件,直至检测到堆顶位置的锁过期事件未过期为止。
可选的,在所述在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期的步骤之前,所述方法还包括:
获取未处理的锁过期事件;
在所述未处理的锁过期事件的数量超过目标阈值的情况下,将所述未处理的锁过期事件分别存储于多个事件队列中;
针对于所述多个事件队列中每一事件队列,并行执行所述在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长。
第二方面,本发明实施例还提供一种锁过期事件的处理装置,所述装置包括:
检测模块,用于在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
计算模块,用于在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
第一处理模块,用于将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长。
可选的,所述装置还包括:
第二处理模块,用于将唤醒状态切换为休眠状态,在所述过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为所述预设固定监测时长。
第三方面,本发明实施例还提供一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的锁过期事件的处理方法的步骤。
第四方面,本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的锁过期事件的处理方法的步骤。
在本发明实施例中,在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期。其中,目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件。仅通过目标锁过期事件就可以判断出事件队列中是否存在已过期的锁过期事件。在检测到目标锁过期事件未过期的情况下,计算得到过期时长;过期时长为当前时刻与目标锁过期事件的过期时间之间的时长。也就是说从当前时刻开始再经过过期时长,目标锁过期事件就会过期。将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,目标时长大于等于过期时长,并且小于预设固定监测时长。由于没有检测到过期的锁过期事件,因此重新进入休眠状态进行休眠。并且经过休眠时间后将重新由休眠状态切换为唤醒状态,进而重新检测事件队列中的目标锁过期事件是否过期。本发明实施例在过期时长小于预设固定监测时长的情况下,将本次的休眠时间调整为小于预设固定监测时长的目标时长,从而无需再等待预设固定监测时长之后,就可以将休眠状态切换为唤醒状态;进而检测并处理事件队列中已过期的锁过期事件。缩短了处理锁过期事件的延迟,减缓了延迟对系统带来的不利影响。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的锁过期事件的处理方法的步骤流程图;
图2为本发明实施例提供的锁过期事件的处理装置的结构框图;
图3为本发明实施例提供的电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
参见图1,本发明实施例提供了一种锁过期事件的处理方法,该方法包括:
步骤101,在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期。
应当说明的是,锁过期事件可以是分布式系统在生成分布式锁时,对应生成的事件。该锁过期事件包含其对应的分布式锁的有效时间或者过期时间;并且锁过期事件还包含有其对应的分布式锁的标识。休眠状态和唤醒状态可以为该分布式系统的工作状态,当然也可以为分布式系统中用于处理锁过期事件的功能模块的工作状态。
这里,分布式系统的工作状态在休眠状态和唤醒状态之间不断切换。在休眠状态下是不会检测事件队列中是否存在已过期的锁过期事件的,也不会对已过期的锁过期事件进行处理。只有在唤醒状态下才会检测锁过期事件是否过期以及处理已过期的锁过期事件。
事件队列用于存储未处理的锁过期事件;也就是说其中可以包含已过期或者未过期的锁过期事件。当已过期的锁过期事件被处理之后,将其从事件队列中去除。
目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件。因此只需要判断目标锁过期事件是否过期,就可以确定事件队列中是否存在已过期的锁过期事件。在目标锁过期事件中的过期时间晚于当前时刻时,则目标锁过期事件并未过期。在目标锁过期事件中的过期时间早于或者等于当前时刻时,则目标锁过期事件已过期。
步骤102,在检测到目标锁过期事件未过期的情况下,计算得到过期时长。
应当说明的是,目标锁过期事件未过期,说明事件队列中的所有锁过期事件均为过期。过期时长为当前时刻与目标锁过期事件的过期时间之间的时长。也就是说从当前时刻开始再经过过期时长,目标锁过期事件就会过期。
在检测到目标锁过期事件已过期的情况下,将处理目标锁过期事件。同时更新事件队列,将已处理的锁过期事件去除,并再次检测更新后的事件队列中的目标锁过期事件是否过期,若还过期,则循环执行前述步骤,直至事件队列中不存在已过期的锁过期事件为止。也就是说,在检测到目标锁过期事件已过期的情况下,对事件队列中所有已过期的锁过期事件进行处理,并更新事件队列,去除被处理的锁过期事件,并执行步骤102。
步骤103,将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长。
应当说明的是,切换为休眠状态之后,将在休眠时间之后结束本次休眠,再次由休眠状态切换为唤醒状态。目标时长大于等于过期时长,并且小于预设固定监测时长。较佳的,目标时长等于过期时长。
当然,在过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为预设固定监测时长。
本发明实施例中,在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期。其中,目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件。仅通过目标锁过期事件就可以判断出事件队列中是否存在已过期的锁过期事件。在检测到目标锁过期事件未过期的情况下,计算得到过期时长;过期时长为当前时刻与目标锁过期事件的过期时间之间的时长。也就是说从当前时刻开始再经过过期时长,目标锁过期事件就会过期。将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,目标时长大于等于过期时长,并且小于预设固定监测时长。由于没有检测到过期的锁过期事件,因此重新进入休眠状态进行休眠。并且经过休眠时间后将重新由休眠状态切换为唤醒状态,进而重新检测事件队列中的目标锁过期事件是否过期。本发明实施例在过期时长小于预设固定监测时长的情况下,将本次的休眠时间调整为小于预设固定监测时长的目标时长,从而无需再等待预设固定监测时长之后,就可以将休眠状态切换为唤醒状态;进而检测并处理事件队列中已过期的锁过期事件。缩短了处理锁过期事件的延迟,减缓了延迟对系统带来的不利影响。
可选的,事件队列中的锁过期事件根据各自的过期时间,按预设排序方式进行排列;其中,预设排序方式包括:小顶堆排序方式、从早到晚依次排序的方式或者从晚到早依次排序的方式。
应当说明的是,锁过期事件以不同的排序方式在事件队列中进行排序,使得事件队列具有不同的复杂度。根据各自过期时间按照不同排序方式排列的锁过期事件,其目标锁过期事件在事件队列中所处的位置可能不同。事件队列中的锁过期事件根据各自的过期时间,按小顶堆排序方式进行排列时,位于堆顶位置的锁过期事件即为目标锁过期事件。事件队列中的锁过期事件根据各自的过期时间,按从早到晚依次排序的方式进行排列时,位于事件队列首位的锁过期事件即为目标锁过期事件。事件队列中的锁过期事件根据各自的过期时间,按从晚到早依次排序的方式进行排列时,位于事件队列末位的锁过期事件即为目标锁过期事件。
可选的,在预设排序方式包括:小顶堆排序方式的情况下,检测事件队列中的目标锁过期事件是否过期,包括:
检测事件队列中位于堆顶位置的锁过期事件是否过期。
应当说明的是,小顶堆排序方式中堆顶位置的时间最早,因此目标锁过期事件就是堆顶位置的锁过期事件。
可选的,在预设排序方式包括:小顶堆排序方式的情况下,该方法还包括:
在检测到事件队列中位于堆顶位置的锁过期事件已过期的情况下,循环执行对事件队列中位于堆顶位置的锁过期事件进行处理,去除事件队列中堆顶位置的锁过期事件,对事件队列中剩余的锁过期事件按小顶堆的排序方式重新进行排列,并再次检测事件队列中位于堆顶位置的锁过期事件,直至检测到堆顶位置的锁过期事件未过期为止。
应当说明的是,针对于每一次的循环,只检测堆顶位置的锁过期事件是否过期。若堆顶位置的锁过期事件已过期,在处理已过期的锁过期事件的同时,将处理的锁过期事件从事件队列中去除。更新事件队列,即针对事件队列中剩余的锁过期事件,根据各自的过期时间,按小顶堆的排序方式重新进行排列,形成新的顶堆。然后进行下一次循环,若在循环过程中确定堆顶位置的锁过期事件已过期,则结束循环。在检测到堆顶位置的锁过期事件未过期时,需要将唤醒状态切换为休眠状态进入休眠,即执行上述步骤102、步骤103。
本发明实施例中,事件队列中的锁过期事件采用小顶堆的排序方式进行排列。在检测目标锁过期事件是否过期时,只需要检测堆顶位置的锁过期事件即可。同时也可以降低处理事件队列中锁过期事件的时间复杂度。
可选的,在在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期的步骤之前,该方法还包括:
获取未处理的锁过期事件;
在未处理的锁过期事件的数量超过目标阈值的情况下,将未处理的锁过期事件分别存储于多个事件队列中;
针对于多个事件队列中每一事件队列,并行执行在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;在检测到目标锁过期事件未过期的情况下,计算得到过期时长;将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长。
应当说明的是,未处理的锁过期事件的数量并不固定。在其数量过大时,若采用一个事件队列存储所有的未处理的锁过期事件,每次更新事件队列的耗时将会较长。因此,为避免更新事件队列的耗时较长,可以将未处理的锁过期事件存储于多个事件队列中。针对于每个事件队列并发执行上述步骤101、步骤102以及步骤103。较佳的,目标阈值可以根据需求自行设定。当然在未处理的锁过期事件的数量超过目标阈值的情况下,事件队列的数量以及每个事件队列中存储的未处理的锁过期事件的数量也可以根据需求自行设定。
本发明实施例中,在未处理的锁过期事件的数量过多的情况下,将未处理的锁过期事件分别存储在多个事件队列。通过并发的形式,针对每个事件队列并发执行,避免因一个事件队列中存储的锁过期事件过多,造成耗时过长的问题。
以上介绍了本发明实施例提供的锁过期事件的处理方法,下面将结合附图介绍本发明实施例提供的锁过期事件的处理装置。
参见图2,本发明实施例还提供了一种锁过期事件的处理装置,该装置包括:
检测模块21,用于在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件;
计算模块22,用于在检测到目标锁过期事件未过期的情况下,计算得到过期时长;过期时长为当前时刻与目标锁过期事件的过期时间之间的时长;
第一处理模块23,用于将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,目标时长大于等于过期时长,并且小于预设固定监测时长。
可选的,该装置还包括:
第二处理模块,用于将唤醒状态切换为休眠状态,在过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为预设固定监测时长。
可选的,事件队列中的锁过期事件根据各自的过期时间,按预设排序方式进行排列;其中,预设排序方式包括:小顶堆排序方式、从早到晚依次排序的方式或者从晚到早依次排序的方式。
可选的,在预设排序方式包括:小顶堆排序方式的情况下,检测模块,具体用于检测事件队列中位于堆顶位置的锁过期事件是否过期。
可选的,在预设排序方式包括:小顶堆排序方式的情况下,该装置还包括:
过期事件处理模块,用于在检测到事件队列中位于堆顶位置的锁过期事件已过期的情况下,循环执行对事件队列中位于堆顶位置的锁过期事件进行处理,去除事件队列中堆顶位置的锁过期事件,对事件队列中剩余的锁过期事件按小顶堆的排序方式重新进行排列,并再次检测事件队列中位于堆顶位置的锁过期事件,直至检测到堆顶位置的锁过期事件未过期为止。
可选的,该装置还包括:
获取模块,用于获取未处理的锁过期事件;
存储模块,用于在未处理的锁过期事件的数量超过目标阈值的情况下,将未处理的锁过期事件分别存储于多个事件队列中;
并发模块,用于针对于多个事件队列中每一事件队列,并行执行在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;在检测到目标锁过期事件未过期的情况下,计算得到过期时长;将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长。
本发明实施例提供的锁过期事件的处理装置能够实现图1的方法实施例中锁过期事件的处理方法实现的各个过程,为避免重复,这里不再赘述。
本发明的实施例中,检测模块,用于在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;目标锁过期事件为事件队列中过期时间距离当前时刻最近的锁过期事件。仅通过目标锁过期事件就可以判断出事件队列中是否存在已过期的锁过期事件。计算模块,用于在检测到目标锁过期事件未过期的情况下,计算得到过期时长;过期时长为当前时刻与目标锁过期事件的过期时间之间的时长。也就是说从当前时刻开始再经过过期时长,目标锁过期事件就会过期。第一处理模块,用于将唤醒状态切换为休眠状态,在过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,目标时长大于等于过期时长,并且小于预设固定监测时长。由于没有检测到过期的锁过期事件,因此重新进入休眠状态进行休眠。并且经过休眠时间后将重新由休眠状态切换为唤醒状态,进而重新检测事件队列中的目标锁过期事件是否过期。本发明实施例在过期时长小于预设固定监测时长的情况下,将本次的休眠时间调整为小于预设固定监测时长的目标时长,从而无需再等待预设固定监测时长之后,就可以将休眠状态切换为唤醒状态;进而检测并处理事件队列中已过期的锁过期事件。缩短了处理锁过期事件的延迟,减缓了延迟对系统带来的不利影响。
可选的,本申请实施例还提供一种电子设备,包括处理器,存储器,存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时实现上述锁过期事件的处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
举个例子如下,图3示出了一种电子设备的实体结构示意图。
如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:
在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再一方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的锁过期事件的处理方法,例如包括:
在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种锁过期事件的处理方法,其特征在于,所述方法包括:
在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长;
其中,所述事件队列中的锁过期事件根据各自的过期时间,按预设排序方式进行排列;其中,所述预设排序方式包括:小顶堆排序方式、从早到晚依次排序的方式或者从晚到早依次排序的方式;
其中,在所述预设排序方式包括:小顶堆排序方式的情况下,所述方法还包括:
在检测到所述事件队列中位于堆顶位置的锁过期事件已过期的情况下,循环执行对事件队列中位于堆顶位置的锁过期事件进行处理,去除所述事件队列中堆顶位置的锁过期事件,对所述事件队列中剩余的锁过期事件按小顶堆的排序方式重新进行排列,并再次检测所述事件队列中位于堆顶位置的锁过期事件,直至检测到堆顶位置的锁过期事件未过期为止。
2.根据权利要求1所述的方法,其特征在于,在所述将唤醒状态切换为休眠状态的步骤之后,所述方法还包括:
在所述过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为所述预设固定监测时长。
3.根据权利要求1所述的方法,其特征在于,在所述预设排序方式包括:小顶堆排序方式的情况下,所述检测事件队列中的目标锁过期事件是否过期,包括:
检测所述事件队列中位于堆顶位置的锁过期事件是否过期。
4.根据权利要求1所述的方法,其特征在于,在所述在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期的步骤之前,所述方法还包括:
获取未处理的锁过期事件;
在所述未处理的锁过期事件的数量超过目标阈值的情况下,将所述未处理的锁过期事件分别存储于多个事件队列中;
针对于所述多个事件队列中每一事件队列,并行执行所述在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长。
5.一种锁过期事件的处理装置,其特征在于,所述装置包括:
检测模块,用于在监测到休眠状态切换为唤醒状态的情况下,检测事件队列中的目标锁过期事件是否过期;所述目标锁过期事件为所述事件队列中过期时间距离当前时刻最近的锁过期事件;
计算模块,用于在检测到所述目标锁过期事件未过期的情况下,计算得到过期时长;所述过期时长为所述当前时刻与所述目标锁过期事件的过期时间之间的时长;
第一处理模块,用于将唤醒状态切换为休眠状态,在所述过期时长小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为目标时长;其中,所述目标时长大于等于所述过期时长,并且小于所述预设固定监测时长;
其中,所述事件队列中的锁过期事件根据各自的过期时间,按预设排序方式进行排列;其中,所述预设排序方式包括:小顶堆排序方式、从早到晚依次排序的方式或者从晚到早依次排序的方式;
其中,在所述预设排序方式包括:小顶堆排序方式的情况下,所述装置还包括:
过期事件处理模块,用于在检测到所述事件队列中位于堆顶位置的锁过期事件已过期的情况下,循环执行对事件队列中位于堆顶位置的锁过期事件进行处理,去除所述事件队列中堆顶位置的锁过期事件,对所述事件队列中剩余的锁过期事件按小顶堆的排序方式重新进行排列,并再次检测所述事件队列中位于堆顶位置的锁过期事件,直至检测到堆顶位置的锁过期事件未过期为止。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:第二处理模块,用于将唤醒状态切换为休眠状态,在所述过期时长不小于预设固定监测时长的情况下,将本次休眠的休眠时间调整为所述预设固定监测时长。
7.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至4中任一项所述的锁过期事件的处理方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4中任一项所述的锁过期事件的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865872.XA CN112069025B (zh) | 2020-08-25 | 2020-08-25 | 锁过期事件的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865872.XA CN112069025B (zh) | 2020-08-25 | 2020-08-25 | 锁过期事件的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112069025A CN112069025A (zh) | 2020-12-11 |
CN112069025B true CN112069025B (zh) | 2024-02-23 |
Family
ID=73660699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865872.XA Active CN112069025B (zh) | 2020-08-25 | 2020-08-25 | 锁过期事件的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112069025B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118093211A (zh) * | 2024-01-10 | 2024-05-28 | 广东保伦电子股份有限公司 | 一种分布式锁的处理方法、装置、设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2230119A1 (de) * | 1971-06-28 | 1973-01-25 | Ibm | Einrichtung und verfahren in elektronischen datenverarbeitungsanlagen zur feststellung von ueberfaelligen ereignissen |
CN1786918A (zh) * | 2004-12-10 | 2006-06-14 | 惠普开发有限公司 | 分布式锁 |
GB0719770D0 (en) * | 2003-06-27 | 2007-11-21 | Intel Corp | Queued locks using monitor-memory wait |
CN105873200A (zh) * | 2016-05-20 | 2016-08-17 | 美的集团股份有限公司 | 一种周期唤醒节点的方法和装置 |
CN106020939A (zh) * | 2016-05-31 | 2016-10-12 | 北京小米移动软件有限公司 | 删除锁的方法、装置和用于删除锁的装置 |
CN107145396A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 分布式锁实现方法和设备 |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
CN108628691A (zh) * | 2017-03-22 | 2018-10-09 | 三星电子株式会社 | 包括死锁检测器的系统及其方法 |
CN109445969A (zh) * | 2018-12-04 | 2019-03-08 | 浪潮电子信息产业股份有限公司 | 一种分布式tgt节点间的通信方法、装置及设备 |
CN111259030A (zh) * | 2020-01-16 | 2020-06-09 | 平安医疗健康管理股份有限公司 | 基于分布式锁的线程执行方法及装置、存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769734B2 (en) * | 2004-07-26 | 2010-08-03 | International Business Machines Corporation | Managing long-lived resource locks in a multi-system mail infrastructure |
US10049022B2 (en) * | 2013-06-24 | 2018-08-14 | Oracle International Corporation | Systems and methods to retain and reclaim resource locks and client states after server failures |
US10459909B2 (en) * | 2016-01-13 | 2019-10-29 | Walmart Apollo, Llc | System for providing a time-limited mutual exclusivity lock and method therefor |
-
2020
- 2020-08-25 CN CN202010865872.XA patent/CN112069025B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2230119A1 (de) * | 1971-06-28 | 1973-01-25 | Ibm | Einrichtung und verfahren in elektronischen datenverarbeitungsanlagen zur feststellung von ueberfaelligen ereignissen |
GB0719770D0 (en) * | 2003-06-27 | 2007-11-21 | Intel Corp | Queued locks using monitor-memory wait |
CN1786918A (zh) * | 2004-12-10 | 2006-06-14 | 惠普开发有限公司 | 分布式锁 |
CN107145396A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 分布式锁实现方法和设备 |
CN105873200A (zh) * | 2016-05-20 | 2016-08-17 | 美的集团股份有限公司 | 一种周期唤醒节点的方法和装置 |
CN106020939A (zh) * | 2016-05-31 | 2016-10-12 | 北京小米移动软件有限公司 | 删除锁的方法、装置和用于删除锁的装置 |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
CN108628691A (zh) * | 2017-03-22 | 2018-10-09 | 三星电子株式会社 | 包括死锁检测器的系统及其方法 |
CN109445969A (zh) * | 2018-12-04 | 2019-03-08 | 浪潮电子信息产业股份有限公司 | 一种分布式tgt节点间的通信方法、装置及设备 |
CN111259030A (zh) * | 2020-01-16 | 2020-06-09 | 平安医疗健康管理股份有限公司 | 基于分布式锁的线程执行方法及装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112069025A (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918141B (zh) | 线程执行方法、装置、终端及存储介质 | |
US10417062B2 (en) | Method and apparatus of unloading out of memory processing flow to user space | |
CN112631761B (zh) | 一种任务调度监控方法和装置 | |
CN112069025B (zh) | 锁过期事件的处理方法及装置 | |
US20210103475A1 (en) | Cooperation-based node management protocol | |
CN112040001A (zh) | 一种基于分布式存储的请求处理方法及装置 | |
CN111722934A (zh) | 分布式定时任务处理方法及系统 | |
CN115665045A (zh) | 一种高并发限流方法、装置以及计算机存储介质 | |
CN112650566B (zh) | 定时任务处理方法、装置、计算机设备和存储介质 | |
CN113326170A (zh) | 任务延迟风险检测方法、电子设备及存储介质 | |
CN111935782A (zh) | 客户端重试机制的优化方法、存储介质 | |
CN114780217B (zh) | 任务调度方法、装置、计算机设备以及介质 | |
CN113220094A (zh) | 调度器优化方法、装置、终端及存储介质 | |
CN116501465A (zh) | 自动驾驶任务执行方法、装置、电子设备及存储介质 | |
CN105264499B (zh) | 一种共享队列中的消息处理方法、装置及接收核 | |
CN111176899B (zh) | 一种云备份方法、装置及设备 | |
CN101662382A (zh) | 一种抑制网管系统中振荡告警上报的方法及系统 | |
CN115509700A (zh) | 多类型任务管理方法及装置 | |
CN111796949A (zh) | 通讯任务处理方法、装置、设备及存储介质 | |
CN102238022A (zh) | 一种网络管理系统及数据采集方法 | |
CN118035514B (zh) | 基于区块链系统的敏感信息过滤方法、装置、设备和介质 | |
CN113590708B (zh) | 自适应延迟消费方法、程序产品及存储介质 | |
CN115495321B (zh) | 一种超算节点使用状态自动识别方法 | |
CN118689605A (zh) | 多节点定时任务的处理方法及装置、设备及存储介质 | |
CN118860585A (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 |