CN110377405A - 轻量级请求的并发处理方法及相关设备 - Google Patents
轻量级请求的并发处理方法及相关设备 Download PDFInfo
- Publication number
- CN110377405A CN110377405A CN201910521800.0A CN201910521800A CN110377405A CN 110377405 A CN110377405 A CN 110377405A CN 201910521800 A CN201910521800 A CN 201910521800A CN 110377405 A CN110377405 A CN 110377405A
- Authority
- CN
- China
- Prior art keywords
- lightweight
- request
- task
- request task
- lightweight request
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims description 16
- 239000004744 fabric Substances 0.000 claims description 2
- 238000000034 method Methods 0.000 abstract description 9
- 238000012827 research and development Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及研发管理领域,本申请公开了一种轻量级请求的并发处理方法及相关设备,所述方法包括:获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。本申请通过分布式锁及定时器对并发的轻量级请求任务进行逐个执行,可快速解决高并发轻量级请求任务,保证请求不丢失,提高处理效率。
Description
技术领域
本申请涉及研发管理领域,特别涉及一种轻量级请求的并发处理方法及相关设备。
背景技术
在解决大并发请求的时候,主要是为了解决以下问题:
1.保证内容不丢失;
2.尽量缩短请求反馈时间。
但是目前的解决方案并没有对轻量级的请求给出一个针对性的,或者更好的一种解决方案,普遍都有一些缺陷,比如数据库乐观锁+线程池方式,该技术方案严重依赖数据库,性能不高,会对数据库造成比较大的影响;而消息中间件的方案会导致加重系统负担,不太适合轻量级请求。
发明内容
本申请的目的在于针对现有技术的不足,提供一种轻量级请求的并发处理方法及相关设备,通过分布式锁及定时器对并发的轻量级请求任务进行逐个执行,可快速解决高并发轻量级请求任务,保证请求不丢失,提高处理效率。
为达到上述目的,本申请的技术方案提供一种轻量级请求的并发处理方法及相关设备。
本申请公开了一种轻量级请求的并发处理方法,包括以下步骤:
获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;
当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;
当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
较佳地,所述获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务,包括:
获取多个轻量级请求任务及所述轻量级请求任务的数目;
获取轻量级请求任务对分布式锁的请求,当所述轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,将所述分布式锁的状态设为占用;
执行获得分布式锁的轻量级请求任务,并暂停剩余的轻量级请求任务。
较佳地,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
当执行所述选取的轻量级请求任务时,获取所述选取的轻量级请求任务对应的分布式锁的时间戳,并设定所述分布式锁的有效时间;
启动对所述分布式锁的有效时间的计时,并对剩余的轻量级请求任务设置请求有效期限并启动计时。
较佳地,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
当执行所述选取的轻量级请求任务时,获取剩余的轻量级请求任务的数目;
检测所述选取的轻量级请求任务是否是最后一个轻量级请求任务,如果不是,则对剩余的轻量级请求任务设置请求有效期限并启动计时。
较佳地,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时后,包括:
当所述选取的轻量级请求任务执行完毕后,释放所述分布式锁,并将所述分布式锁的状态设置为空闲;
获取剩余的轻量级请求任务对分布式锁的请求。
较佳地,所述当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
当所述请求有效期限超时后,检测当前轻量级请求任务的分布式锁的状态;
当检测到当前轻量级请求任务的分布式锁的状态为占用时,检测当前轻量级请求任务的分布式锁的有效时间是否超时,如果检测到当前轻量级请求任务的分布式锁的有效时间已经超时,则停止执行当前轻量级请求任务,释放分布式锁,并将分布式锁的状态设为空闲,否则重新对所述请求有效期限进行计时;
当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
较佳地,所述当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
当检测到当前轻量级请求任务的分布式锁的状态为空闲时,获取剩余的轻量级请求任务对分布式锁的请求;
当剩余的轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,执行获得分布式锁的轻量级请求任务,对剩余的轻量级请求任务重新设置请求有效期限,并对所述请求有效期限是否超时进行检测,直到所有轻量级请求任务执行完毕。
本申请还公开了一种轻量级请求的并发处理装置,所述装置包括:
任务选取模块:设置为获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;
计时模块:设置为当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;
任务处理模块:设置为当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
本申请还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述所述并发处理方法的步骤。
本申请还公开了一种存储介质,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述并发处理方法的步骤。
本申请的有益效果是:本申请通过分布式锁及定时器对并发的轻量级请求任务进行逐个执行,可快速解决高并发轻量级请求任务,保证请求不丢失,提高处理效率。
附图说明
图1为本申请第一个实施例的一种轻量级请求的并发处理方法的流程示意图;
图2为本申请第二个实施例的一种轻量级请求的并发处理方法的流程示意图;
图3为本申请第三个实施例的一种轻量级请求的并发处理方法的流程示意图;
图4为本申请第四个实施例的一种轻量级请求的并发处理方法的流程示意图;
图5为本申请第五个实施例的一种轻量级请求的并发处理方法的流程示意图;
图6为本申请第六个实施例的一种轻量级请求的并发处理方法的流程示意图;
图7为本申请第七个实施例的一种轻量级请求的并发处理方法的流程示意图;
图8为本申请实施例的一种轻量级请求的并发处理装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
本申请第一个实施例的一种轻量级请求的并发处理方法流程如图1所示,本实施例包括以下步骤:
步骤s101,获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;
具体的,所述轻量级请求任务可以是任何可被服务器端快速处理的请求任务,所述并发处理指的是服务器端可同时接收来自不同客户端的轻量级请求任务并进行处理,当服务器端在某个时刻同时收到来自不同客户端的轻量级请求任务时,可在所述轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务,所述选取的轻量级请求任务可以进行加锁的操作,所述加锁指的是为所述选取的轻量级请求任务请求分布式锁,当所述选取的轻量级请求任务获得分布式锁后,服务器端只处理获得分布式锁的轻量级请求任务,其余轻量级请求任务只能等待,直到获得分布式锁的轻量级请求任务释放分布式锁;例如,可以以定火车票为例,在某一特定时间,会有多个客户端向服务器端发起请求,来购买火车票。但是由于火车票的数量是可知的,比如说有100张火车票,但是客户端的数量是未知的,即发起请求的用户的数量是未知的,因此在某一时刻只能有一个用户可以进行购买,当一个用户购买成功后,其余客户再同时发起请求进行购买,但是前提是在一个时刻只能有一个用户进行购买。
具体的,所述获得分布式锁的方式可以通过Redis的setnx方式,所述Redis是一个key-value存储系统,支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。所述setnx是Redis的命令语句,是SET if Not eXists的简写,即指“如果不存在,则SET”;完整语句的格式是:SETNX key value,表示将key(键)的值设为value(值),当且仅当key(键)不存在。若给定的key(键)已经存在,则SETNX不做任何动作。如果设置成功,则返回1,如果设置失败,则返回0。例如,某客户端想要获得一个名字foo的分布式锁,那么所述客户端可以使用以下命令进行获取:SETNX lock.foo<current Unix time+lock timeout+1>;其中,current Unixtime指的是当前的时间戳,lock timeout指的是分布式锁的有效时间,如果返回1,则表示所述客户端获得分布式锁,可以把lock.foo的键值设置为时间值表示该键已被锁定;如果返回0,则表明该锁已被其他客户端取得,这时我们可以先返回或进行重试等对方完成后释放锁或等待锁超时。
步骤s102,当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;
具体的,当服务器端在众多轻量级请求任务中选定一个轻量级请求任务并执行以后,可将剩余的轻量级请求任务暂时搁置,并设置一个定时器,设定一个有效时间,通常这个有效时间一般都大于轻量级请求任务的处理时间,由于当前请求任务时轻量级请求任务,因此处理时间通常不会太长,因此所述定时器的有效时间控制在秒级即可,当服务器端对选定的轻量级请求任务执行时,就可启动所述定时器并进行计时。
步骤s103,当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
具体的,当在轻量级请求任务的处理过程中,由于异常情况的发生导致当前的轻量级请求任务在定时器的有效时间内没有完成,所述异常情况包括死机、宕机及网络延时等,这时剩余的轻量级请求任务可以重新发起分布式锁的请求,在剩余的轻量级请求任务中,继续找出下一个获得分布式锁的轻量级请求任务,并执行所述获得分布式锁的轻量级请求任务,并当服务器端执行所述获得分布式锁的轻量级请求任务后,再次对剩余的轻量级请求任务启动定时器并进行计时,直到所有轻量级请求任务执行完毕。
本实施例中,通过分布式锁及定时器对并发的轻量级请求任务进行逐个执行,可快速解决高并发轻量级请求任务,保证请求不丢失,提高处理效率。
图2为本申请第二个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s101,获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务,包括:
步骤s201,获取多个轻量级请求任务及所述轻量级请求任务的数目;
具体的,当服务器端获取到不同客户端的多个轻量级请求任务时,可记录下本次轻量级请求任务的数目。
步骤s202,获取轻量级请求任务对分布式锁的请求,当所述轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,将所述分布式锁的状态设为占用;
具体的,在对所述轻量级请求任务执行前,由于多个轻量级请求任务不能同时执行,在一个时刻只能有一个轻量级请求任务执行,因此所述轻量级请求任务还需对分布式锁发起请求,以获得分布式锁,只有获得分布式锁的轻量级请求任务才有资格执行;当所述轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,可将所述分布式锁的状态设为占用,用以表示分布式锁已经被占用,其他轻量级请求任务无需再请求。
步骤s203,执行获得分布式锁的轻量级请求任务,并暂停剩余的轻量级请求任务。
具体的,当所述轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,服务器端可执行所述获得分布式锁的轻量级请求任务,并暂停剩余的轻量级请求任务,即剩余的轻量级请求任务可等待当前执行的轻量级请求任务执行完毕或者等待定时器超时后,重新发起分布式锁的请求,所述剩余的轻量级请求任务的数目为步骤s201中轻量级请求任务的数目-1。
本实施例中,通过对当前执行的轻量级请求任务设定分布式锁,可以有效调高任务处理效率。
图3为本申请第三个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s102,当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
步骤s301,当执行所述选取的轻量级请求任务时,获取所述选取的轻量级请求任务对应的分布式锁的时间戳,并设定所述分布式锁的有效时间;
具体的,当服务器端给某个轻量级请求任务分配分布式锁时,会给所述轻量级请求任务反馈当前的分布式锁的时间戳,以及所述分布式锁的有效时间,当所述轻量级请求任务收到所述当前的分布式锁的时间戳以及所述分布式锁的有效时间信息后,就可开始执行所述选取的轻量级请求任务。
步骤s302,启动对所述分布式锁的有效时间的计时,并对剩余的轻量级请求任务设置请求有效期限并启动计时。
具体的,当开始执行所述选取的轻量级请求任务后,就可启动对所述分布式锁的有效时间的计时,并对剩余的轻量级请求任务设置请求有效期限并启动计时,上述两者的计时互不相干,分开独立计时。
本实施例中,通过同时对分布式锁进行计时以及对剩余的轻量级请求任务进行计时,可以提高任务处理的效率,避免死锁及死机引起的任务中止。
图4为本申请第四个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s102,当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
步骤s401,当执行所述选取的轻量级请求任务时,获取剩余的轻量级请求任务的数目;
具体的,当执行所述选取的轻量级请求任务时,可获取剩余的轻量级请求任务的数目,所述剩余的轻量级请求任务的数目为当前的轻量级请求任务的数目-1;例如,如果当前的轻量级请求任务的数目为95,那么剩余的轻量级请求任务的数目是94,本次轻量级请求任务执行完之后,下次轻量级请求任务的数目就是94,而剩余的轻量级请求任务的数目就是93,依次类推,当本次的轻量级请求任务执行完毕之后就不再计入剩余的轻量级请求任务的数据中。
步骤s402,检测所述选取的轻量级请求任务是否是最后一个轻量级请求任务,如果不是,则对剩余的轻量级请求任务设置请求有效期限并启动计时。
具体的,当获取到剩余的轻量级请求任务的数目后,可以通过判断剩余的轻量级请求任务的数目是否为0,来判断当前的轻量级请求任务是否是最后一个轻量级请求任务,如果剩余的轻量级请求任务的数目为0,即表示当前的轻量级请求任务是最后一个轻量级请求任务,则执行完本次请求任务后结束,即不再设置轻量级请求任务的请求有效期限以及计时,否则为剩余的轻量级请求任务设置请求有效期限并进行计时。
本实施例中,通过对剩余轻量级请求任务的数目的检测判断是否是最后一个轻量级请求任务,可以提高请求任务的处理效率。
图5为本申请第五个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s102,当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时后,包括:
步骤s501,当所述选取的轻量级请求任务执行完毕后,释放所述分布式锁,并将所述分布式锁的状态设置为空闲;
具体的,当所述选取的轻量级请求任务执行完毕后,可主动释放所述分布式锁,并将所述分布式锁的状态设置为空闲,这样在其他轻量级请求任务在发起对分布式锁的请求的时候,才能请求到分布式锁。
步骤s502,获取剩余的轻量级请求任务对分布式锁的请求。
具体的,当服务器端检测到当前执行的轻量级请求任务执行完毕后,可以让剩余的轻量级请求任务再次发起对分布式锁的请求,在剩余的轻量级请求任务中再次分配分布式锁,用以让获得分布式锁的轻量级请求任务执行。
本实施例中,通过让执行完毕的轻量级请求任务释放分布式锁,并让剩余的轻量级请求任务重新请求分布式锁,可以提高任务处理的效率。
图6为本申请第六个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s103,当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
步骤s601,当所述请求有效期限超时后,检测当前轻量级请求任务的分布式锁的状态;
具体的,当所述请求有效期限超时后,可以检测当前轻量级请求任务的分布式锁的状态,所述当前轻量级请求任务的分布式锁的状态包括空闲和占用,空闲表示分布式锁可以被任意的轻量级请求任务获取,占用表示分布式锁已经被某一个轻量级请求任务占用,其他轻量级请求任务不能再使用。
步骤s602,当检测到当前轻量级请求任务的分布式锁的状态为占用时,检测当前轻量级请求任务的分布式锁的有效时间是否超时,如果检测到当前轻量级请求任务的分布式锁的有效时间已经超时,则停止执行当前轻量级请求任务,释放分布式锁,并将分布式锁的状态设为空闲,否则重新对所述请求有效期限进行计时;
具体的,当检测到当前轻量级请求任务的分布式锁的状态为占用时,那么说明当前某一个轻量级请求任务正在占用分布式锁,可以继续判断当前轻量级请求任务的分布式锁的有效时间是否超时,为了避免在异常情况下当前的轻量级请求任务长时间占用分布式锁而不释放的情况,可以为分布式锁设定有效时间,当所述分布式锁的有效时间超时后,无论什么情况,都将停止执行当前轻量级请求任务释放分布式锁,并将分布式锁的状态设为空闲,这样其他的轻量级请求任务才可以请求到分布式锁,并继续请求任务的执行,而不会出现死锁的情况;如果所述分布式锁的有效时间没有超时,则可以重新对所述请求有效期限进行计时。
步骤s603,当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
具体的,当检测到当前轻量级请求任务的分布式锁的状态为空闲时,说明剩余的任何轻量级请求任务都可请求分布式锁,因此剩余的所有轻量级请求任务都可再次发起对分布式锁的请求,服务器端根据所述请求在剩余的轻量级请求任务中选取一个轻量级请求任务,分配分布式锁然后执行,直到所有轻量级请求任务执行完毕。
本实施例中,通过检测分布式锁的状态以及分布式锁的有效时间,可以提高任务处理的效率。
图7为本申请第七个实施例的一种轻量级请求的并发处理方法流程示意图,如图所示,所述步骤s603,当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
步骤s701,当检测到当前轻量级请求任务的分布式锁的状态为空闲时,获取剩余的轻量级请求任务对分布式锁的请求;
具体的,当检测到当前轻量级请求任务的分布式锁的状态为空闲时,可以让剩余的轻量级请求任务再次发起对分布式锁的请求,在剩余的轻量级请求任务中再次分配分布式锁,用以让获得分布式锁的轻量级请求任务执行。
步骤s702,当剩余的轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,执行获得分布式锁的轻量级请求任务,对剩余的轻量级请求任务重新设置请求有效期限,并对所述请求有效期限是否超时进行检测,直到所有轻量级请求任务执行完毕。
具体的,当服务器端再次收到剩余的轻量级请求任务对分布式锁的请求后,可以在剩余的轻量级请求任务中再次选取一个轻量级请求任务,并给所述选取的轻量级请求任务分配分布式锁,执行所述获得分布式锁的轻量级请求任务,对剩余的轻量级请求任务重新设置请求有效期限,并对所述请求有效期限是否超时进行检测,当检测到所述请求有效期限超时后,继续检测分布式锁的状态,并重复步骤s701及步骤s702,直到所有轻量级请求任务执行完毕。
本实施例中,通过剩余的轻量级请求任务对分布式锁的循环请求,可以提高请求任务处理的效率。
本申请实施例的一种轻量级请求的并发处理装置结构如图8所示,包括:
任务选取模块801、计时模块802及任务处理模块803;其中,任务选取模块801与计时模块802相连,计时模块802与任务处理模块803相连;任务选取模块801设置为获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;计时模块802设置为当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;任务处理模块803设置为当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
本申请实施例还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述各实施例中所述并发处理方法中的步骤。
本申请实施例还公开了一种存储介质,所述存储介质可被处理器读写,所述存储器存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述并发处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种轻量级请求的并发处理方法,其特征在于,包括以下步骤:
获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;
当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;
当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
2.如权利要求1所述的轻量级请求的并发处理方法,其特征在于,所述获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务,包括:
获取多个轻量级请求任务及所述轻量级请求任务的数目;
获取轻量级请求任务对分布式锁的请求,当所述轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,将所述分布式锁的状态设为占用;
执行获得分布式锁的轻量级请求任务,并暂停剩余的轻量级请求任务。
3.如权利要求1所述的轻量级请求的并发处理方法,其特征在于,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
当执行所述选取的轻量级请求任务时,获取所述选取的轻量级请求任务对应的分布式锁的时间戳,并设定所述分布式锁的有效时间;
启动对所述分布式锁的有效时间的计时,并对剩余的轻量级请求任务设置请求有效期限并启动计时。
4.如权利要求2所述的轻量级请求的并发处理方法,其特征在于,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时,包括:
当执行所述选取的轻量级请求任务时,获取剩余的轻量级请求任务的数目;
检测所述选取的轻量级请求任务是否是最后一个轻量级请求任务,如果不是,则对剩余的轻量级请求任务设置请求有效期限并启动计时。
5.如权利要求1所述的轻量级请求的并发处理方法,其特征在于,所述当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时后,包括:
当所述选取的轻量级请求任务执行完毕后,释放所述分布式锁,并将所述分布式锁的状态设置为空闲;
获取剩余的轻量级请求任务对分布式锁的请求。
6.如权利要求3所述的轻量级请求的并发处理方法,其特征在于,所述当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
当所述请求有效期限超时后,检测当前轻量级请求任务的分布式锁的状态;
当检测到当前轻量级请求任务的分布式锁的状态为占用时,检测当前轻量级请求任务的分布式锁的有效时间是否超时,如果检测到当前轻量级请求任务的分布式锁的有效时间已经超时,则停止执行当前轻量级请求任务,释放分布式锁,并将分布式锁的状态设为空闲,否则重新对所述请求有效期限进行计时;
当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
7.如权利要求6所述的轻量级请求的并发处理方法,其特征在于,所述当检测到当前轻量级请求任务的分布式锁的状态为空闲时,在剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕,包括:
当检测到当前轻量级请求任务的分布式锁的状态为空闲时,获取剩余的轻量级请求任务对分布式锁的请求;
当剩余的轻量级请求任务中有一个轻量级请求任务获得所述分布式锁后,执行获得分布式锁的轻量级请求任务,对剩余的轻量级请求任务重新设置请求有效期限,并对所述请求有效期限是否超时进行检测,直到所有轻量级请求任务执行完毕。
8.一种轻量级请求的并发处理装置,其特征在于,所述装置包括:
任务选取模块:设置为获取多个轻量级请求任务,在所述多个轻量级请求任务中选取一个轻量级请求任务并执行选取的轻量级请求任务;
计时模块:设置为当执行所述选取的轻量级请求任务时,对剩余的轻量级请求任务设置请求有效期限并启动计时;
任务处理模块:设置为当所述请求有效期限超时后,在所述剩余的轻量级请求任务中继续选取一个轻量级请求任务并执行,直到所有轻量级请求任务执行完毕。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述并发处理方法的步骤。
10.一种存储介质,其特征在于,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述并发处理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910521800.0A CN110377405A (zh) | 2019-06-17 | 2019-06-17 | 轻量级请求的并发处理方法及相关设备 |
PCT/CN2019/119069 WO2020253078A1 (zh) | 2019-06-17 | 2019-11-18 | 轻量级请求的并发处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910521800.0A CN110377405A (zh) | 2019-06-17 | 2019-06-17 | 轻量级请求的并发处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110377405A true CN110377405A (zh) | 2019-10-25 |
Family
ID=68250445
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910521800.0A Pending CN110377405A (zh) | 2019-06-17 | 2019-06-17 | 轻量级请求的并发处理方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110377405A (zh) |
WO (1) | WO2020253078A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112039970A (zh) * | 2020-08-25 | 2020-12-04 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
WO2020253078A1 (zh) * | 2019-06-17 | 2020-12-24 | 平安科技(深圳)有限公司 | 轻量级请求的并发处理方法及相关设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682537A (en) * | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
EP1341084A2 (en) * | 2002-03-01 | 2003-09-03 | Broadcom Corporation | Method of analyzing the schedulability of a non-preemptive system |
US20040199734A1 (en) * | 2003-04-03 | 2004-10-07 | Oracle International Corporation | Deadlock resolution through lock requeuing |
CN105138310A (zh) * | 2015-07-17 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 一种并发访问控制方法和系统 |
US20160253275A1 (en) * | 2015-02-26 | 2016-09-01 | Fujitsu Limited | Information processing device, information processing system, and exclusive control program |
US20170269973A1 (en) * | 2014-11-18 | 2017-09-21 | International Business Machines Corporation | Almost fair busy lock |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
CN108874552A (zh) * | 2018-06-28 | 2018-11-23 | 杭州云英网络科技有限公司 | 分布式锁执行方法、装置及系统、应用服务器和存储介质 |
CN109246077A (zh) * | 2018-08-01 | 2019-01-18 | 广州唯品会信息科技有限公司 | 分布式并发交易校验方法、装置和计算机存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572130B (zh) * | 2015-10-09 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 用于实现分布式锁管理的方法和设备 |
CN109558218A (zh) * | 2018-12-04 | 2019-04-02 | 山东浪潮通软信息科技有限公司 | 一种基于Redis的分布式业务数据锁实现方法 |
CN110377405A (zh) * | 2019-06-17 | 2019-10-25 | 平安科技(深圳)有限公司 | 轻量级请求的并发处理方法及相关设备 |
-
2019
- 2019-06-17 CN CN201910521800.0A patent/CN110377405A/zh active Pending
- 2019-11-18 WO PCT/CN2019/119069 patent/WO2020253078A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5682537A (en) * | 1995-08-31 | 1997-10-28 | Unisys Corporation | Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system |
EP1341084A2 (en) * | 2002-03-01 | 2003-09-03 | Broadcom Corporation | Method of analyzing the schedulability of a non-preemptive system |
US20040199734A1 (en) * | 2003-04-03 | 2004-10-07 | Oracle International Corporation | Deadlock resolution through lock requeuing |
US20170269973A1 (en) * | 2014-11-18 | 2017-09-21 | International Business Machines Corporation | Almost fair busy lock |
US20160253275A1 (en) * | 2015-02-26 | 2016-09-01 | Fujitsu Limited | Information processing device, information processing system, and exclusive control program |
CN105138310A (zh) * | 2015-07-17 | 2015-12-09 | 北京京东尚科信息技术有限公司 | 一种并发访问控制方法和系统 |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
CN108874552A (zh) * | 2018-06-28 | 2018-11-23 | 杭州云英网络科技有限公司 | 分布式锁执行方法、装置及系统、应用服务器和存储介质 |
CN109246077A (zh) * | 2018-08-01 | 2019-01-18 | 广州唯品会信息科技有限公司 | 分布式并发交易校验方法、装置和计算机存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020253078A1 (zh) * | 2019-06-17 | 2020-12-24 | 平安科技(深圳)有限公司 | 轻量级请求的并发处理方法及相关设备 |
CN112039970A (zh) * | 2020-08-25 | 2020-12-04 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
CN112039970B (zh) * | 2020-08-25 | 2023-04-18 | 北京思特奇信息技术股份有限公司 | 一种分布式业务锁服务方法、服务端、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020253078A1 (zh) | 2020-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288253B2 (en) | Allocation method and device for a distributed lock | |
EP3308275B1 (en) | Recovery in data centers | |
Lee et al. | Implementing linearizability at large scale and low latency | |
US6772363B2 (en) | Fast failover database tier in a multi-tier transaction processing system | |
US20190146847A1 (en) | Dynamic distributed resource management | |
CN101290594B (zh) | 从虚拟踪迹创建物理踪迹的方法和系统 | |
US9875139B2 (en) | Graphics processing unit controller, host system, and methods | |
US9141440B2 (en) | Fault tolerant distributed lock manager | |
EP1672495B1 (en) | Grid parallel execution | |
KR20200061393A (ko) | 리소스 스케줄링 방법, 스케줄링 서버, 클라우드 컴퓨팅 시스템, 및 저장 매체 | |
US8086900B2 (en) | System, method and computer program product for testing a boot image | |
CN110377405A (zh) | 轻量级请求的并发处理方法及相关设备 | |
US10698767B1 (en) | Decentralized management of multi-service workflows | |
US11675622B2 (en) | Leader election with lifetime term | |
US9619288B2 (en) | Deploying software in a multi-instance node | |
CN106293946B (zh) | 资源获取的方法及服务器 | |
US20170026242A1 (en) | System and method for use of a non-blocking process with a resource pool in a computing environment | |
Ilin et al. | Performance analysis of software with a variant NoSQL data schemes | |
US8788601B2 (en) | Rapid notification system | |
CN115292092B (zh) | 一种数据回滚方法、装置、设备及其存储介质 | |
US8453157B2 (en) | Thread synchronization in simultaneous multi-threaded processor machines | |
US20160364817A1 (en) | System, Method, and Apparatus for Utilizing Multi-Processing to Optimize Calculations of Licensable Properties | |
US11934819B2 (en) | Bare-metal deployment | |
CN116954861A (zh) | 定时任务调度方法、装置、设备及存储介质 | |
CN117439952A (zh) | 基于Redis的流量控制方法、系统、设备和介质 |
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 |