CN107918556A - 一种定时任务在多个服务器的并行执行方法和装置 - Google Patents
一种定时任务在多个服务器的并行执行方法和装置 Download PDFInfo
- Publication number
- CN107918556A CN107918556A CN201610885998.7A CN201610885998A CN107918556A CN 107918556 A CN107918556 A CN 107918556A CN 201610885998 A CN201610885998 A CN 201610885998A CN 107918556 A CN107918556 A CN 107918556A
- Authority
- CN
- China
- Prior art keywords
- task
- instances
- task instances
- tasks carrying
- server node
- 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
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
-
- 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
-
- 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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种定时任务在多个服务器的并行执行方法和装置,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,减少运维成本,解决单点失效问题,避免业务因单点故障而停滞,服务器宕机时无需人工干预,支持大型任务拆分,应用开发人员只需专注于具体业务开发即可,可用性和扩展性好。本发明的定时任务在多个服务器的并行执行方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
Description
技术领域
本发明涉及计算机及其软件技术领域,特别地涉及一种定时任务在多个服务器的并行执行方法和装置。
背景技术
在大量的应用系统中存在定时任务的场景,例如,在应用系统的实际开发过程中存在大量无需人工干预又需定期执行的系统后台任务,这些定时任务往往不可避免的要考虑到单点问题、协同问题和拆分问题,这就需要一套完整的解决方案去支撑系统的有效运行。利用Spring Quartz可以高效地支持这种定时任务调度场景,让这些后台任务可以在指定的时间按照指定的策略自动化运行。
Quartz是一款优秀的企业级任务调度引擎,Spring对其进行了很好地封装,使Quartz高效集成,大大简化了应用开发人员对Quartz特性的使用成本,只需要通过简单的一些配置,便可使应用具备企业级的任务调度特性,从而使开发人员可以高效地将其应用到实际业务中。
此外,Java为了降低多线程场景频繁创建和销毁线程所带来的资源消耗,为开发者提供了线程池技术,通过重复利用已创建的线程降低线程创建和销毁造成的消耗,同时提高线程的可管理性,使用线程池可以对多线程进行统一的分配、调优和监控。
现有的定时任务调度及执行方案利用了上述Spring Quartz和线程池技术的特性,主要解决方案包括:
1、通过使用Spring Quartz在指定的时间频率启动定时任务,通常还会配合线程池技术在单机上完成相应的业务处理;
2、为了防止多台服务器的定时任务在同一时间并发执行的问题(并发执行很有可能导致业务处理重复),通常单一业务只会在单一服务器上节点进行配置。在这种情况下,一旦节点宕机,则定时任务将不能正常定时执行;
3、同时为了防止单机负载过大,通常会将业务进行分组,通过在不同服务器节点配置不同的Quartz文件来实现。这种方案造成各个服务器节点的配置文件不同,运行的定时任务不同,资源利用率不均匀,需要靠人工经验分配定时任务,服务器配置文件的维护性也不好。
可见,现有的解决方案存在诸多缺陷,归纳起来主要体现在如下几个方面:
第一,不同线上服务器节点的配置文件不一致,为运维增加了很大的成本和负担,每次上线部署,都需要对不同的服务器逐一仔细核实其业务配置情况;当服务器出现故障时,故障定位和业务恢复的工作带来了额外的时间成本;各个服务器间的资源利用率也不够均衡,存在部分服务器运行压力很大,而部分服务器运行压力很小的问题。
第二,存在单点失效问题,一旦服务器出现故障,只能通过相应的业务告警得知,然后再通过人工干预来恢复相应的业务。
第三,在单个服务器无论是利用单线程或是利用传统线程池进行多线程业务处理时,当具体业务进行I/O等耗时操作时,往往会造成CPU空转,使得应用程序对计算资源的利用率不高。
发明内容
有鉴于此,本发明提供一种定时任务在多个服务器的并行执行方法和装置,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,减少运维成本,解决单点失效问题,避免业务因单点故障而停滞,服务器宕机时无需人工干预,支持大型任务拆分,应用开发人员只需专注于具体业务开发即可,可用性和扩展性好。
为实现上述目的,根据本发明的一个方面,提供了一种定时任务在多个服务器的并行执行方法。
一种定时任务在多个服务器的并行执行方法,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述方法包括:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
可选地,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。
可选地,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。
可选地,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。
可选地,所述任务标识具有预设的生存周期,当任务标识的生存周期过期时,该任务标识对应的任务实例被签退。
根据本发明的另一方面,提供了一种定时任务在多个服务器的并行执行装置。
一种定时任务在多个服务器的并行执行装置,其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;所述装置包括:签到模块,用于接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;签退模块,用于轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
可选地,所述预定规则包括:当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。
可选地,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。
可选地,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。
可选地,所述任务标识具有预设的生存周期,所述签退模块还用于:当任务标识的生存周期过期时,对该任务标识对应的任务实例签退。
根据本发明的技术方案,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到定时时间时在各服务器节点分别启动任务实例,首先接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例,然后轮询任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从任务执行列表中移除该任务实例。使用本发明的技术方案,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,应用开发人员和运维人员不再需要维护不同服务器上不同定时任务的分组配置,减少了运维成本,还很好地解决了单点失效问题,避免业务因单点故障而停滞,且服务器宕机时无需人工干预,此外,支持大型任务的拆分,应用开发人员无需关注多线程调度、子任务拆分与合并等问题,而只需专注于具体业务开发即可,并且可用性和扩展性好,当单集群的业务负担加重时只需增加服务器节点即可,而不需对新增节点做个性化的特殊配置。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的定时任务在多个服务器的并行执行方法的主要步骤示意图;
图2是根据本发明实施例的定时任务在多个服务器并行执行的整体构架示意图;
图3是根据本发明实施例的fork/join框架的工作原理示意图;
图4是根据本发明实施例的定时任务在多个服务器并行执行的构架的调用流程示意图;
图5是根据本发明实施例的定时任务在多个服务器的并行执行装置的主要模块示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的定时任务在多个服务器的并行执行方法的主要步骤示意图。
根据本发明实施例的定时任务在多个服务器的并行执行方法,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到该配置的定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识。其中,在各服务器节点中,可通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成上述任务实例。
如图1所示,本发明实施例的定时任务在多个服务器的并行执行方法主要包括如下的步骤S11至步骤S12。
步骤S11:接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例。
其中,预定规则可以包括:当相同任务标识的其他任务实例已被添加到任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到任务执行列表,则签到失败。
并且,预设界限值可以为规定的允许执行该相同任务类型任务实例的服务器数量。
步骤S12:轮询任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从任务执行列表中移除该任务实例。
各任务实例的任务标识具有预设的生存周期,任务实例被签退的情况,除了上述步骤S12中提及的任务实例在执行完毕时被签退以外,当任务标识的生存周期过期时,该任务标识对应的任务实例也将被签退。
图2是根据本发明实施例的定时任务在多个服务器并行执行的整体构架示意图。
如图2所示的构架中,执行定时任务的多个服务器(为应用服务器)构成应用服务器集群,可记为服务器1~服务器N,每个应用服务器作为集群中的节点(节点1~节点N),并且,为每个应用服务器配置相同的配置文件,配置文件中规定了启动任务实例的定时时间。每个应用服务器中包含任务发起者和任务代理人,其中,任务发起者可为在应用服务器中实现的Client(客户端),其主要用于生成具体的任务实例,并通过任务代理人提交任务实例。任务代理人(Workagent)是本构架中面向任务发起者的接口,主要用于统筹维护任务发起者提交的任务实例,以及负责这些任务实例的启停调度。任务发起者可以通过任务代理人向存储系统集群中的任务监督者请求签到,在应用服务器集群中,各服务器可以在同一定时时间提交任务实例,并通过抢占式的机制进行签到,所有任务实例只有签到通过之后才能在相应的服务器上执行,并且当任务执行完毕之后任务实例将被签退。
存储系统集群具体可以为Redis存储系统集群,其用于存储所有任务实例的状态信息,包括各任务实例的启动时间、结束时间、执行该任务实例的具体服务器的信息以及任务实例的执行并行数。Redis存储系统是一个开源、先进的key-value存储系统,其基于内存的高速存储特性,使其作为应用的缓存层,为请求提供高效的反馈,同时大大减轻数据库底层的压力,其丰富的数据结构和API更为各种应用场景提供了强有力的支撑,并且,Redis为单进程单线程模式,采用队列模式可将并发访问变成串行访问,配合其SETNX(Set if notexist)等指令可以保证在并发情况下对指定键值的操作只有一个请求可以成功,从而为利用Redis实现分布式锁奠定了基础。
本发明实施例的Redis存储系统集群中包括任务监督者(Overseer),其提供了用于签到的应用程序接口(API)和用于签退的应用程序接口(API),以对任务实例进行签到和签退。任务监督者通过协同管理不同应用服务器中的任务实例的执行状态,并使用基于Redis实现的分布式锁,保证了集群内单一任务的原子性,同时,还可以监控各个任务实例的执行状态以及各个应用服务器的工作状态,并向任务代理人提供查询服务。通过任务监督者提供的接口可查询保存在存储系统集群中的所有任务实例的状态信息。
任务实例主要是通过继承本构架中提供的任务实例基类并添加相应业务逻辑而生成的。本构架中提供了两种模式的任务实例基类供构架使用者继承,具体包括基本任务实例(BasicWorker)和递归任务实例(RecursiveWorker),其中,基本任务实例(BasicWorker)主要面向作业内容较为单一且对计算资源消耗较小的工作场景,而递归任务实例(RecursiveWorker)则主要面向业务内容相对复杂,特别是对计算资源消耗较大的工作场景。使用者可以根据自己具体的业务场景进行选择相应的基类,并通过实现相应的抽象方法来添加具体的业务逻辑,从而生成所需要的任务实例。其中,递归任务实例(RecursiveWorker)继承于Java7后提供的并行处理框架fork/join中的一个核心抽象类RecursiveAction,并且递归任务实例(RecursiveWorker)依托于fork/join计算框架强大的算法,进行了更高阶地封装,从而使本构架的使用者既可以充分利用计算资源,使任务执行更加高效,同时,又无需了解fork/join框架的使用方式及原理,只需要对递归任务实例(RecursiveWorker)基类的抽象方法进行实现即可,保证了复杂业务的任务高效地运行。
图3示出了本发明实施例中使用的fork/join框架的工作原理示意图。fork/join并行处理框架可以大量运用于能将大任务很好地分解为相互独立的子任务的运算场景,如大型的归并排序和快速排序,将单线程场景的递归计算问题转化为并行执行,充分利用多核处理器并行计算的优势。根据图3所示,fork/Join框架主要采用“分而治之”的思想,将一个大任务(如图3中的任务0)层层递归,拆解成足够小的任务(如图3中的任务0-1、任务0-2、任务0-1-1、任务0-1-2、任务0-2-1、任务0-2-2、任务0-2-3),并配合其高效的算法,充分利用CPU的计算资源,进行并行执行,并最终将这些小任务的层层汇总,得到大任务的结果,使复杂任务能够高效地完成。
下面结合上述对图2所示的构架的详细介绍,进一步介绍本发明实施例的定时任务在多个服务器并行执行的构架的完整调用流程。如图4所示,该流程主要包括如下的步骤S41至步骤S48。
步骤S41:在各服务器节点分别生成各自的任务实例。
通过继承图2所示构架中所提供的任务实例基类并添加相应业务逻辑而生成该任务实例。任务实例基类中封装了任务实例如何进行签到、更新状态以及签退等执行逻辑,上述已经详细介绍了任务实例基类的两种模式(基本任务实例(BasicWorker)和递归任务实例(RecursiveWorker)),此处不再赘述。生成的任务实例具有两个属性,即任务标识(jobID)和任务类型。
步骤S42:当达到配置的定时时间时,通过任务代理人提交任务实例并向任务监督者请求签到。
各服务器节点具有相同的配置文件,并在配置文件中指定的定时时间启动任务实例,通过任务代理人提交任务实例同时向任务监督者请求签到。
步骤S43:判断任务实例签到是否成功,若是,则执行步骤S45,否则执行步骤S44。
任务监督者主要通过抢占式签到的机制对各提交的任务实例实施签到。
使用的签到规则可以为:当相同任务标识的其他任务实例已被添加到任务执行列表,则签到失败。具体地,利用基于Redis存储系统提供的SETNX命令和GETSET命令所实现的分布式锁,对该任务标识下的各任务实例进行抢占式签到(相应任务实例抢占成功之后将对应的任务标识锁定),抢占成功的任务实例被添加到任务执行列表,当任务实例执行完毕之后,该任务实例被签退(删除锁定的该任务标识),同时该任务实例被从任务执行列表中删除。签到成功的任务实例为最先到达任务监督者的签到请求所对应的任务实例,而请求签到的后续其他任务实例在该任务实例签退之前无法完成签到,这样保证了在同一时间只有一个应用服务器执行该任务标识下的任务实例,避免定时任务的重复执行,任务代理人可以通过任务监督者提供的用于签到的应用程序接口查询某个任务标识是否被锁定。
签到规则还可以为:当相同任务类型的、达到预设界限值的其他任务实例的已被添加到任务执行列表,则签到失败。任务监督者可以限制同一任务类型下的并发任务数,例如,任务类型为日志统计任务,在该任务类型下具体还包括抽奖日志统计任务、签到日志统计任务、邮件日志统计任务等多个定时任务的实例,假设同一时间只允许两台服务器执行该任务类型的任务实例,当应用服务器集群中的并发任务数达到该界限值(两台)时,任务监督者将查询到该任务类型下已有两个任务实例签到成功并被添加入任务执行列表,则拒绝为其他的任务实例签到,也就是说,此时应用服务器集群中其他任何服务器节点提交该任务类型下的任务实例都会失败,直到有相应的任务实例执行完毕向任务监督者签退之后,其他服务器节点才可以继续提交此任务类型下的任务实例。这样,实现了任务监督者对应用服务器集群资源的统一协调管控。本领域技术人员可以理解地是,基于该签到规则,还可以对单一服务器同一时间点运行的任务上限数量进行机器维度的管控。
步骤S44:发送签到失败的通知消息。
同一服务器节点通常运行着多个任务实例,如果一个服务器节点提交的任务实例签到失败,在收到签到失败的通知消息之后,该服务器节点还可以继续提交其他任务实例并向任务监督者签到。
步骤S45:把签到成功的任务实例添加到任务执行列表。
任务实例签到成功之后,把签到成功的任务实例添加到任务执行列表,任务执行列表可以为存储任务实例线程的容器,例如任务实例容器(WorkMap),通过调用任务代理人提供的getToWork方法来通知任务代理人启动任务执行列表中的任务实例线程。
步骤S46:任务代理人启动任务执行列表中的任务实例线程,通过相应的服务器执行任务实例。
任务代理人收到getToWork的通知之后,获取任务执行列表并启动任务实例的线程执行具体的业务逻辑。
步骤S47:任务代理人判断任务执行列表中任务实例线程是否结束,若是,则执行步骤S48,否则流程结束。
具体地,当任务执行列表中的任务实例线程数大于零时,循环获取任务执行列表中的任务实例线程,根据任务实例线程的执行状态判断该任务实例线程是否结束。
步骤S48:从任务执行列表中移除该任务实例的线程,并通知任务监督者对该任务实例签退。
如果任务实例线程结束,则从任务执行列表中移除该任务实例的线程,同时通知任务监督者将锁定的该任务实例的任务标识删除,使得后续的该任务标识对应的其他任务实例可以继续提交签到请求。
此外,每个任务实例具有其执行任务的过期时间,该过期时间也就是任务标识在应用服务器集群范围内的生存周期,生存周期过期时该任务标识将会失效,该任务标识对应的任务实例也将被签退。这样,保证了抢占签到成功的任务实例出现异常而无法正常签退时相同任务标识的其他任务实例可以继续提交并签到。
图5是根据本发明实施例的定时任务在多个服务器的并行执行装置的主要模块示意图。
其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识。图5所示的本发明实施例的定时任务在多个服务器的并行执行装置50主要包括签到模块51和签退模块52。
签到模块51用于接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;签退模块52用于轮询任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从任务执行列表中移除该任务实例。
其中,预定规则主要包括:当相同任务标识的其他任务实例已被添加到任务执行列表,则签到失败;当相同任务类型的、达到预设界限值的其他任务实例的已被添加到任务执行列表,则签到失败。
在各服务器节点中,主要通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成任务实例。
预设界限值具体可以为规定的允许执行相同任务类型任务实例的服务器数量。
任务标识还具有预设的生存周期,并且,签退模块52还可以用于:当任务标识的生存周期过期时,对该任务标识对应的任务实例签退。
根据本发明实施例的技术方案,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到定时时间时在各服务器节点分别启动任务实例,首先接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例,然后轮询任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从任务执行列表中移除该任务实例。使用本发明实施例的技术方案,能够实现服务器节点的统一配置,充分利用有限的计算资源,支持保证任务的原子性,应用开发人员和运维人员不再需要维护不同服务器上不同定时任务的分组配置,减少了运维成本,还很好地解决了单点失效问题,避免业务因单点故障而停滞,且服务器宕机时无需人工干预,此外,支持大型任务的拆分,应用开发人员无需关注多线程调度、子任务拆分与合并等问题,而只需专注于具体业务开发即可,并且可用性和扩展性好,当单集群的业务负担加重时只需增加服务器节点即可,而不需对新增节点做个性化的特殊配置。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种定时任务在多个服务器的并行执行方法,其特征在于,
其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;
所述方法包括:
接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;
轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
2.根据权利要求1所述的方法,其特征在于,所述预定规则包括:
当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;
当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。
3.根据权利要求1所述的方法,其特征在于,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。
4.根据权利要求2所述的方法,其特征在于,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。
5.根据权利要求1所述的方法,其特征在于,所述任务标识具有预设的生存周期,当任务标识的生存周期过期时,该任务标识对应的任务实例被签退。
6.一种定时任务在多个服务器的并行执行装置,其特征在于,
其中,在各服务器节点分别生成各自的任务实例并且为各服务器节点配置相同的定时时间,当达到所述定时时间时,在各服务器节点分别启动任务实例以发送签到请求,各任务实例具有各自的任务类型和任务标识;
所述装置包括:
签到模块,用于接收各服务器节点提交的任务实例的签到请求,按照预定规则对该任务实例进行签到,并把签到成功的任务实例添加到任务执行列表使得相应服务器执行该任务实例;
签退模块,用于轮询所述任务执行列表中各任务实例的执行状态,对执行完毕的任务实例进行签退并从所述任务执行列表中移除该任务实例。
7.根据权利要求6所述的装置,其特征在于,所述预定规则包括:
当相同任务标识的其他任务实例已被添加到所述任务执行列表,则签到失败;
当相同任务类型的、达到预设界限值的其他任务实例的已被添加到所述任务执行列表,则签到失败。
8.根据权利要求6所述的装置,其特征在于,在各服务器节点中,通过继承预设的并行处理框架提供的基类并添加相应业务逻辑而生成所述任务实例。
9.根据权利要求7所述的装置,其特征在于,所述预设界限值为规定的允许执行所述相同任务类型任务实例的服务器数量。
10.根据权利要求6所述的装置,其特征在于,所述任务标识具有预设的生存周期,所述签退模块还用于:当任务标识的生存周期过期时,对该任务标识对应的任务实例签退。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610885998.7A CN107918556A (zh) | 2016-10-11 | 2016-10-11 | 一种定时任务在多个服务器的并行执行方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610885998.7A CN107918556A (zh) | 2016-10-11 | 2016-10-11 | 一种定时任务在多个服务器的并行执行方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107918556A true CN107918556A (zh) | 2018-04-17 |
Family
ID=61892658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610885998.7A Pending CN107918556A (zh) | 2016-10-11 | 2016-10-11 | 一种定时任务在多个服务器的并行执行方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107918556A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189564A (zh) * | 2018-08-01 | 2019-01-11 | 北京奇虎科技有限公司 | 一种任务处理方法及装置 |
CN109271301A (zh) * | 2018-09-04 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种学习任务的监控方法和设备 |
CN109857533A (zh) * | 2019-01-23 | 2019-06-07 | 深圳智链物联科技有限公司 | 一种定时任务调度方法、装置及智能终端 |
CN110046144A (zh) * | 2019-03-25 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 访问数据库的方法、装置及设备 |
CN110109738A (zh) * | 2019-04-24 | 2019-08-09 | 上海易点时空网络有限公司 | 定时任务的执行方法及装置 |
CN110134503A (zh) * | 2019-04-28 | 2019-08-16 | 中国银行股份有限公司 | 一种集群环境下的定时任务处理方法、装置及存储介质 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
CN110399207A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 分布式存储系统中定时任务处理方法、系统及存储介质 |
CN110413388A (zh) * | 2019-07-05 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 基于业务系统的多任务处理方法、装置、设备及存储介质 |
CN110471774A (zh) * | 2019-06-28 | 2019-11-19 | 苏宁云计算有限公司 | 一种基于统一任务调度的数据处理方法及装置 |
CN110704172A (zh) * | 2019-09-20 | 2020-01-17 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度方法及集群系统 |
CN111142977A (zh) * | 2019-12-26 | 2020-05-12 | 深圳前海环融联易信息科技服务有限公司 | 一种定时任务的处理方法、装置、计算机设备及存储介质 |
CN111190732A (zh) * | 2019-12-27 | 2020-05-22 | 成都欧珀通信科技有限公司 | 定时任务处理系统及方法、存储介质和电子设备 |
CN111538491A (zh) * | 2020-04-24 | 2020-08-14 | 成都新致云服信息技术有限公司 | 数据事件处理方法、装置、设备和存储介质 |
CN112416563A (zh) * | 2020-12-28 | 2021-02-26 | 中科院计算技术研究所大数据研究院 | 一种分布式动态定时任务调度方法 |
CN113254177A (zh) * | 2021-05-31 | 2021-08-13 | 广州虎牙科技有限公司 | 基于集群的任务提交方法、计算机程序产品及电子设备 |
WO2022007594A1 (zh) * | 2020-07-08 | 2022-01-13 | 苏宁易购集团股份有限公司 | 分布式任务调度的方法及系统 |
CN114462900A (zh) * | 2022-04-13 | 2022-05-10 | 云智慧(北京)科技有限公司 | 一种业务活动节点的拆分方法、装置及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
CN103744724A (zh) * | 2014-02-19 | 2014-04-23 | 互联网域名系统北京市工程研究中心有限公司 | 定时任务集群方法及其装置 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
CN105991737A (zh) * | 2015-02-26 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 分布式任务调度方法及系统 |
-
2016
- 2016-10-11 CN CN201610885998.7A patent/CN107918556A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
CN103744724A (zh) * | 2014-02-19 | 2014-04-23 | 互联网域名系统北京市工程研究中心有限公司 | 定时任务集群方法及其装置 |
CN105991737A (zh) * | 2015-02-26 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 分布式任务调度方法及系统 |
CN105100259A (zh) * | 2015-08-18 | 2015-11-25 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和系统 |
CN105677468A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 缓存及其设计方法以及利用该缓存的调度方法和调度装置 |
Non-Patent Citations (1)
Title |
---|
QING: "zookeeper实战:SingleWorker代码样例", 《HTTP://SHIFT-ALT-CTRL.ITEYE.COM/BLOG/1861308》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189564A (zh) * | 2018-08-01 | 2019-01-11 | 北京奇虎科技有限公司 | 一种任务处理方法及装置 |
CN109271301A (zh) * | 2018-09-04 | 2019-01-25 | 郑州云海信息技术有限公司 | 一种学习任务的监控方法和设备 |
CN109857533A (zh) * | 2019-01-23 | 2019-06-07 | 深圳智链物联科技有限公司 | 一种定时任务调度方法、装置及智能终端 |
CN110046144A (zh) * | 2019-03-25 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 访问数据库的方法、装置及设备 |
CN110109738A (zh) * | 2019-04-24 | 2019-08-09 | 上海易点时空网络有限公司 | 定时任务的执行方法及装置 |
CN110134503B (zh) * | 2019-04-28 | 2021-06-18 | 中国银行股份有限公司 | 一种集群环境下的定时任务处理方法、装置及存储介质 |
CN110134503A (zh) * | 2019-04-28 | 2019-08-16 | 中国银行股份有限公司 | 一种集群环境下的定时任务处理方法、装置及存储介质 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
CN110471774A (zh) * | 2019-06-28 | 2019-11-19 | 苏宁云计算有限公司 | 一种基于统一任务调度的数据处理方法及装置 |
CN110399207A (zh) * | 2019-06-29 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 分布式存储系统中定时任务处理方法、系统及存储介质 |
CN110413388A (zh) * | 2019-07-05 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 基于业务系统的多任务处理方法、装置、设备及存储介质 |
CN110704172A (zh) * | 2019-09-20 | 2020-01-17 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度方法及集群系统 |
CN110704172B (zh) * | 2019-09-20 | 2024-03-12 | 深圳市递四方信息科技有限公司 | 集群系统定时任务调度方法及集群系统 |
CN111142977A (zh) * | 2019-12-26 | 2020-05-12 | 深圳前海环融联易信息科技服务有限公司 | 一种定时任务的处理方法、装置、计算机设备及存储介质 |
CN111142977B (zh) * | 2019-12-26 | 2023-08-18 | 深圳前海环融联易信息科技服务有限公司 | 一种定时任务的处理方法、装置、计算机设备及存储介质 |
CN111190732A (zh) * | 2019-12-27 | 2020-05-22 | 成都欧珀通信科技有限公司 | 定时任务处理系统及方法、存储介质和电子设备 |
CN111538491A (zh) * | 2020-04-24 | 2020-08-14 | 成都新致云服信息技术有限公司 | 数据事件处理方法、装置、设备和存储介质 |
WO2022007594A1 (zh) * | 2020-07-08 | 2022-01-13 | 苏宁易购集团股份有限公司 | 分布式任务调度的方法及系统 |
CN112416563B (zh) * | 2020-12-28 | 2021-12-17 | 中科院计算技术研究所大数据研究院 | 一种分布式动态定时任务调度方法 |
CN112416563A (zh) * | 2020-12-28 | 2021-02-26 | 中科院计算技术研究所大数据研究院 | 一种分布式动态定时任务调度方法 |
CN113254177A (zh) * | 2021-05-31 | 2021-08-13 | 广州虎牙科技有限公司 | 基于集群的任务提交方法、计算机程序产品及电子设备 |
CN114462900A (zh) * | 2022-04-13 | 2022-05-10 | 云智慧(北京)科技有限公司 | 一种业务活动节点的拆分方法、装置及设备 |
CN114462900B (zh) * | 2022-04-13 | 2022-07-29 | 云智慧(北京)科技有限公司 | 一种业务活动节点的拆分方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107918556A (zh) | 一种定时任务在多个服务器的并行执行方法和装置 | |
US11740943B2 (en) | Techniques for managing long-running tasks with a declarative provisioner | |
CN107690623B (zh) | 自动异常检测和解决系统 | |
US8832710B2 (en) | Operation control for deploying and managing software service in a virtual environment | |
US7779298B2 (en) | Distributed job manager recovery | |
US9396031B2 (en) | Distributed UIMA cluster computing (DUCC) facility | |
US8538793B2 (en) | System and method for managing real-time batch workflows | |
US20090172674A1 (en) | Managing the computer collection of information in an information technology environment | |
US11704616B2 (en) | Systems and methods for distributed business processmanagement | |
US9513874B2 (en) | Enterprise computing platform with support for editing documents via logical views | |
CN108243012B (zh) | 在线计费系统ocs中计费应用处理系统、方法及装置 | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
US11182217B2 (en) | Multilayered resource scheduling | |
US11231967B2 (en) | Dynamically allocating and managing cloud workers | |
CN107066339A (zh) | 分布式作业管理器及分布式作业管理方法 | |
CN111190732A (zh) | 定时任务处理系统及方法、存储介质和电子设备 | |
CN117311937A (zh) | 一种分布式任务调度方法、装置、电子设备及存储介质 | |
CN111651279A (zh) | 一种处理业务流程的方法及其处理系统 | |
EP2492805A1 (en) | Computer network, computer system, computer-implemented method, and computer program product for controlling application landscapes | |
WO2022087581A1 (en) | Quantifying usage of robotic processs automation related resources | |
US10853131B2 (en) | Dataflow life cycles | |
US20240069961A1 (en) | Batch functions framework | |
Lavacca | Scheduling Jobs on Federation of Kubernetes Clusters | |
US20240143369A1 (en) | Using rule engine with push mechanism for configuration data of a containerized computing cluster | |
woon Ahn et al. | Mirra: Rule-based resource management for heterogeneous real-time applications running in cloud computing infrastructures |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180417 |
|
RJ01 | Rejection of invention patent application after publication |