CN110209474B - 任务处理的方法和装置 - Google Patents
任务处理的方法和装置 Download PDFInfo
- Publication number
- CN110209474B CN110209474B CN201810333475.0A CN201810333475A CN110209474B CN 110209474 B CN110209474 B CN 110209474B CN 201810333475 A CN201810333475 A CN 201810333475A CN 110209474 B CN110209474 B CN 110209474B
- Authority
- CN
- China
- Prior art keywords
- task
- timing
- polling
- authority
- server
- 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
- 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
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种任务处理的方法和装置,属于互联网技术领域。所述方法包括:发送轮询权限获取请求,所述轮询权限获取请求用于请求对定时任务的轮询权限,所述轮询权限仅在被释放的状态下被分配;当接收到请求成功响应时,对预先存储的各定时任务进行轮询;当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。采用本发明,可以防止资源浪费。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种任务处理的方法和装置。
背景技术
为了更好的执行定时任务(比如,定时任务是上麦用户的定时发言任务),往往会部署具有定时回调服务的服务器(可称为定时回调服务器),以便定时回调服务器可以查找超时的定时任务,并向超时的定时任务对应的业务服务器发送超时通知。
目前,为了保证定时回调服务的高可用性,可以部署多个定时回调服务器对多个定时任务执行定时回调,其中,每个定时任务是对应的业务服务器生成后由定时回调服务器存储到存储设备中的定时任务。具体的,每个定时回调服务器可以轮询存储设备中预先存储的各定时任务,当查找到超时的定时任务时,可以向该定时任务对应的业务服务器发送超时通知,以便业务服务器停止处理该定时任务。某定时回调服务器向业务服务器发送超时通知后,可以将该定时任务的信息删除。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
基于上述任务处理的方式,某些情况下,某定时回调服务器将超时的定时任务删除前,其他定时回调服务器会在轮询各定时任务的信息时查找到该定时任务,向生成定时任务的业务服务器发送超时通知,造成对于同一超时的定时任务,多个定时回调服务器重复轮询、重复发送超时通知,从而,导致资源浪费。
发明内容
本发明实施例提供了一种任务处理的方法和装置,可以解决相关技术中存在的资源浪费的问题。所述技术方案如下:
一方面,提供了一种任务处理的方法,所述方法包括:
发送轮询权限获取请求,所述轮询权限获取请求用于请求对定时任务的轮询权限,所述轮询权限仅在被释放的状态下被分配;
当接收到请求成功响应时,对预先存储的各定时任务进行轮询;
当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
一方面,提供了一种任务处理的装置,所述装置包括:
第一发送模块,用于发送轮询权限获取请求,所述轮询权限获取请求用于请求对定时任务的轮询权限,所述轮询权限仅在被释放的状态下被分配;
轮询模块,用于当接收到请求成功响应时,对预先存储的各定时任务的信息进行轮询;
第二发送模块,用于当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
一方面,提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述所述的任务处理的方法。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述所述的任务处理的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,通过同一时刻只允许一个定时回调服务器具有轮询权限,使得具有轮询权限的定时回调服务器轮询各定时任务的信息,在查找到超时任务时,向对应的业务服务器发送超时通知,其他没有轮询权限的定时回调服务器不再轮询各定时任务的信息,来达到避免多个定时回调服务器均进行轮询、重复发送超时通知的目的,从而,可以防止资源浪费。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1(a)是本发明实施例提供的一种系统框架示意图;
图1(b)是本发明实施例提供的一种系统框架示意图;
图2是本发明实施例提供的一种系统框架示意图;
图3是本发明实施例提供的一种任务处理的方法流程图;
图4(a)是本发明实施例提供的一种任务处理示意图;
图4(b)是本发明实施例提供的一种任务处理示意图;
图5是本发明实施例提供的一种任务处理的方法流程图;
图6是本发明实施例提供的一种任务处理的方法流程图;
图7是本发明实施例提供的一种任务处理的装置结构示意图;
图8是本发明实施例提供的一种任务处理的装置结构示意图;
图9是本发明实施例提供的一种任务处理的装置结构示意图;
图10是本发明实施例提供的一种任务处理的装置结构示意图;
图11是本发明实施例提供的一种任务处理的装置结构示意图;
图12是本发明实施例提供的一种服务器的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种任务处理的方法,该方法可以由多个服务器101和存储设备102共同实现,系统(可称为定时回调系统)的框架图如图1(a)所示。其中,多个服务器中的每个服务器可以用于提供定时回调服务,可称为定时器,或者定时回调服务器。存储设备102可以用于存储各定时任务,其中,各定时任务可以是对应的设备(比如可以是客户端或业务服务器103)生成的,此种情况下,定时回调系统的框架图如图1(b)所示。另外,本发明实施例不对各定时业务的存储位置进行限定,各定时任务可以存储到上述存储设备(该存储设备可以是redis存储设备)中,也可以存储到其他位置。下面以各定时任务存储到存储设备为例,进行方案的详细说明,其他情况与之类似,不再进行赘述。
如图2所示,每到预设的轮询周期,定时回调服务器可以向存储设备发送轮询权限获取请求,其中,轮询权限获取请求用于请求对定时任务的轮询权限,轮询权限仅在被释放的状态下被分配(即某定时回调服务器具有轮询权限的同时,其他定时回调服务器不具有轮询权限)。相应的,存储设备可以接收定时回调服务器发送的轮询权限获取请求,如果当前轮询权限处于释放状态(即当前各个定时回调服务器均没有轮询权限),则存储设备可以向定时回调服务器发送请求成功响应。相应的,定时回调服务器接收到请求成功响应后,可以对预先存储的各定时任务进行轮询,在轮询的过程中,当查找到至少一个超时任务时,可以分别向至少一个超时任务对应的设备发送超时通知,其中,超时任务为过期时刻早于当前时刻的定时任务,例如,某定时任务的过期时刻是10点,当前时刻是10:15,则该定时任务即为当前检测到的超时任务。
定时回调服务器可以包括处理器、存储器、收发器等部件。处理器可以为CPU(Central Processing Unit,中央处理单元)等,可以用于对各定时任务进行轮询的相关处理。存储器可以为RAM(Random Access Memory,随机存取存储器)、Flash(闪存)等,可以用于存储接收到的数据、处理过程所需的数据、处理过程中生成的数据等等。收发器可以用于与存储设备或其它服务器(如业务服务器)进行数据传输,例如,向存储设备发送轮询权限获取请求,向各超时任务对应的设备发送超时通知,收发器可以包括天线、匹配电路、调制解调器等。
目前,各个业务服务器在处理业务的过程中,往往会生成多个定时任务,业务服务器生成定时任务后,可以向定时回调服务器发送定时任务的注册请求,其中,注册请求中可以携带有定时任务的任务标识和过期时刻。定时回调服务器接收到注册请求后,可以对定时任务进行存储,比如,可以将定时任务存储到存储设备中,其中,定时任务包括任务标识和过期时刻。相关技术中,部署的各个定时回调服务器可以对预先存储的各定时任务进行轮询,每当轮询到超时的定时任务时,可以向超时的定时任务对应的业务服务器发送超时通知,以便业务服务器可以停止处理该定时任务。此种处理方式,对于同一超时的定时任务,会有多个定时回调服务器查找到,并向相应的业务服务器发送超时通知,从而,导致资源浪费。
然而,本方案中,每个定时回调服务器在轮询前,可以先向存储设备发送轮询权限获取请求,其中,轮询权限仅在被释放的状态下被分配(即同一时刻,至多有一个定时回到服务器具有轮询权限),获取到轮询权限的定时服务器可以对预先存储到存储设备的各定时任务进行轮询,当查找到至少一个超时任务时,分别向至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。这样,同一时刻,只有一个定时回调服务器对预先存储的各定时任务进行轮询,并向超时任务对应的设备发送超时通知,可以避免多个定时回调服务器均进行轮询、重复发送超时通知,从而,可以防止资源浪费。
例如,业务服务器可以是卧底游戏的后台服务器,后台服务器在卧底游戏进行的过程中,可以生成当前游戏环节对应的定时任务,同时向终端推送相应的信息,具体的,卧底游戏开始后,后台服务器可以向客户端推送(push)词和角色,并可以向定时回调服务器注册看词任务(即定时任务),此时,定时回调服务器可以对看词任务进行存储。具有轮询权限的定时回调服务器可以对存储的各定时任务进行轮询,当查找到看词任务超时时,可以向后台服务器发送看词任务到期的通知,后台服务器接收到该通知后,可以停止进行看词任务,可以向玩家A的客户端推送发言通知,并向定时回调服务器注册玩家A发言任务(即定时任务)。此时,定时回调服务器可以对玩家A发言任务进行存储。具有轮询权限的定时回调服务器可以对存储的各定时任务进行轮询,当查找到玩家A发言任务超时时,可以向后台服务器发送玩家A发言任务到期的通知,如果在发送玩家A发言任务到期前,玩家A的客户端提前结束玩家A发言任务,后台服务器可以停止处理玩家A发言任务,将其删除,并可以向定时回调服务器发送删除玩家A发言任务的通知。以此类推,针对不同的定时任务,后台服务器和定时回调服务器可以按照上述方式执行对应的处理。
又例如,业务服务器可以是限时连麦业务的后台服务器,在直播过程中,主播客户端可以向后台服务器发起开启连麦的通知,在开启连麦后的过程中,上麦用户的客户端可以通过后台服务器向主播客户端发起连麦请求,主播客户端接收到连麦请求后,可以向后台服务器发送同意连麦的通知。后台服务器接收到同意连麦的通知后,可以向该直播间内的观众客户端广播信息。主播客户端发送同意连麦的通知后,可以进行计时,并可以向后台服务器发送计时开始的通知,相应的,后台服务器可以向定时回调服务器注册定时任务。此种情况下,主播客户端和定时回调服务器可以同时对该定时任务的过期时刻进行监控,即当主播客户端检测到计时时长达到定时任务的时长时,可以向后台服务发起下麦的通知,以便上麦用户可以及时下麦,另外,具有轮询权限的定时回调服务器可以对存储的各定时任务进行轮询,当查找到该定时任务超时时,可以向后台服务器发送定时任务到期的通知。后台服务器接收到通知后,可以向上麦用户的客户端发送下麦通知。这样,在主播客户端存在杀进程、切后台以及异常退出导致不能正常计时的情况下,可以保证上麦用户可以及时下麦。
下面将结合具体实施方式,对图3所示的处理流程进行详细的说明,内容可以如下:
步骤301,发送轮询权限获取请求,轮询权限获取请求用于请求对定时任务的轮询权限,轮询权限仅在被释放的状态下被分配。
其中,定时任务可以是有存在期限的任务,也可称为限时任务,比如,可以是上麦用户的定时发言任务。
在实施中,各设备(比如业务服务器或客户端)在处理业务的过程中,往往会生成多个定时任务。为了更好的执行定时任务和处理业务,可以由多个定时回调服务器对多个定时任务执行定时回调服务。由于每个定时回调服务器对应的处理机制是类似的,下面将以其中的某个定时回调服务器为例,对定时回调服务器的处理进行详细说明。
定时回调服务器中可以预先设置有轮询周期(其中,轮询周期可以是较小的数值),每到预设的轮询周期,定时回调服务器可以执行轮询处理,其中,每个定时回调服务器对应的轮询周期可以相同,也可以不同。每达到预设的轮询周期时,定时回调服务器可以发送轮询权限获取请求,其中,轮询权限获取请求可以用于定时回调服务器请求对定时任务的轮询权限。其中,针对各定时任务存储到存储设备(比如redis存储设备)的情况,每个定时回调服务器可以向存储设备发送轮询权限获取请求。
可选的,轮询权限获取请求中可以携带有lua(其中,lua是一种编程语言)脚本,相应的,步骤301的处理过程可以如下:发送携带有第一lua脚本的轮询权限获取请求,第一lua脚本包括用于请求轮询权限的命令。
在实施中,每到预设的轮询周期,定时回调服务器可以发送携带有lua脚本(即第一lua脚本)的轮询权限获取请求,其中,第一lua脚本可以包括用于请求轮询权限的命令。其中,针对定时任务存储到存储设备的情况,定时回调服务器可以向存储设备发送携带有第一lua脚本的轮询权限获取请求。这样,lua脚本可以保证操作的原子性,从而,可以保证同时只有一个定时回调服务器具有轮询权限,进而,可以防止资源浪费。
可选的,用于获取轮询权限的命令可以是redis的SETNX(不存在即设置)命令,轮询权限的形式可以是分布式锁,其中,SETNX命令的格式可以是SETNX key“value”。也就是说,定时回调服务器可以通过包含SETNX命令的lua脚本向存储设备获取分布式锁。其中,对于通过SETNX命令获取分布式锁的情况,每个定时回调服务器中可以设置相同的key(键),value可以是对应的定时回调服务器的标识,比如可以是IP(Internet Protocol,网络之间互联的协议)地址,每个定时回调服务器中可以设置有一个轮询的进程。
相应的,存储设备接收到定时回调服务器发送的轮询权限获取请求后,可以判断是否有其他定时回调服务器具有轮询权限(即可以判断轮询权限是否是被释放状态),如果当前没有其他定时回调服务器具有轮询权限,则存储设备可以赋予当前的定时回调服务器轮询权限,即可以向定时回调服务器发送请求成功响应。如果当前其他定时回调服务器具有轮询权限,则存储设备可以不再赋予当前的定时回调服务器轮询权限,即可以向定时回调服务器发送请求失败响应。
其中,针对定时回调服务器通过包含SETNX命令的第一lua脚本获取分布式锁的情况,定时回调服务器向存储设备发送第一lua脚本后,存储设备可以判断key是否存在,如果存在,则可以向定时回调服务器发送0(此种情况说明,已经有其他定时回调服务器获取到分布式锁),如果不存在,可以将key的值设置为定时回调服务器的标识,向定时回调服务器发送1(此种情况说明,没有其他定时回调服务器具有分布式锁,即分布式锁处于释放状态)。
步骤302,当接收到请求成功响应时,对预先存储的各定时任务进行轮询。
在实施中,存储设备向定时回调服务器发送请求成功响应后,定时回调服务器可以接收存储设备发送的请求成功响应。接收到请求成功响应后,定时回调服务器可以对预先存储的各定时任务进行轮询,即可以对存储设备中预先存储的各定时任务进行轮询,该步骤的处理可以由轮询进程执行。其中,预先存储的每个定时任务可以包括任务标识和过期时刻。
另外,针对上述存储设备发送请求失败响应的情况,定时回调服务器可以接收请求失败响应(此种情况说明,已有其他定时服务器具有轮询权限),此种情况下,可以不对预先存储的各定时任务进行轮询,即当接收到请求失败响应时,不对预先存储的各定时任务进行轮询。
可选的,同一业务对应的各定时任务可以存储到同一任务组中,相应的,步骤302的处理过程可以如下:当接收到请求成功响应时,对预先存储的多个业务对应的任务组分别进行轮询,每个任务组包括同一业务的各定时任务。
在实施中,当定时回调服务器接收到请求成功响应时,可以分别对预先存储的多个业务对应的任务组进行轮询。例如,定时服务器可以对业务1和业务2的定时任务进行轮询,业务1对应的任务组为A,业务2对应的任务组为B,则定时回调服务器可以分别对任务组A和任务组B进行轮询。这样,每个业务对应一个任务组,可以便于对同一业务包括的各定时任务进行查询,从而,提高对各个业务的定时任务的查询效率。
可选的,在存储定时任务时,可以将定时任务存储到所属业务对应的任务组中,相应的,定时回调服务器还可以进行如下处理:获取目标定时任务;确定目标定时任务所属的目标业务;将目标定时任务存储到目标业务对应的任务组中。
在实施中,每个业务可以对应一个任务组,其中,针对存储设备为redis存储设备的情况,每个业务可以对应一个ZSET,每个ZSET中可以包括各个元素,每个元素对应一个定时任务,比如,元素的形式可以是:{key:expire_time},此处的key表示任务标识,expire_time表示过期时刻。
在业务服务器工作的过程中,每当生成定时任务(可称为目标定时任务)时,可以向定时回调服务器发送目标定时任务的信息,相应的,定时回调服务器可以接收目标定时任务的信息,其中,业务服务器发送的目标定时任务的信息可以包括业务标识和任务持续时长,也可以是业务标识和过期时刻。定时回调服务器接收到目标定时任务的信息后,可以确定目标定时任务(任务标识和过期时刻)。确定出目标定时任务后,可以确定目标定时任务所属的目标业务,进而,可以将目标定时任务存储到存储设备中目标业务对应的任务组中。其中,上述处理过程可以由业务进程处理。这样,每当有新的业务方接入时,可以为该业务方分配对应的任务组,以便可以在不改变代码的情况下,使得业务方接入定时回调服务。
可选的,每个业务可以对应有轮询优先级,此种情况下,步骤302的处理过程可以如下:当接收到请求成功响应时,获取每个业务对应的轮询优先级;基于轮询优先级由高到低的顺序,对多个业务对应的任务组分别进行轮询。
在实施中,当接收到请求成功响应时,可以获取每个业务对应的轮询优先级,其中,轮询优先级可以是预先存储的,也可以是由定时回调服务器确定出的,比如,可以将各业务中对应的最小过期时刻最小的业务对应的轮询优先级设置为最高,将各业务中对应的最小过期时刻最大的业务对应的轮询优先级设置为最低。获取到每个业务对应的轮询优先级后,可以基于轮询优先级由高到低的顺序,依次对多个业务对应的任务组进行轮询。这样,对优先级高的任务优先轮询,可以对最先超时的定时任务优先轮询到,从而,可以增强超时回调的可靠性。
步骤303,当查找到至少一个超时任务时,分别向至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
在实施中,在轮询各定时任务的过程中,可以将各个任务中的过期时刻与当前时刻作比较,将过期时刻小于或等于当前时刻的定时任务确定为超时任务(即可以将过期时刻不晚于当前时刻的定时任务确定为超时任务),进而,可以分别向至少一个超时任务对应的设备(比如客户端或业务服务器)发送超时通知。
可选的,定时回调服务器接收到接收成功通知时,可以将相应的定时任务删除,相应的,定时回调服务器还可以进行如下处理:当接收到接收成功通知时,根据接收成功通知所携带的任务标识,将任务标识对应的定时任务删除。
在实施中,定时回调服务器向至少一个超时任务对应的设备发送超时通知后,至少一个超时任务中每个超时任务对应的设备接收到超时通知后,可以向定时回调服务器发送接收成功通知,以便通知定时回调服务器此次回调成功。相应的,当定时回调服务器接收到成功通知时,可以基于接收成功通知携带的任务标识,将任务标识对应的定时任务删除。这样,本方案中,增加了业务方确认的机制,即在得到业务方确认接收到超时通知的情况下,将相应的定时任务删除,可以保证超时回调的可靠性。
可选的,为了避免超时任务被过度回调,定时回调服务器中可以设置有时长阈值,以便将超时时长达到预设的时长阈值的超时任务删除,相应的,定时回调服务器还可以进行如下处理:当任一超时任务的超时时长大于预设的时长阈值时,将任一超时任务删除。
其中,超时时长可以是当前时刻减去过期时刻的差值。
在实施中,定时回调服务器向至少一个超时任务的设备发送超时通知后,还可以判断超时任务的超时时长是否大于预设的时长阈值,当任一超时任务的超时时长大于预设的时长阈值时,定时回调服务器可以将任一超时任务删除,其中,预设的时长阈值可以预先记录在配置信息中。
也就是说,本方案中,定时回调服务器向至少一个超时任务对应的设备发送超时通知后,接收到接收成功通知时,可以将相应的定时任务删除,或者,可以将超时时长大于预设的时长阈值的定时任务删除,其他情况下,可以不再将超时任务删除,处理示意图可以如图4(a)所示,其中,图4(a)中的ZRangeByScore(一种命令)表示轮询各定时任务时,存储设备返回的各定时任务是按照过期时刻排序后的定时任务。这样,可以避免没有回调成功的情况下,将超时任务从存储设备中删除,造成后续无法再进行回调,从而,可以保证超时回调的可靠性。另外,当超时时长达到预设的时长阈值时将相应的定时任务删除,停止对该定时任务回调,可以防止过度回调,造成资源浪费。
其中,上述删除超时任务的处理可以由业务进程执行。上述处理存储和删除定时任务、轮询各定时任务的逻辑框图可以如图4(b)所示。
可选的,上述预设的时长阈值可以是根据业务需求设置的,比如,业务服务器在接入定时回调系统时,即可将自身业务对应的时长阈值发送至相应的定时回调服务器,或者,将自身业务包含不同定时任务类型对应的时长阈值发送至相应的定时回调服务器。又或者,各业务服务器在发送定时任务时,还可以发送该定时任务对应的时长阈值。
可选的,在某些情况下,定时回调服务器还可以将轮询请求进行释放,相应的,处理过程可以如下:当前轮询结束前,发送轮询权限释放请求,其中,轮询权限释放请求用于释放轮询权限。
在实施中,当前轮询结束前(可以是当前轮询周期结束前、下一轮询周期开始前),定时回调服务器可以向存储存储设备发送轮询权限释放请求,其中,该轮询权限释放请求用于释放轮询权限。或者说,定时服务器在执行上述处理过程后,可以发送轮询权限释放请求,即将任一接收成功通知对应的超时任务、任一超时时长大于预设的时长阈值的超时任务删除后,可以发送轮询权限释放请求。另外,当未查找到超时任务时,定时服务器也可以发送轮询权限释放请求。这样,可以释放当前获取到的轮询权限,以便其他定时回调服务器在后续可以获取到轮询权限,进而,可以使得各个定时回调服务器均可以执行超时回调操作,从而,可以防止一直由同一定时回调服务器执行超时回调操作,进一步,可以保证超时回调的可靠性。
可选的,轮询权限释放请求中可以携带有lua脚本,相应的,处理过程可以如下:发送携带有第二lua脚本的轮询权限释放请求,第二lua脚本包括用于释放轮询权限的命令。
在实施中,定时回调服务器可以向存储设备发送携带有第二lua脚本的轮询权限释放请求,其中,第二lua脚本可以包括用于释放轮询权限的命令,比如可以是delete命令。具体的,定时回调服务器可以先向存储设备发送get命令,获取具有轮询权限的定时回调服务器的标识。定时回调服务器获取到上述标识后,可以判断该标识是否是自身的标识,如果是,则可以向存储设备发送携带有第二lua脚本的轮询权限释放请求,第二lua脚本包括delete命令。
另外,结合卧底游戏的应用场景,对本方案进行详细说明,处理流程如图5所示。
下面将结合具体实施方式,对图5所示的处理流程进行详细的说明,内容可以如下:
步骤501,后台服务器向客户端push词和角色。
其中,后台服务器可以是卧底游戏的后台服务器。
在实施中,后台服务器在卧底游戏进行的过程中,可以生成当前游戏环节对应的定时任务,同时向终端推送相应的信息,具体的,卧底游戏开始后,后台服务器可以向客户端push词和角色。
步骤502,后台服务器向定时回调服务器注册看词任务。
步骤503,当查找到看词任务为超时任务时,向后台服务器回调看词任务到期的通知。
在实施中,定时回调服务器可以按照图3所示的流程对预先存储的各定时任务进行轮询,即可以进行超时检查,当查找到看词任务到期时,可以向后台服务器回调看词任务到期的通知。
步骤504,后台服务器向客户端push发言。
步骤505,后台服务器向定时回调服务器注册玩家A发言任务。
步骤506,客户端向后台服务器发送提前结束的通知。
在实施中,在玩家A发言任务进行的过程中,玩家A可以手动操作,触发客户端向后台服务器发送提前结束的通知。
步骤507,后台服务器向定时回调服务器发送清理玩家A发言任务。
步骤508,定时回调服务器删除玩家A发言任务。
步骤509,后台服务器注册玩家B发言任务。
依次类推,后台服务器可以注册各个定时任务,并相应的push结果(步骤510)。后续还可以注册爆词任务(步骤511)。
另外,结合限时连麦业务的应用场景,对本方案进行详细说明,处理流程如图6所示。
下面将结合具体实施方式,对图6所示的处理流程进行详细的说明,内容可以如下:
步骤601,主播客户端开启连麦。
步骤602,在开启连麦后的过程中,上麦用户的客户端向后台服务器发送申请连麦的请求。
在实施中,上麦用户的客户端可以向后台服务器(其中,后台服务器可以是限时连麦业务的后台服务器)发送连麦请求,后台服务器接收到连麦请求后,可以将其发送至主播客户端。
步骤603,主播客户端向后台服务器同意连麦的通知。
步骤604,后台服务器向直播间内的各观众的客户端广播信息。
步骤605,主播客户端向后台服务器发送计时开始的通知。
在实施中,主播客户端发送同意连麦的通知后,可以进行计时,并可以向后台服务器发送计时开始的通知。
步骤606,后台服务器向定时回调服务器注册定时任务。
在实施中,定时回调服务器可以按照图3所示的流程对预先存储的各定时任务进行轮询,即可以进行超时检查,当查找到某定时任务到期时,可以向后台服务器回调定时任务超时的通知。
步骤607,主播客户端向后台服务器发起下麦的通知。
在实施中,主播客户端和定时回调服务器可以同时对该定时任务的过期时刻进行监控,即当主播客户端检测到计时时长达到定时任务的时长时,可以向后台服务发起下麦的通知。
步骤608,后台服务器向上麦用户的客户端发起下麦的通知。
在实施中,后台服务器接收到主播客户端发起的下麦的通知后,或者,接收到定时回调服务器发送的对应该定时任务的超时通知后,可以上麦用户的客户端发起下麦的通知。这样,定时回调服务器和主播客户端同时对上麦用户的上麦时长进行检测,可以保证上麦用户可以及时下麦。
本发明实施例中,通过同一时刻只允许一个定时回调服务器具有轮询权限,使得具有轮询权限的定时回调服务器轮询各定时任务的信息,在查找到超时任务时,向对应的业务服务器发送超时通知,其他没有轮询权限的定时回调服务器不再轮询各定时任务的信息,来达到避免多个定时回调服务器均进行轮询、重复发送超时通知的目的,从而,可以防止资源浪费,同时,还可以保证回调单一性。
基于相同的技术构思,本发明实施例还提供了一种任务处理的装置,如图7所示,该装置包括:
第一发送模块710,用于发送轮询权限获取请求,所述轮询权限获取请求用于请求对定时任务的轮询权限,所述轮询权限仅在被释放的状态下被分配;
轮询模块720,用于当接收到请求成功响应时,对预先存储的各定时任务进行轮询;
第二发送模块730,用于当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
可选的,所述第一发送模块710,用于:
发送携带有第一lua脚本的轮询权限获取请求,所述第一lua脚本包括用于请求所述轮询权限的命令。
可选的,所述用于获取所述轮询权限的命令为SETNX命令。
可选的,所述轮询权限的形式为分布式锁。
可选的,所述轮询模块720,用于:
当接收到请求成功响应时,对预先存储的多个业务对应的任务组分别进行轮询,每个任务组包括同一业务的各定时任务。
可选的,所述轮询模块720,用于:
当接收到请求成功响应时,获取每个业务对应的轮询优先级;
基于轮询优先级由高到低的顺序,对多个业务对应的任务组分别进行轮询。
可选的,如图8所示,所述装置还包括:
获取模块740,用于获取目标定时任务;
确定模块750,用于确定所述目标定时任务所属的目标业务;
存储模块760,用于将所述目标定时任务存储到所述目标业务对应的任务组中。
可选的,如图9所示,所述装置还包括:
第一删除模块770,用于当接收到接收成功通知时,根据所述接收成功通知所携带的任务标识,将所述任务标识对应的定时任务删除。
可选的,如图10所示,所述装置还包括:
第二删除模块780,用于当任一超时任务的超时时长大于预设的时长阈值时,将所述任一超时任务删除。
可选的,所述预设的时长阈值根据业务需求设置。
可选的,如图11所示,所述装置还包括:
第三发送模块790,用于当前轮询结束前,发送轮询权限释放请求,其中,所述轮询权限释放请求用于释放所述轮询权限。
可选的,所述第三发送模块790,用于:
发送携带有第二lua脚本的轮询权限释放请求,所述第二lua脚本包括用于释放所述轮询权限的命令。
本发明实施例中,通过同一时刻只允许一个定时回调服务器具有轮询权限,使得具有轮询权限的定时回调服务器轮询各定时任务的信息,在查找到超时任务时,向对应的业务服务器发送超时通知,其他没有轮询权限的定时回调服务器不再轮询各定时任务的信息,来达到避免多个定时回调服务器均进行轮询、重复发送超时通知的目的,从而,可以防止资源浪费。
需要说明的是:上述实施例提供的任务处理的装置在任务处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将定时回调服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的任务处理的装置与任务处理的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图12是本发明实施例提供的一种服务器的结构示意图,该服务器可以是上述定时回调服务器,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)1201和一个或一个以上的存储器1202,其中,所述存储器1202中存储有至少一条指令,所述至少一条指令由所述处理器1201加载并执行以实现任务处理的方法步骤。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的任务处理的方法。
本发明实施例中,通过同一时刻只允许一个定时回调服务器具有轮询权限,使得具有轮询权限的定时回调服务器轮询各定时任务的信息,在查找到超时任务时,向对应的业务服务器发送超时通知,其他没有轮询权限的定时回调服务器不再轮询各定时任务的信息,来达到避免多个定时回调服务器均进行轮询、重复发送超时通知的目的,从而,可以防止资源浪费。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的一个实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种任务处理的方法,其特征在于,所述方法由目标定时回调服务器执行,所述目标定时回调服务器是多个定时回调服务器中的其中一个,所述方法包括:
响应于达到预设轮询周期,发送包含不存在即设置SETNX命令的第一lua脚本,所述SETNX命令用于根据分布式锁的释放情况获取轮询权限,所述轮询权限是指对预先存储的各定时任务进行轮询的权限,所述预先存储的各定时任务被划分为多个任务组,每个任务组包括属于同一业务的多个定时任务;其中,同一时刻只有一个定时回调服务器对所述预先存储的各定时任务进行轮询,每个定时回调服务器对应的预设轮询周期可以相同,也可以不同;
当接收到针对SETNX命令的请求成功响应时,获取每个业务对应的轮询优先级,所述接收到针对SETNX命令请求成功响应用于表征所述目标定时回调服务器获取所述轮询权限,所述轮询优先级与各个任务组内过期时刻最小的定时任务的过期时刻大小呈负相关关系;
基于轮询优先级由高到低的顺序,对多个业务对应的任务组分别进行轮询;
当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取目标定时任务;
确定所述目标定时任务所属的目标业务;
将所述目标定时任务存储到所述目标业务对应的任务组中。
3.根据权利要求1或2任意一项所述的方法,其特征在于,所述方法还包括:
当接收到接收成功通知时,根据所述接收成功通知所携带的任务标识,将所述任务标识对应的定时任务删除。
4.根据权利要求1或2任意一项所述的方法,其特征在于,所述方法还包括:
当任一超时任务的超时时长大于预设的时长阈值时,将所述任一超时任务删除。
5.根据权利要求4所述的方法,其特征在于,所述预设的时长阈值根据业务需求设置。
6.根据权利要求1或2任意一项所述的方法,其特征在于,所述方法还包括:
当前轮询结束前,发送轮询权限释放请求,其中,所述轮询权限释放请求用于释放所述轮询权限。
7.根据权利要求6所述的方法,其特征在于,所述发送轮询权限释放请求,包括:
发送携带有第二lua脚本的轮询权限释放请求,所述第二lua脚本包括用于释放所述轮询权限的命令。
8.一种任务处理的装置,其特征在于,所述装置包括:
第一发送模块,用于响应于达到预设轮询周期,发送包含不存在即设置SETNX命令的第一lua脚本,所述SETNX命令用于根据分布式锁的释放情况获取轮询权限,所述轮询权限是指对预先存储的各定时任务进行轮询的权限,所述预先存储的各定时任务被划分为多个任务组,每个任务组包括属于同一业务的多个定时任务;其中,同一时刻只有一个定时回调服务器对所述预先存储的各定时任务进行轮询,每个定时回调服务器对应的预设轮询周期可以相同,也可以不同;
轮询模块,用于当接收到针对SETNX命令的请求成功响应时,获取每个业务对应的轮询优先级,所述接收到针对SETNX命令请求成功响应用于表征目标定时回调服务器获取所述轮询权限,所述轮询优先级与各个任务组内过期时刻最小的定时任务的过期时刻大小呈负相关关系;
所述轮询模块,用于基于轮询优先级由高到低的顺序,对多个业务对应的任务组分别进行轮询;
第二发送模块,用于当查找到至少一个超时任务时,分别向所述至少一个超时任务对应的设备发送超时通知,超时任务为过期时刻早于当前时刻的定时任务。
9.一种网络设备,其特征在于,所述网络设备包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至7任一所述的任务处理的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至7任一所述的任务处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810333475.0A CN110209474B (zh) | 2018-04-13 | 2018-04-13 | 任务处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810333475.0A CN110209474B (zh) | 2018-04-13 | 2018-04-13 | 任务处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209474A CN110209474A (zh) | 2019-09-06 |
CN110209474B true CN110209474B (zh) | 2023-05-12 |
Family
ID=67779049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810333475.0A Active CN110209474B (zh) | 2018-04-13 | 2018-04-13 | 任务处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209474B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114120616B (zh) * | 2021-11-24 | 2023-03-28 | 深圳市欧瑞博科技股份有限公司 | 红外信号发送方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395702C (zh) * | 2006-09-30 | 2008-06-18 | 华为技术有限公司 | 一种定时器实现方法 |
US9733664B1 (en) * | 2013-03-14 | 2017-08-15 | Gamesys Ltd. | Method for expiring fault-tolerant timers using distributed locks |
US9158331B2 (en) * | 2013-03-28 | 2015-10-13 | Microsoft Technology Licensing, Llc | On-demand scalable timer wheel |
CN106406983B (zh) * | 2015-07-27 | 2021-01-08 | 创新先进技术有限公司 | 一种集群中的任务调度方法及装置 |
-
2018
- 2018-04-13 CN CN201810333475.0A patent/CN110209474B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110209474A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108712485B (zh) | 一种物联网设备的资源订阅方法和装置 | |
CN100583934C (zh) | 一种定时器控制方法及系统 | |
US20160286380A1 (en) | Management method for embedded universal integrated circuit card, related device, and system | |
CN109792287B (zh) | 一种传输响应消息的方法和装置 | |
US20210119965A1 (en) | Address Management Method and Apparatus | |
CN112448873B (zh) | 设备的绑定方法、装置及计算机可读存储介质 | |
TW201526654A (zh) | 實現視訊通話的方法及系統 | |
US9883386B2 (en) | Method and a server for managing profiles | |
CN108600281B (zh) | 一种云存储系统、媒体数据存储方法及系统 | |
CN104601702B (zh) | 集群远程过程调用方法及系统 | |
CN113612861B (zh) | 远程访问方法、系统及计算机可读存储介质 | |
CN113206894A (zh) | Dns服务器的发现方法、装置、计算机设备及存储介质 | |
CN111638891A (zh) | 一种设备升级方法、装置、终端设备和存储介质 | |
CN114338063A (zh) | 消息队列系统、业务处理方法及计算机可读存储介质 | |
CN110209474B (zh) | 任务处理的方法和装置 | |
CN112822300B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
KR101278282B1 (ko) | 광대역 무선 네트워크에서의 단말 관리 메시지 송수신 장치및 그 방법 | |
CN107425994B (zh) | 一种实现参数远程管理的方法、终端和服务器 | |
CN111930482A (zh) | 基于节点集群的任务处理方法、装置、设备及存储介质 | |
CN112822299B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
CN107534847B (zh) | 一种发现方法及设备 | |
CN109639849B (zh) | 一种地址查询处理方法及服务发现装置 | |
CN108243155B (zh) | 一种发送通讯信息的方法和装置 | |
CN111314492A (zh) | 空调器及其数据传输方法和计算机可读存储介质 | |
CN110890989A (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 |