CN110213213B - 应用的定时任务处理方法及系统 - Google Patents
应用的定时任务处理方法及系统 Download PDFInfo
- Publication number
- CN110213213B CN110213213B CN201810539246.4A CN201810539246A CN110213213B CN 110213213 B CN110213213 B CN 110213213B CN 201810539246 A CN201810539246 A CN 201810539246A CN 110213213 B CN110213213 B CN 110213213B
- Authority
- CN
- China
- Prior art keywords
- server
- timing
- executed
- task
- application
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Cardiology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施例公开了一种应用的定时任务处理方法及系统,该方法中,心跳服务器在每次接收到应用客户端发送的心跳包请求后,获取存储服务器中与心跳包请求携带相同客户端标识的待执行定时任务,以检测是否存在超时的待执行定时任务,若存在,则心跳服务器接替定时服务器的工作,执行超时的待执行定时任务,由此可以及时地执行定时任务,从而确保了应用的正常运行。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种应用的定时任务处理方法及系统。
背景技术
许多应用在运行过程中都需要设置定时任务,并为定时任务指定执行时间或计划,从而在定时任务指定的执行时间到达时执行具体的操作。例如,在一个种树的游戏应用中,树苗每经过一段时间需要变更一个状态,如从种子到发芽、长叶等状态的变更,因此通过设置定时任务,当定时任务的执行时间到达后应用将会更新树苗的状态。目前大部分的应用通常是驱动应用服务器的状态机来推动应用的运行,对于狼人杀、谁是卧底等比较火爆的游戏应用,一般会设置多个应用服务器,每个应用服务器存储一部分的用户数据,从而每个应用服务器相应地处理所存储的用户数据对应的用户请求以及与这些用户相关的定时任务等。
现有技术中,定时任务的执行过程通常是由应用服务器启动本地定时器,由本地定时器来回调用状态转换函数以执行相应的定时任务,进而推动应用运行。然而,当本地定时器出现故障时,将会使得定时任务无法及时执行,导致应用无法正常运行。
发明内容
本发明实施例提供一种应用的定时任务处理方法及系统,可以及时地执行应用的定时任务,确保应用正常运行。
本发明实施例提供一种应用的定时任务处理方法,包括:
定时服务器接收各个应用服务器注册的定时任务,所述定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务;
所述存储服务器将所述定时服务器接收到的定时任务进行存储,并将所述定时服务器已执行的定时任务删除或设置已执行标记;
心跳服务器周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取所述存储服务器中与所述心跳包请求携带相同客户端标识的待执行定时任务;
所述心跳服务器在确定所述待执行定时任务中存在超时的待执行定时任务时,执行所述超时的待执行定时任务。
本发明实施例还提供一种应用的定时任务处理系统,包括:
定时服务器,用于接收各个应用服务器注册的定时任务,所述定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务;
存储服务器,用于将所述定时服务器接收到的定时任务进行存储,并将所述定时服务器已执行的定时任务删除或设置已执行标记;
心跳服务器,用于周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取所述存储服务器中与所述心跳包请求携带相同客户端标识的待执行定时任务,并在确定所述待执行定时任务中存在超时的待执行定时任务时,执行所述超时的待执行定时任务。
本发明的定时任务处理方法中,心跳服务器在每次接收到心跳包请求后,说明发送该心跳包请求的应用客户端还存活着,心跳服务器获取存储服务器中与心跳包请求携带相同客户端标识的待执行定时任务,以检测是否存在超时的待执行定时任务,若存在,说明定时服务器可能发生了故障而无法及时响应定时任务,此时使心跳服务器接替定时服务器的工作,执行超时的待执行定时任务,由此可以及时地执行定时任务,避免定时任务迟迟未能执行,从而确保了应用的正常运行。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的应用的定时任务处理系统的结构示意图;
图2是本发明实施例的应用的定时任务处理系统中,注册定时任务和执行定时任务的时序示意图;
图3是本发明实施例提供的应用的定时任务处理方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种应用的定时任务处理方法及系统。
本发明应用的定时任务处理方法中,定时服务器接收各个应用服务器注册的定时任务,该定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务;存储服务器将定时服务器接收到的定时任务进行存储,并将定时服务器已执行的定时任务删除或设置已执行标记;心跳服务器周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取存储服务器中与心跳包请求携带相同客户端标识的待执行定时任务;心跳服务器在确定待执行定时任务中存在超时的待执行定时任务时,执行超时的待执行定时任务。由此,本发明实施例中,当定时服务器发生了故障而无法及时响应定时任务,由心跳服务器接替定时服务器的工作,执行超时的待执行定时任务,由此可以及时地执行定时任务,避免定时任务迟迟未能执行而影响应用的运行,从而确保了应用的正常运行。
参阅图1,图1是本发明实施例应用的定时任务处理系统的结构示意图。其中,应用可以是游戏应用、即时通讯应用或其他类型的应用,等等。本实施例的定时任务处理系统可以是一个服务器集群系统,该系统包括负载均衡器101、多个应用服务器102、存储服务器103、定时服务器104以及心跳服务器105。
其中,存储服务器103用于获取应用在运行过程中所需的所有相关数据并进行存储,该相关数据包括所有的用户数据。比如,应用开发商可以将应用运行过程所需的数据通过后台管理页面存储至存储服务器中,而用户数据可以是通过接收各个应用客户端发送的用户数据而得到,其中应用客户端可以是运行于手机等终端上。
存储服务器103是独立的分布式存储服务器,可以采用CKV(Cloud KeyValue)的存储架构,或者是redis(Remote Dictionary Server,远程数据服务)存储架构。存储服务器103提供基本的读写操作,属于内存型存储。
多个应用服务器102用于和应用客户端进行交互。其中,应用客户端发送的用户请求通过负载均衡器101传递给应用服务器102。具体地,负载均衡器101用于接收各个应用客户端发送的用户请求,并在每接收到一个用户请求时,从所有应用服务器102中选取其中一个作为第三目标服务器,将接收到的用户请求发送给第三目标服务器。从而第三目标服务器根据用户请求携带的客户端标识,从存储服务器102中获取与用户请求携带的客户端标识对应的用户数据,进而执行与用户请求相关的操作。其中,上述用户请求可以是除心跳包请求之外的其他用户请求。
其中,客户端标识可以是安装应用客户端的终端的标识,或者也可以是用户注册应用的账号等。
本实施例中,由于应用的所有用户数据都存储在存储服务器103中,因此任何一个应用服务器102都可以从存储服务器103中获取各个用户数据。因此,负载均衡器101可以随机选取其中一个应用服务器102作为第三目标服务器来响应用户请求,或者,在另一实施方式中,负载均衡器101也可以在接收到一个用户请求后,获取所有应用服务器的运行信息,从而根据各个应用服务器的运行信息确定正常运行的应用服务器,然后获取正常运行的应用服务器的负载信息,根据这些负载信息确定各个应用服务器的负载量,从而获取负载量最小的应用服务器,并将负载量最小的应用服务器作为第三目标服务器。由此,在每获取一个用户请求后,通过将用户请求分配给负载量最小的应用服务器进行响应,可以有效地保证负载均衡,也能够提高用户请求的处理效率。
此外,现有技术中是将用户数据分散存储在各个应用服务器上,因此应用服务器只能够处理其所存储的用户数据对应的用户请求,无法处理其他用户请求,因此现有方案如果一个应用服务器产生故障,则存储于该应用服务器上的所有用户数据对应的用户请求都将无法处理,影响应用的运行,且容易导致应用服务器的负载不均衡,比如应用服务器A对用的用户活跃度较高,则该应用服务器A的负载将会比较高,而应用服务器B对应的用户活跃度低,则应用服务器B的负载就会比较低。
与现有技术相比,本发明实施例通过将应用的所有相关数据包括所有的用户数据都存储在存储服务器103中,因此各个应用服务器102不需要进行数据存储,可以采用无状态服务器,只需要执行相应操作即可,且每个应用服务器102可以从存储服务器103中获取各个用户数据,因此对于同一个客户端的多个用户请求或者对于不同客户端的用户请求都可以选择不同应用服务器102进行响应。例如对于游戏应用,一场游戏中各个客户端的用户请求可以在多个应用服务器102之间进行处理,同一个客户端的多个用户请求也可以选择在不同的应用服务器102上进行处理,由此可以避免当其中一个应用服务器发生故障时而无法处理用户请求的问题,并且可以根据各个应用服务器的负载情况分配应用服务器,有利于保证负载均衡,提高应用的水平扩展性。
其中,定时服务器104用于接收各个应用服务器102注册的定时任务,定时任务可以包括执行时间和执行动作。其中预先设置好各个应用服务器102的状态机,状态机是由应用的各个状态构成,即在触发条件产生时,使应用从一个状态变为另一个状态,应用服务器102可以通过获取配置文件来获取应用在运行过程中的各个状态以构建状态机。
在应用的运行中,应用服务器102根据应用客户端的用户请求,向定时服务器104注册定时任务,其中定时任务携带客户端标识。例如,结合图2所示的时序图,在狼人杀的游戏应用中,每个用户的讲话是存在时间限制的,如时间限制为30秒,当用户通过应用客户端发起讲话请求,应用服务器102接收到应用客户端发送的讲话请求后,向应用客户端返回允许讲话的通知,即响应该讲话请求,从而应用客户端根据该通知使当前状态为允许用户讲话状态,以接收用户的语音,同时应用服务器102向定时服务器104注册一个30秒的定时任务,该定时任务即为30秒后停止应用客户端讲话,也就是30秒后终止应用客户端的讲话功能,不再接收用户的语音。其中定时任务的执行时间为30秒,该30秒是指从接收到定时任务的时刻为起始时刻算起的30秒。
定时服务器104接收到应用服务器102注册的定时任务后,可以将定时任务存储至存储服务器103。此外,定时服务器104用于在每个定时任务的执行时间达到时执行相应的定时任务。
具体地,定时服务器104在每个定时任务的执行时间到达时,向负载均衡器101发出第二执行请求。负载均衡器101用于根据第二执行请求从所有应用服务器102中选取其中一个作为第二目标服务器。例如,负载均衡器101可以通过获取各个应用服务器102的运行信息,以确定正常运行的应用服务器102,然后获取正常运行的应用服务器102的负载信息,从而根据负载信息获取正常运行的应用服务器102中负载量最小的应用服务器102,以将负载量最小的应用服务器102选取为第二目标服务器,并向定时服务器104发送第二目标服务器的标识信息,从而定时服务器104根据第二目标服务器的标识信息确定第二目标服务器,并向第二目标服务器发送第二执行指令,以执行该执行时间到达的定时任务。从而,第二目标服务器根据第二执行指令执行该执行时间到达的定时任务对应的操作。
譬如,在上述例子的30秒定时任务中,结合图2,定时服务器104在30秒之后,也即执行时间到达时,向第二目标服务器发送第二执行指令,也即向第二目标服务器回调状态转变函数,从而第二目标服务器根据转变转变函数执行将应用客户端的讲话功能终止的操作,比如通知应用客户端从允许讲话状态变为终止讲话状态。而定时服务器104向第二目标服务器回调状态转变函数的动作也就是对30秒定时任务的响应,从而完成该30秒定时任务的执行。
因此,本发明实施例中,定时任务是用于表示定时服务器104在执行时间到达时向应用服务器102发出执行相关动作的通知(也即上述的第二执行指令),以使得应用服务器102根据该通知执行相关动作的过程,也可以理解为在某个动作的执行时间到达时,定时服务器104向应用服务器102发出执行该动作的通知,从而定时服务器104完成一个定时任务,即执行了一个定时任务,而应用服务器102则根据定时服务器104的通知执行该动作。例如,在上述30s的定时任务中,定时服务器104从接收到该定时任务起,30s后向应用服务器102发出停止应用客户端讲话功能的通知,从而在向应用服务器102发出该通知后,则完成了一个定时任务,应用服务器102则根据该通知控制应用客户端停止讲话功能。
当然,在其他实施例中,定时服务器104也可以在向负载均衡器101发送第二执行请求时,向负载均衡器101发送第二执行指令,从而负载均衡器101在确定第二目标服务器后,将第二执行指令发送给第二目标服务器。
本实施例中,通过向负载均衡器101发送第二执行请求,从而负载均衡器101可以选取负载量最小的应用服务器102来处理执行时间到达的定时任务对应的操作,有利于保证负载均衡,提高处理效率。另外,通过上述方式可知,本实施例向定时服务器104注册定时任务的应用服务器102(也即接收应用客户端的用户请求的应用服务器),与处理该定时任务对应的操作的应用服务器102可以是同一个应用服务器,也可以是不同的应用服务器,具体是由负载均衡器101根据各应用服务器102的运行状况和负载状况进行分配,可以确保负载均衡。
在一种实施例中,定时服务器104向第二目标服务器发送第二执行指令之后,每间隔预定时间向第二目标服务器发送执行通知,直至接收到第二目标服务器反馈的已经执行相应操作的确认信息。因此,本发明实施例中,定时服务器104将不断通知第二目标服务器,直至第二目标服务器确认已经执行定时任务对应的操作,从而可以保障定时任务对应的操作准确无误地执行。
其中,存储服务器103用于存储定时服务器104所接收到的定时任务,并将定时服务器104已执行的定时任务删除或者设置已执行标记。
本发明实施例中,存储服务器103在存储定时服务器104接收到的定时任务时,可以对这些定时任务设置未执行标记。当定时服务器104执行完成一个定时任务后,可以向存储服务器103发送定时任务执行完成的通知,从而存储服务器103可以将已经执行的定时任务删除,或者将未完成标记修改为已完成标胶。其中当存储服务器103不对定时任务设置未执行标记时,则在接收到定时服务器104发送的执行完成通知时,对已经执行的定时任务设置已完成标记。
心跳服务器105用于周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取存储服务器中与心跳包请求携带相同客户端标识的待执行定时任务,并在确定待执行定时任务中存在超时的待执行定时任务时,执行超时的待执行定时任务。
例如,应用客户端可以每隔一段时间向心跳服务器105发送心跳包请求,该心跳包请求可以是空请求,携带有客户端标识,心跳服务器105接收到心跳包请求后,可以确定对应的应用客户端是存活的,即仍然是在线的。其中,心跳包请求可以通过负载均衡器101传递给心跳服务器105。
其中,待执行定时任务是指存储服务器103中尚未执行的定时任务。当存储服务器103将定时服务器104已执行的定时任务删除时,心跳服务器105用于获取存储服务器103中剩余的、且与心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。当存储服务器103将定时服务器104已执行的定时任务设置已执行标记时,心跳服务器105用于获取存储服务器104中未设置有已执行标记、且与心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。或者,心跳服务器105也可以通过获取具有未执行标记的定时任务、且与心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。
其中,心跳服务器105用于获取当前时刻和各待执行定时任务的存储时刻之间的时间差,并比较各待执行定时任务的执行时间是否小于相应时间差;根据比较结果,将执行时间小于相应时间差的待执行定时任务确定为超时的待执行定时任务。
超时的待执行定时任务是指超过执行时间后仍然处于未执行状态的定时任务。比如,待执行定时任务有2个,分别为待执行定时任务A和待执行定时任务B,两个待执行定时任务A和B与心跳服务器105接收到的心跳包请求具有相同的客户端标识,即该两个待执行定时任务A和B都是同一个应用客户端的定时任务。假设待执行定时任务A的执行时间是1分钟,在存储服务器103的存储时刻为8:00,待执行定时任务B的执行时间为5分钟,在存储服务器103的存储时刻为8:02。心跳服务器105接收到心跳包请求的当前时刻为8:03,从而当前时刻与待执行定时任务A的存储时刻的时间差为3分钟,大于待执行定时任务A的执行时间,说明待执行定时任务A的执行时间已经过去但执行定时任务A仍未被执行,因此将待执行定时任务A确定为超时的待执行定时任务。而当前时刻与待执行定时任务B的存储时刻的时间差为1分钟,小于待执行定时任务B的执行时间,说明待执行定时任务B的执行时间还没有到达,因此待执行定时任务B不是超时的待执行定时任务。
本实施例中,当心跳服务器105接收应用客户端的心跳包请求,说明该应用客户端仍然存活,然而在应用客户端存活的情况下,存在该应用客户端对应的超时的待执行定时任务,说明定时任务超时未被执行并非是应用客户端离线等原因造成的,而是定时服务器104可能出现故障而无法及时处理,因此,本实施例中,心跳服务器105在确定存在超时的待执行定时任务时,接管定时服务器104的工作,执行超时的待执行定时任务,其中执行方式与定时服务器104执行定时任务的方式相类似。
具体地,心跳服务器105用于在确定待执行定时任务中存在超时的待执行定时任务时,向负载均衡器101发出第一执行请求。负载均衡器101用于根据第一执行请求从所有应用服务器102中选取其中一个作为第一目标服务器。心跳服务器105用于向第一目标服务器发送第一执行指令,以执行超时的待执行定时任务,即心跳服务器105向第一目标服务器回调相应的状态转变函数。第一目标服务器用于根据第一执行指令执行超时的待执行定时任务对应的操作,也即状态转变函数对应的操作。可选地,心跳服务器105在发送第一执行指令后,也可以周期性给第一目标服务器发送执行通知,直至接收到第一目标服务器返回的已经执行相应操作的确认信息。
其中,负载均衡器101用于在接收到第一执行请求后,获取所有应用服务器102的运行信息,以根据运行信息确定正常运行的应用服务器102;然后获取正常运行的应用服务器102的负载信息,以根据负载信息确定负载量最小的应用服务器102,并将负载量最小的应用服务器102选取为第一目标服务器。
本实施例利用心跳服务器105在定时服务器104出现故障时代替定时服务器104的工作,以执行超时的待执行定时任务,可以使得超时的定时任务得到及时执行,避免超时的定时任务无法执行而影响应用的运行。另外,本实施例由于是在接收到心跳包请求后心跳服务器105进行超时的定时任务的检测和执行,因此允许超时的定时任务的执行存在少量的时间延迟误差,相比于超时的定时任务迟迟无法得到响应的情况,本发明实施例可以在较快的时间内响应超时的定时任务,有利于确保应用的正常运行。
其中,当定时服务器104恢复正常时,可以继续对存储服务器103中的定时任务进行执行,从而避免存储服务器103中存在超时的待执行定时任务,由此可以使得心跳服务器105退居二线,不需要再执行定时任务。或者,定时服务器104恢复正常时,也可以向心跳服务器105发送恢复的通知,从而使得心跳服务器105不再进行定时任务的执行。
因此,本发明实施例,利用心跳服务器105在定时服务器104出现故障时,代替定时服务器104做定时任务的检测工作,与定时服务器104相辅相成,可以确保定时任务准确无误地执行。
参阅图3,本发明实施例的应用的定时任务处理方法中,可以包括如下步骤:
301、定时服务器接收各个应用服务器注册的定时任务,定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务。
302、存储服务器将定时服务器接收到的定时任务进行存储,并将定时服务器已执行的定时任务删除或设置已执行标记。
其中,存储服务器还获取应用在运行过程中所需的所有相关数据并进行存储,该相关数据包括所有的用户数据。
其中,应用服务器可以根据应用客户端的用户请求,向定时服务器注册定时任务。例如,在狼人杀的游戏应用中,每个用户的讲话是存在时间限制的,如时间限制为30秒,当用户通过应用客户端发起讲话请求,应用服务器接收到应用客户端发送的讲话请求后,向应用客户端返回允许讲话的通知,从而应用客户端处于允许用户讲话状态,可以接收到用户的语音,同时应用服务器向定时服务器注册一个30秒的定时任务,该定时任务即为30秒后停止应用客户端讲话,也就是30秒后终止应用客户端的讲话功能,不再接收用户的语音。
定时服务器在每个定时任务的执行时间达到时执行相应的定时任务。具体可以包括如下步骤:
(11)定时服务器在每个定时任务的执行时间到达时,向负载均衡器发出第二执行请求。
(12)负载均衡器根据第二执行请求从所有应用服务器中选取其中一个作为第二目标服务器。
其中,负载均衡器可以通过获取各个应用服务器的运行信息,以确定正常运行的应用服务器,然后获取正常运行的应用服务器的负载信息,从而根据负载信息获取正常运行的应用服务器中负载量最小的应用服务器,以将负载量最小的应用服务器选取为第二目标服务器,并向定时服务器发送第二目标服务器的标识信息。
(13)定时服务器向第二目标服务器发送第二执行指令,以使第二目标服务器根据第二执行指令执行执行时间到达的定时任务对应的操作,从而定时服务器执行执行时间到达的定时任务。
定时服务器104根据第二目标服务器的标识信息确定第二目标服务器,并向第二目标服务器发送第二执行指令,以执行该执行时间到达的定时任务。从而,第二目标服务器根据第二执行指令执行该执行时间到达的定时任务对应的操作
本实施例中,由于应用的所有用户数据都存储在存储服务器中,因此任何一个应用服务器都可以从存储服务器中获取各个用户数据。因此,负载均衡器可以随机选取其中一个应用服务器作为第二目标服务器来接收第二执行指令,以执行定时任务对应的操作。进一步地,通过使负载均衡器选取负载量最小的应用服务器来处理执行时间到达的定时任务对应的操作,有利于保证负载均衡,提高处理效率。
在一种实施例中,定时服务器向第二目标服务器发送第二执行指令之后,每间隔预定时间向第二目标服务器发送执行通知,直至接收到第二目标服务器反馈的已经完成执行的确认信息。因此,本发明实施例中,定时服务器将不断通知第二目标服务器,直至第二目标服务器确认完成定时任务对应的操作,从而可以保障定时任务对应的操作准确无误地执行。
303、心跳服务器周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取存储服务器中与心跳包请求携带相同客户端标识的待执行定时任务。
其中,待执行定时任务是指存储服务器中尚未执行的定时任务。当存储服务器将定时服务器已执行的定时任务删除时,心跳服务器用于获取存储服务器中剩余的、且与心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。当存储服务器将定时服务器已执行的定时任务设置已执行标记时,心跳服务器用于获取存储服务器中未设置有已执行标记、且与心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。
304、心跳服务器在确定待执行定时任务中存在超时的待执行定时任务时,执行超时的待执行定时任务。
其中,心跳服务器通过获取当前时刻和各待执行定时任务的存储时刻之间的时间差,并比较各待执行定时任务的执行时间是否小于相应时间差,从而根据比较结果,将执行时间小于相应时间差的待执行定时任务确定为超时的待执行定时任务。超时的待执行定时任务即是指超过执行时间后仍然处于未执行状态的定时任务。
其中,心跳服务器执行超时的待执行定时任务,具体可以包括:在确定待执行定时任务中存在超时的待执行定时任务时,向负载均衡器发出第一执行请求;负载均衡器根据第一执行请求从所有应用服务器中选取其中一个作为第一目标服务器;心跳服务器向第一目标服务器发送第一执行指令,以执行超时的待执行定时任务。发送第一执行指令也即向第一目标服务器回调相应的状态转变函数。第一目标服务器用于根据第一执行指令执行超时的待执行定时任务对应的操作,也即状态转变函数对应的操作。
其中,负载均衡器可以在接收到第一执行请求后,获取所有应用服务器的运行信息,以根据运行信息确定正常运行的应用服务器;然后获取正常运行的应用服务器的负载信息,以根据负载信息确定负载量最小的应用服务器,并将负载量最小的应用服务器选取为第一目标服务器。
本实施例中,利用心跳服务器在定时服务器出现故障时代替定时服务器的工作,以执行超时的待执行定时任务,可以使得超时的定时任务得到及时执行,避免超时的定时任务无法执行而影响应用的运行。
在本发明一实施例中,负载均衡器还接收各个应用客户端发送的用户请求,该用户请求可以是除心跳包请求之外的其他用户请求,并在每接收到一个用户请求时,从所有应用服务器中选取其中一个作为第三目标服务器,将接收到的用户请求发送给第三目标服务器。从而第三目标服务器根据用户请求携带的客户端标识,从存储服务器中获取与用户请求携带的客户端标识对应的用户数据,进而执行与用户请求相关的操作。
本实施例中,由于应用的所有用户数据都存储在存储服务器中,因此任何一个应用服务器都可以从存储服务器中获取各个用户数据,因此负载均衡器可以在接收到一个用户请求后,将负载量最小的应用服务器作为第三目标服务器,然后将用户请求分配给第三目标服务器以进行响应,可以有效地保证负载均衡,也能够提高用户请求的处理效率。
以上对本发明实施例所提供的一种应用的定时任务处理方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种应用的定时任务处理方法,其特征在于,包括:
定时服务器接收各个应用服务器注册的定时任务,所述定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务;
存储服务器将所述定时服务器接收到的定时任务进行存储,并将所述定时服务器已执行的定时任务删除或设置已执行标记;
心跳服务器周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取所述存储服务器中与所述心跳包请求携带相同客户端标识的待执行定时任务;
所述心跳服务器获取当前时刻和各所述待执行定时任务的存储时刻之间的时间差,并比较各所述待执行定时任务的执行时间是否小于相应所述时间差;
所述心跳服务器根据比较结果,将执行时间小于相应所述时间差的待执行定时任务确定为超时的待执行定时任务;
执行所述超时的待执行定时任务。
2.根据权利要求1所述的方法,其特征在于,所述获取所述存储服务器中与所述心跳包请求携带相同客户端标识的待执行定时任务,包括:
当所述存储服务器将所述定时服务器已执行的定时任务删除时,心跳服务器获取所述存储服务器中剩余的、且与所述心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务;
当所述存储服务器将所述定时服务器已执行的定时任务设置已执行标记时,心跳服务器获取所述存储服务器中未设置有所述已执行标记、且与所述心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。
3.根据权利要求1所述的方法,其特征在于,在定时服务器接收各个应用服务器注册的定时任务,并在每个定时任务的执行时间到达时执行相应的定时任务之前,还包括:
存储服务器获取所述应用在运行过程中所需的所有相关数据并进行存储,所述相关数据包括所有的用户数据。
4.根据权利要求3所述的方法,其特征在于,所述执行所述超时的待执行定时任务,包括:
所述心跳服务器在确定所述待执行定时任务中存在超时的待执行定时任务时,向负载均衡器发出第一执行请求;
所述负载均衡器根据所述第一执行请求从所有应用服务器中选取其中一个作为第一目标服务器;
所述心跳服务器向所述第一目标服务器发送第一执行指令,以使所述第一目标服务器根据所述第一执行指令执行所述超时的待执行定时任务对应的操作,从而所述心跳服务器执行所述超时的待执行定时任务。
5.根据权利要求4所述的方法,其特征在于,所述负载均衡器根据所述第一执行请求从所有应用服务器中选取其中一个作为第一目标服务器,包括:
所述负载均衡器在接收到所述第一执行请求后,获取多个应用服务器的运行信息,以根据所述运行信息确定正常运行的应用服务器,然后获取所述正常运行的应用服务器的负载信息,以根据所述负载信息确定负载量最小的应用服务器,并将所述负载量最小的应用服务器选取为第一目标服务器。
6.根据权利要求4所述的方法,其特征在于,所述定时服务器接收各个应用服务器注册的定时任务,并在每个定时任务的执行时间到达时执行相应的定时任务,包括:
定时服务器在每个定时任务的执行时间到达时,向负载均衡器发出第二执行请求;
所述负载均衡器根据所述第二执行请求从所有应用服务器中选取其中一个作为第二目标服务器;
所述定时服务器向所述第二目标服务器发送第二执行指令,以使所述第二目标服务器根据所述第二执行指令执行所述执行时间到达的定时任务对应的操作,从而所述定时服务器执行所述执行时间到达的定时任务;
其中,在所述定时服务器向所述第二目标服务器发送第二执行指令之后,还包括:所述定时服务器每间隔预定时间向所述第二目标服务器发送执行通知,直至接收到所述第二目标服务器反馈的已经完成执行的确认信息。
7.根据权利要求3所述的方法,其特征在于,在所述存储服务器获取所述应用在运行过程中所需的所有相关数据并进行存储之后,还包括:
负载均衡器接收各个应用客户端的用户请求,并在每接收到一个所述用户请求时,从所有应用服务器中选取其中一个作为第三目标服务器,将接收到的所述用户请求发送给所述第三目标服务器;
所述第三目标服务器根据所述用户请求携带的客户端标识,从所述存储服务器中获取与所述用户请求携带的客户端标识对应的用户数据,以执行与所述用户请求相关的操作。
8.一种应用的定时任务处理系统,其特征在于,包括:
定时服务器,用于接收各个应用服务器注册的定时任务,所述定时任务携带客户端标识,并在每个定时任务的执行时间到达时执行相应的定时任务;
存储服务器,用于将所述定时服务器接收到的定时任务进行存储,并将所述定时服务器已执行的定时任务删除或设置已执行标记;
心跳服务器,用于周期性地接收应用客户端发送的心跳包请求,并在每次接收到心跳包请求后,获取所述存储服务器中与所述心跳包请求携带相同客户端标识的待执行定时任务,所述心跳服务器获取当前时刻和各所述待执行定时任务的存储时刻之间的时间差,并比较各所述待执行定时任务的执行时间是否小于相应所述时间差;所述心跳服务器根据比较结果,将执行时间小于相应所述时间差的待执行定时任务确定为超时的待执行定时任务;执行所述超时的待执行定时任务。
9.根据权利要求8所述的系统,其特征在于,所述心跳服务器用于:
当所述存储服务器将所述定时服务器已执行的定时任务删除时,获取所述存储服务器中剩余的、且与所述心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务;
当所述存储服务器将所述定时服务器已执行的定时任务设置已执行标记时,获取所述存储服务器中未设置有所述已执行标记、且与所述心跳包请求携带相同客户端标识的定时任务,以获取待执行定时任务。
10.根据权利要求8所述的系统,其特征在于,所述存储服务器还用于获取所述应用在运行过程中所需的所有相关数据并进行存储,所述相关数据包括所有的用户数据。
11.根据权利要求10所述的系统,其特征在于,还包括负载均衡器和多个应用服务器;
所述心跳服务器,用于在确定所述待执行定时任务中存在超时的待执行定时任务时,向所述负载均衡器发出第一执行请求;
所述负载均衡器,用于根据所述第一执行请求从所有应用服务器中选取其中一个作为第一目标服务器;
所述心跳服务器,用于向所述第一目标服务器发送第一执行指令,以执行所述超时的待执行定时任务;
所述第一目标服务器,用于根据所述第一执行指令执行所述超时的待执行定时任务对应的操作。
12.根据权利要求11所述的系统,其特征在于,所述负载均衡器用于:
在接收到所述第一执行请求后,获取所有应用服务器的运行信息,以根据所述运行信息确定正常运行的应用服务器;
获取所述正常运行的应用服务器的负载信息,以根据所述负载信息确定负载量最小的应用服务器,并将所述负载量最小的应用服务器选取为第一目标服务器。
13.根据权利要求11所述的系统,其特征在于,还包括负载均衡器和多个应用服务器;
所述定时服务器,用于在每个定时任务的执行时间到达时,向所述负载均衡器发出第二执行请求;
所述负载均衡器,用于根据所述第二执行请求从所有应用服务器中选取其中一个作为第二目标服务器;
所述定时服务器,用于向所述第二目标服务器发送第二执行指令,以执行所述执行时间到达的定时任务,其中在发送所述第二执行指令之后,每间隔预定时间向所述第二目标服务器发送执行通知,直至接收到所述第二目标服务器反馈的已经完成执行的确认信息;
所述第二目标服务器根据所述第二执行指令执行所述执行时间到达的定时任务对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539246.4A CN110213213B (zh) | 2018-05-30 | 2018-05-30 | 应用的定时任务处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810539246.4A CN110213213B (zh) | 2018-05-30 | 2018-05-30 | 应用的定时任务处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110213213A CN110213213A (zh) | 2019-09-06 |
CN110213213B true CN110213213B (zh) | 2021-08-03 |
Family
ID=67778846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810539246.4A Active CN110213213B (zh) | 2018-05-30 | 2018-05-30 | 应用的定时任务处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110213213B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416581B (zh) * | 2020-11-13 | 2022-02-18 | 五八同城信息技术有限公司 | 定时任务的分布式调用系统 |
CN112751746B (zh) * | 2020-12-28 | 2023-03-14 | 北京达佳互联信息技术有限公司 | 任务处理方法和装置及电子设备 |
CN115952007B (zh) * | 2023-03-09 | 2023-06-16 | 杭州银行股份有限公司 | 一种应用运行方法、计算设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN102075358A (zh) * | 2010-12-31 | 2011-05-25 | 网宿科技股份有限公司 | 针对大规模服务器集群的内容分发和部署的系统和方法 |
CN103716182A (zh) * | 2013-12-12 | 2014-04-09 | 中国科学院信息工程研究所 | 一种面向实时云平台的故障检测与容错方法及系统 |
CN106095562A (zh) * | 2016-08-23 | 2016-11-09 | 北京云纵信息技术有限公司 | 任务调度管理的方法和装置 |
CN106227596A (zh) * | 2016-07-13 | 2016-12-14 | 百度在线网络技术(北京)有限公司 | 用于任务调度服务器的任务监控方法和装置 |
CN106293979A (zh) * | 2015-06-25 | 2017-01-04 | 伊姆西公司 | 检测进程无响应的方法和装置 |
CN106598726A (zh) * | 2016-11-04 | 2017-04-26 | 厦门安胜网络科技有限公司 | 一种多任务管理系统及其分布式部署方法 |
CN107483601A (zh) * | 2017-08-28 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种分布式定时任务的实现方法及执行系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9323540B2 (en) * | 2013-08-15 | 2016-04-26 | Nxp B.V. | Task execution determinism improvement for an event-driven processor |
US20150263900A1 (en) * | 2014-03-11 | 2015-09-17 | Schlumberger Technology Corporation | High performance distributed computing environment particularly suited for reservoir modeling and simulation |
CN105553760B (zh) * | 2015-12-11 | 2019-03-22 | 中国科学院信息工程研究所 | 一种基于心跳的软件模块故障处理方法及系统 |
CN106874079A (zh) * | 2016-06-08 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种任务执行的方法及装置 |
CN106452977A (zh) * | 2016-11-24 | 2017-02-22 | 武汉斗鱼网络科技有限公司 | 一种动态自适应心跳发送方法及系统 |
-
2018
- 2018-05-30 CN CN201810539246.4A patent/CN110213213B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599027A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN102075358A (zh) * | 2010-12-31 | 2011-05-25 | 网宿科技股份有限公司 | 针对大规模服务器集群的内容分发和部署的系统和方法 |
CN103716182A (zh) * | 2013-12-12 | 2014-04-09 | 中国科学院信息工程研究所 | 一种面向实时云平台的故障检测与容错方法及系统 |
CN106293979A (zh) * | 2015-06-25 | 2017-01-04 | 伊姆西公司 | 检测进程无响应的方法和装置 |
CN106227596A (zh) * | 2016-07-13 | 2016-12-14 | 百度在线网络技术(北京)有限公司 | 用于任务调度服务器的任务监控方法和装置 |
CN106095562A (zh) * | 2016-08-23 | 2016-11-09 | 北京云纵信息技术有限公司 | 任务调度管理的方法和装置 |
CN106598726A (zh) * | 2016-11-04 | 2017-04-26 | 厦门安胜网络科技有限公司 | 一种多任务管理系统及其分布式部署方法 |
CN107483601A (zh) * | 2017-08-28 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种分布式定时任务的实现方法及执行系统 |
Non-Patent Citations (1)
Title |
---|
简易非抢先式实时多任务操作系统的设计与应用;彭良清;《单片机与嵌入式系统》;20020115;19-24 * |
Also Published As
Publication number | Publication date |
---|---|
CN110213213A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110213213B (zh) | 应用的定时任务处理方法及系统 | |
CN110768873B (zh) | 分布式心跳检测方法、系统、装置和计算机设备 | |
CN108055322B (zh) | 请求消息处理方法及装置 | |
CN111176803A (zh) | 业务处理方法、装置、服务器及存储介质 | |
CN103562890A (zh) | 在发布/订阅消息系统中管理消息订阅 | |
CN109173270B (zh) | 一种游戏服务系统和实现方法 | |
CN110958302B (zh) | 文件上传方法、用户终端、上传管理服务器和系统 | |
CN112367345B (zh) | 数据处理方法、服务端设备及计算机可读存储介质 | |
US9104488B2 (en) | Support server for redirecting task results to a wake-up server | |
US9736235B2 (en) | Computer system, computer, and load balancing method | |
US11223522B1 (en) | Context-based intelligent re-initiation of microservices | |
CN111510469A (zh) | 一种消息处理方法和装置 | |
CN112559461A (zh) | 文件传输方法及装置、存储介质及电子设备 | |
CN115023919A (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
CN110119314A (zh) | 一种服务器调用方法、装置、服务器及存储介质 | |
CN109905459B (zh) | 一种数据传输方法及装置 | |
CN112910740A (zh) | 一种状态上报方法、装置、设备和计算机可读存储介质 | |
CN110413398B (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
CN114328156B (zh) | 协议端口的健康检测方法、装置、设备及可读存储介质 | |
EP3299960A1 (en) | Virtual machine deployment method, device and network function virtualization orchestrator (nfvo) | |
CN108718285B (zh) | 云计算集群的流量控制方法、装置及服务器 | |
US10419368B1 (en) | Dynamic scaling of computing message architecture | |
CN111552581A (zh) | 事件传递方法、装置、系统和电子设备 | |
CN112351072B (zh) | 一种消息推送方法及终端 | |
CN113765711B (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 |