CN113157426B - 一种任务调度方法、系统、设备及存储介质 - Google Patents

一种任务调度方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN113157426B
CN113157426B CN202110609946.8A CN202110609946A CN113157426B CN 113157426 B CN113157426 B CN 113157426B CN 202110609946 A CN202110609946 A CN 202110609946A CN 113157426 B CN113157426 B CN 113157426B
Authority
CN
China
Prior art keywords
task
timing
scheduling
execution
unit
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
Application number
CN202110609946.8A
Other languages
English (en)
Other versions
CN113157426A (zh
Inventor
陈新浩
张飞
余智平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weiyiyun Hangzhou Holding Co ltd
Original Assignee
Weiyiyun Hangzhou Holding Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Weiyiyun Hangzhou Holding Co ltd filed Critical Weiyiyun Hangzhou Holding Co ltd
Publication of CN113157426A publication Critical patent/CN113157426A/zh
Application granted granted Critical
Publication of CN113157426B publication Critical patent/CN113157426B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例公开了一种任务调度方法、系统、设备及存储介质。获取定时任务的触发请求,每个服务器设置多个节点,将至少两个服务器中唯一节点组成一个单元,每个单元包括一个主节点和至少一个从节点,通过至少一个单元的主节点对定时任务进行分布式调度。因此,如果一个单元无法进行任务调度,即定时任务不影响其他单元进行任务调度,并且,当一个服务器挂掉,不会影响其他服务器的节点组成的单元进行任务调度,可以避免定时任务的调度过程产生影响,进一步通过任务执行线程调用远程调用线程,以触发业务方接口,以使业务方根据业务方接口的触发信息执行对应的定时任务。实现了节约人工成本并保证定时任务正常调度和执行的效果。

Description

一种任务调度方法、系统、设备及存储介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种任务调度方法、系统、设备及存储介质。
背景技术
在大型软件系统构建过程中经常涉及异步任务处理,异步任务通过定时器定时调度执行。在Java平台下,现有的定时任务调度模块包括Spring框架支持的Quartz调度器。
在复杂的环境中,Quartz的调度进程容易死掉,使任务中断,并且由于单节点部署,倘若机器故障或服务挂掉,定时任务就无法执行。
发明内容
本发明实施例提供了一种任务调度方法、系统、设备及存储介质,以对服务器多点部署,实现保证定时任务正常调度和执行的效果。
第一方面,本发明实施例提供了种任务调度方法,应用于任务调度系统,包括:
获取业务方发送的定时任务的触发请求;
基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成;
基于所述至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
第二方面,本发明实施例还提供了一种任务调度系统,包括:接口层、业务逻辑层、功能模块层和数据存储层;所述接口层包括;所述任务配置接口;所述功能模块层包括至少一个功能模块;
其中,所述任务配置接口,用于获取定时任务的触发请求,并将所述定时任务的触发请求发送至所述业务逻辑层;
所述业务逻辑层执行第一方面中任一项所述的任务调度方法;
所述功能模块层,用于根据所述业务逻辑层的业务逻辑,调用至少一个功能模块对应的执行逻辑;
所述数据存储层,用于存储每个单元对应的定时任务。
第三方面,本发明实施例还提供了一种任务调度设备,包括:包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如第一方面中任一项所述的任务调度方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如第一方面中任一项所述的任务调度方法。
本实施例提供的技术方案,获取定时任务的触发请求,每个服务器设置多个节点,将至少两个服务器中唯一节点组成一个单元,每个单元包括一个主节点和至少一个从节点,通过至少一个单元的主节点对定时任务进行分布式调度。因此,如果一个单元无法进行任务调度,即定时任务不影响其他单元进行任务调度,并且,当一个服务器挂掉,不会影响其他服务器的节点组成的单元进行任务调度,可以避免定时任务的调度过程产生影响,进一步通过任务执行线程调用远程调用线程,以触发业务方接口,以使业务方根据业务方接口的触发信息执行对应的定时任务。解决了现有技术中如果服务器故障或定时任务挂掉,需要人工处理才能继续调度的问题,实现了节约人工成本并保证定时任务正常调度和执行的效果。
附图说明
图1为本发明实施例一提供的一种任务调度方法的流程示意图;
图2为本发明实施例一提供的任务调度系统的系统架构图;
图3a为本发明实施例一提供的任务获取线程获取定时任务的逻辑示意图;
图3b为本发明实施例一提供的任务调度线程调度定时任务的逻辑示意图;
图3c为本发明实施例一提供的任务执行线程的逻辑示意图;
图4为本发明实施例二提供的一种任务调度方法的流程示意图;
图5为本发明实施例二提供的开启调度主线程的流程图;
图6为本发明实施例二提供的调度系统对象模型图;
图7为本发明实施例三提供的一种任务调度系统的结构示意图;
图8为本发明实施例四提供的一种任务调度设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种任务调度方法的流程示意图,本实施例可适用于对业务方发送的定时任务进行分布式调度的情况,该方法可以由任务调度系统来执行。如图2所示为任务调度系统的系统架构图,所述任务调度系统包括:接口层、业务逻辑层、功能模块层和数据存储层。所述业务逻辑层包括:管理器模块、节点构建者模块、节点模块、任务管理模块以及团队管理模块。具体参见图1所示,该方法可以包括如下步骤:
S110、获取业务方发送的定时任务的触发请求。
其中,所述定时任务可以理解为各业务方在特定时间需要执行的任务。例如,优惠券有到期时间和到期状态,业务方需要每天凌晨0点0分执行优惠券到期的定时任务,向任务调度系统发送定时任务的触发请求,以使任务调度系统根据触发请求对定时任务进行调度,以保证业务方正常执行定时任务。
可选地,基于接口层的任务配置管理接口接收各业务方发送的定时任务的触发请求,并将定时任务的触发请求发送至业务逻辑层的节点模块,基于业务逻辑层的节点模块调用功能模块层中各模块的执行逻辑,对各业务方发送的定时任务进行分布式调度,进一步基于业务逻辑层的节点模块记录业务方执行定时任务对应的任务执行日志。
S120、基于至少一个单元的主节点并行调度触发请求对应的定时任务。
其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成。所述服务器指的是业务方用于执行定时任务的机器。本实施例中,可以将每个服务器划分成多个节点,基于至少两个服务器中的唯一节点构建一个单元,每个单元包括一个主节点和至少一个从节点,将构建的单元存储至节点模块,每个单元调度一个定时任务,并且,每个单元的主节点和从节点与其他单元不发生重叠。这样,当接收到业务方发送的大量定时任务,业务逻辑层的节点模块可以基于至少一个单元的主节点并行调度定时任务,如果一个单元无法进行任务调度,不影响其他单元进行任务调度,并且,当一个服务器挂掉,不会影响其他服务器的节点组成的单元进行任务调度,可以避免定时任务的调度过程产生影响。
可选地,所述基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,包括:
S1:通过任务获取线程,查找各单元的主节点对应的定时任务,将所述各单元的主节点对应的定时任务加入内存中的队列内;
S2:通过任务调度线程,提取所述内存中的队列的所述各单元的主节点对应的定时任务,将提取的所述各单元的主节点对应的定时任务传递至所述节点模块的任务执行线程;
S3:通过任务执行线程调用远程调用线程,以触发业务方接口,以使所述业务方根据所述业务方接口的触发信息执行对应的定时任务。
具体地,结合图3a所示的任务获取线程获取定时任务的逻辑示意图解释S1。任务获取线程判断当前单元的主节点是否是有效节点,如果是,任务获取线程确定该定时任务的任务状态为开启状态、定时任务未运行且定时任务对应的单元名为当前单元的单元名,则任务获取线程将当前单元的主节点对应的定时任务加入内存中的队列内。
具体地,结合图3b所示的任务调度线程调度定时任务的逻辑示意图解释S2。任务调度线程将数据库任务队列中的任务拷贝到定时任务队列中,并清空数据库任务队列;根据内存任务的编号从内存任务队列中取任务,把取出的任务放入定时任务队列中,并清空内存任务队列;从定时任务队列中取出任务,把要执行的任务交给任务执行线程执行,执行完后把任务从定时任务队列中移除;在任务执行完成后,先判断该任务是否是内存任务,如果是,再判断该任务是否存在于内存任务队列中,如果不存在,则将该任务放入内存任务队列中,如果不是内存任务,再判断内存任务队列中是否存在该任务,如果有,则把该任务从内存任务队列中移除。
具体地,结合图3c所示的任务执行线程的逻辑示意图解释S3。任务执行线程将数据存储层存储的定时任务更新为正在运行;调用远程调用线程触发业务方接口,以使业务方根据业务方接口发送的触发信息执行对应的定时任务;进一步记录定时任务的执行信息,所述执行信息包括任务序号、执行时间、任务运行类型、调度类型、运行节点名称以及执行结果等信息;进一步地,计算该定时任务的下次执行时间,判断该定时任务是否需要保存在内存中,若需要,则设置该定时任务的标志位为真,若不需要,则设置该定时任务的标志位为假,并到数据存储层初始化该任务的运行状态与下次执行时间。其中,所述任务执行线程的线程池的核心线程数可以是10,最大线程数可以是20,心跳保活时间(即线程池中空闲线程等待工作的超时时间)是60秒,任务队列可以是链表的双端阻塞队列,大小是20,并采用丢弃测量作为拒绝策略。
可选地,任务执行线程对定时任务进行远程调用时,可以确定每个单元的定时任务的执行频率,将执行频率大于或等于设定频率的定时任务确定为内存任务,将执行频率小于设定频率的定时任务确定为数据库任务,并设置定时任务的标志位。其中,执行频率可以基于定时任务的当前时间点和下次执行时间确定。通过这种方式,可以避免将执行频率较低的定时任务划分成数据库任务,降低数据库的访问频率,并降低资源占用。
可选地,任务执行线程可以通过远程调用模块调用远程调用线程。调用模块的调用方式包括dubbo(一种开源分布式服务框架)调用和http(一个简单请求的响应协议)调用,以对不同类型的业务方接口进行远程调用。其中,对于dubbo调用方式,采用dubbo的泛化调用服务,在调用时会携带者参数,然后根据dubbo接口的从注册中心查找服务提供者,若接收到服务提供者的编码且有值,说明dubbo调用成功;其中,对于http调用,将参数放入请求的实体中,通过httpclient(一种开源的客户端编程工具包)发送post(一种http请求方法)请求到业务方接口,若返回值是200,说明http调用成功。
可选地,基于至少一个单元的主节点并行调度所述触发请求对应的定时任务时,定时任务对应的单元的主节点还可以定时检查由任务获取线程和任务调度线程构成的调度任务主线程是否存活,如果调度主线程宕掉,该定时任务对应的主节点将心跳保活线程宕掉。
S130、基于至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
如前述步骤所述,所述执行信息包括任务序号、执行时间、任务运行类型、调度类型、运行节点名称以及执行结果等信息,则根据至少一个单元的主节点对应的定时任务的执行信息生成至少一个任务执行日志,并保存任务执行日志,结束任务调度过程。
可选地,业务逻辑层还可以通过各单元的主节点进行任务健康状况检查。具体地,在生成任务执行日志之后,业务逻辑层通过各单元的主节点统计对应的任务执行日志的数量,如果任一单元的主节点的定时任务为待运行状态,或者,正在运行的任一单元的主节点的定时任务在设定时间内的任务执行日志的数量为0,通过该单元的主节点重置对应的定时任务的执行状态。通过这种方式,可以自动监测任务调度状态,重置调度失败的定时任务的执行状态,无需开发人员手动处理,节约人工成本和时间成本,并进一步利于定时任务定时调度以及正常执行。
可选地,业务逻辑层还可以通过各单元的主节点进行内存任务同步检查。具体地,业务逻辑层通过各所述单元的主节点获取数据库中定时任务的执行信息,并根据对应的定时任务的执行信息,对内存中定时任务的执行信息进行检查。通过这种方式,可以防止内存中保存的定时任务的执行信息与数据库中保存的定时任务的执行信息不一致,提高定时任务调度的准确度。
本实施例提供的技术方案,获取定时任务的触发请求,每个服务器设置多个节点,将至少两个服务器中唯一节点组成一个单元,每个单元包括一个主节点和至少一个从节点,通过至少一个单元的主节点对定时任务进行分布式调度。因此,如果一个单元无法进行任务调度,即定时任务不影响其他单元进行任务调度,并且,当一个服务器挂掉,不会影响其他服务器的节点组成的单元进行任务调度,可以避免定时任务的调度过程产生影响,进一步通过任务执行线程调用远程调用线程,以触发业务方接口,以使业务方根据业务方接口的触发信息执行对应的定时任务。解决了现有技术中如果服务器故障或定时任务挂掉,需要人工处理才能继续调度的问题,实现了节约人工成本并保证定时任务正常调度和执行的效果。
实施例二
图4为本发明实施例二提供的一种任务调度方法的流程示意图。本实施例的技术方案在上述实施例的基础上增加了新的步骤。可选地,在所述获取业务方发送的定时任务的触发请求之前,所述方法还包括:创建至少一个定时任务和所述定时任务的调度条件,所述调度条件至少包括定时触发条件、调度类型和调度参数;设置创建完成的至少一个定时任务的开启状态。在该方法实施例中未详尽描述的部分请参考上述实施例。具体参见图4所示,该方法可以包括如下步骤:
S210、创建至少一个定时任务和定时任务的调度条件,并设置创建完成的至少一个定时任务的开启状态。
可选地,基于业务逻辑层的任务管理模块创建定时任务和定时任务的调度条件,并将创建完成的定时任务设置为开启状态,以使节点模块的对各业务方发送的定时任务进行分布式调度,进一步基于业务逻辑层的节点模块记录业务方执行定时任务对应的任务执行日志。其中,所述调度条件至少包括定时触发条件、调度类型、调度参数以及调度地址。所述定时触发条件可以是定时时间的表达式,所述调度类型可以包括dubbo调用和http调用,所述调度参数可以包括参数类型、参数名称以及参数值等。
可以理解的是,业务逻辑层的节点模块包括各定时任务对应的单元,每个单元内包括一个主节点和至少一个从节点。本实施例中,业务逻辑层的任务管理模块创建完定时任务时,业务逻辑层的管理器模块创建节点构建者,并通过创建好的节点构建者创建各单元内的节点。
其中,所述管理器模块创建节点构建者的方法,包括:基于预先确定的配置文件创建节点构建者,对各单元的节点进行检查,以及确定重启问题节点。
可选地,所述配置文件中包括创建节点构建者的构建逻辑,可以基于配置文件中的构建逻辑创建节点构建者。管理器模块对各单元的节点进行检查时,竞争单元检查的锁,如果管理器模块持有单元检查的锁时,定时检查所有单元中的节点,如果一个单元的所有节点宕掉,将宕掉的节点确定为问题节点,发出报警,并重启问题节点。
其中,所述节点构建者创建各单元内的节点的方法,包括:根据预先确定的配置文件创建节点,并确定每个节点的单元名称和节点名,以及开启各节点的线程。
可选地,节点构建者可以根据配置文件的节点创建逻辑获取各单元前缀、单元个数、单元起始索引以及单元中节点所属服务器的地址,基于各单元前缀、单元个数、单元起始索引以及单元中节点所属服务器的地址创建节点,并确定每个节点的单元名称和节点名,并开启各节点的线程。
进一步地,节点创建完成之后,节点模块中的节点可以依次进行节点注册、主节点注册、设置心跳保活以及开启调度主线程。具体地,创建完成的每个节点可以将所属服务器的地址、单元名、节点名注册到数据表中,并设置该节点的状态为活跃状态,完成节点注册过程。节点注册完成后,各节点查询所属单元下是否存在主节点,如果没有,进行主节点竞争,竞争后的主节点进行主节点注册。节点注册完成后,节点在每个心跳周期中都要去数据表中更新自己的节点状态,并更新修改时间。参见图5所示的开启调度主线程的流程图,在节点注册完成后,各节点查询所属的当前单元下是否存在主节点,如果不存在主节点,各节点竞争主节点,各节点分别确定自己是否竞争到主节点,如果某个节点竞争到主节点,主节点开启调度主线程;如果当前单元下存在主节点,每个节点确定自己是否是主节点,如果某个节点是主节点,主节点开启调度主线程;如果当前单元下存在主节点,每个节点确定自己均不是主节点,且每个节点均不活跃,则每个节点竞争主节点,如果存在活跃节点,将活跃的节点作为主节点,由最终确定的主节点开启调度主线程。
通过上述方式,构建节点、确定各节点对应的单元、确定各单元的主节点以及开启调度任务主线程,得到图6所示的调度系统对象模型图,图6中的调度任务主线程包括任务获取线程和任务调度线程,任务执行线程池指的是任务执行线程。通过上述方式,有利于业务逻辑层在接收到业务方发送的定时任务的触发请求时,有序执行基于至少一个单元的主节点并行调度触发请求对应的定时任务,以及基于至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志的过程。
S220、获取业务方发送的定时任务的触发请求。
S230、基于至少一个单元的主节点并行调度触发请求对应的定时任务。
S240、基于至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
可选地,所述业务逻辑层的任务管理模块,还可以获取所述定时任务的任务查询请求和/或任务变更请求,其中,所述任务变更请求包括任务修改请求、任务删除请求、任务增加请求、任务状态启动请求、任务状态停止请求以及手动执行任务请求中的至少一种;基于所述任务查询请求查询所述对应的任务执行日志,和/或,基于所述任务变更请求,修改至少一个单元对应的定时任务,并将查询到的任务执行日志和/或修改后的定时任务发送至前端页面。其中,所述前端页面指的是调度系统的前端页面。通过这种方式,可以提供对任务的查询、增加、修改、删除、启动、停止、手动执行以及查看日志等操作,解决了现有技术中的当需要变更任务,需要修改代码以及重新部署的问题,可以达到灵活变更任务,并保证定时时间短、执行频繁的定时任务正常执行。
可选地,所述任务管理模块,还可以根据所述任务执行日志确定执行失败的定时任务的异常信息。通过这种方式,任务管理模块可以在第一时间发现是什么原因导致的任务执行识别,无需登录机器查看日志,避免执行失败的定时任务对其他定时任务产生影响。
可选地,本实施例中的业务逻辑层还包括团队管理模块。团队管理模块可以执行以下至少一项:定时统计各团队的节点模块反馈的定时任务量,基于各团队的定时任务量确定所有团队的定时任务总量,并将各业务方的所有团队的定时任务总量发送至对应的业务方;通过所述团队管理模块,根据接收到的任一团队的修改请求修改团队信息,并根据接收到的任一团队的关注请求,确定该团队的团队信息,并将所述团队信息发送至对应业务方的对应团队。其中,每个定时任务可以对应一个团队,例如,付费会员团队对应付费会员定时任务,会员和健康币团队对应会员和健康币团队,优惠券团队对应优惠券系统的定时任务,结算平台团队对应结算平台定时任务。通过团队管理模块定时统计各业务方所有团队的定时任务总量,无需业务方自己维护自己的定时任务,降低业务方对服务器的资源占用量,在降低业务方开发成本和运营成本的情况下,使业务方准确获知自身执行的定时任务总量。通过团队管理模块将团队信息发送至对应业务方的对应团队,有利于业务方以及调度系统的前端页面查看准确掌握团队信息。
实施例三
图7为本发明实施例三提供的一种任务调度系统的结构示意图。参见图7所示,该系统包括:接口层71、业务逻辑层72、功能模块层73和数据存储层74。
其中,所述接口71层包括;任务配置接口;所述功能模块层包括至少一个功能模块。所述任务配置接口,用于获取定时任务的触发请求,并将所述定时任务的触发请求发送至所述业务逻辑层。所述功能模块层73,用于根据所述业务逻辑层的业务逻辑,调用至少一个功能模块对应的执行逻辑。所述数据存储层74,用于存储每个单元对应的定时任务。
其中,所述业务逻辑层72,用于获取业务方发送的定时任务的触发请求;
基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成;
基于所述至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
进一步地,所述业务逻辑层72还用于,创建至少一个定时任务和所述定时任务的调度条件,所述调度条件至少包括定时触发条件、调度类型、调度参数以及调度地址;
设置创建完成的至少一个定时任务的开启状态。
进一步地,所述业务逻辑层72还用于,获取所述定时任务的任务查询请求和/或任务变更请求,其中,所述任务变更请求包括任务修改请求、任务删除请求、任务增加请求、任务状态启动请求、任务状态停止请求以及手动执行任务请求中的至少一种;
基于所述任务查询请求查询所述对应的任务执行日志,和/或,基于所述任务变更请求,修改至少一个单元对应的定时任务,并将查询到的任务执行日志和/或修改后的定时任务发送至前端页面。
本实施例提供的技术方案,获取定时任务的触发请求,每个服务器设置多个节点,将至少两个服务器中唯一节点组成一个单元,每个单元包括一个主节点和至少一个从节点,通过至少一个单元的主节点对定时任务进行分布式调度。因此,如果一个单元无法进行任务调度,即定时任务不影响其他单元进行任务调度,并且,当一个服务器挂掉,不会影响其他服务器的节点组成的单元进行任务调度,可以避免定时任务的调度过程产生影响,进一步通过任务执行线程调用远程调用线程,以触发业务方接口,以使业务方根据业务方接口的触发信息执行对应的定时任务。解决了现有技术中如果服务器故障或定时任务挂掉,需要人工处理才能继续调度的问题,实现了节约人工成本并保证定时任务正常调度和执行的效果。
进一步地,所述业务逻辑层72还用于,通过任务获取线程,查找各单元的主节点对应的定时任务,将所述各单元的主节点对应的定时任务加入内存中的队列内;
通过任务调度线程,提取所述内存中的队列的所述各单元的主节点对应的定时任务,将提取的所述各单元的主节点对应的定时任务传递至任务执行线程;
通过所述任务执行线程调用远程调用线程,以触发业务方接口,以使所述业务方根据所述业务方接口的触发信息执行对应的定时任务。
进一步地,所述业务逻辑层72还用于,通过各所述单元的主节点统计对应的任务执行日志的数量;
如果任一单元的主节点的定时任务为待运行状态,或者,正在运行的任一单元的主节点的定时任务在设定时间内的任务执行日志的数量为0,通过该单元的主节点重置对应的定时任务的执行状态。
进一步地,所述业务逻辑层72还用于,通过各所述单元的主节点获取数据库中定时任务的执行信息,并根据对应的定时任务的执行信息,对内存中定时任务的执行信息进行检查。
进一步地,所述业务逻辑层72还用于,确定每个单元的定时任务的执行频率;
将执行频率大于或等于设定频率的定时任务确定为内存任务,将执行频率小于设定频率的定时任务确定为数据库任务。
进一步地,所述业务逻辑层72还用于,根据所述任务执行日志确定执行失败的定时任务的异常信息。
进一步地,所述业务逻辑层72还用于,基于预先确定的配置文件创建节点构建者,对各单元的节点进行检查,以及确定重启问题节点。
进一步地,所述业务逻辑层72还用于,根据预先确定的配置文件创建节点,并确定每个节点的单元名称和节点名,以及开启各节点的线程。
进一步地,所述接口层71还包括:团队管理接口;所述团队管理接口,用于接收定时任务量统计请求和任一团队的修改请求,并将所述定时任务量统计请求和所述修改请求发送至所述业务逻辑层。
进一步地,所述业务逻辑层72还用于,根据定时任务量统计请求定时统计各团队的定时任务量,基于各团队的定时任务量确定所有团队的定时任务总量,并将各业务方的所有团队的定时任务总量发送至对应的业务方;
根据接收到的任一团队的修改请求修改团队信息,并根据接收到的任一团队的关注请求,确定该团队的团队信息,并将所述团队信息发送至对应业务方的对应团队。
实施例四
图8为本发明实施例四提供的一种任务调度设备的结构示意图。图8示出了适于用来实现本发明实施方式的示例性任务调度设备12的框图。图8显示的任务调度设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,任务调度设备12以通用计算设备的形式表现。任务调度设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
任务调度设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被任务调度设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存32。任务调度设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如任务调度系统的接口层71、业务逻辑层72、功能模块层73和数据存储层74)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(例如任务调度系统的接口层71、业务逻辑层72、功能模块层73和数据存储层74)程序模块46的程序/实用工具44,可以存储在例如系统存储器28中,这样的程序模块46包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块46通常执行本发明所描述的实施例中的功能和/或方法。
任务调度设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该任务调度设备12交互的设备通信,和/或与使得该任务调度设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,任务调度设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与任务调度设备12的其它模块通信。应当明白,尽管图中未示出,可以结合任务调度设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种任务调度方法,该方法包括:
获取业务方发送的定时任务的触发请求;
基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成;
基于所述至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种任务调度方法。
当然,本领域技术人员可以理解,处理器还可以实现本发明任意实施例所提供的一种任务调度方法的技术方案。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的一种任务调度方法,该方法包括:
获取业务方发送的定时任务的触发请求;
基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成;
基于所述至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志。
当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的一种任务调度方法中的相关操作。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在定时任务、主节点、任务执行日志等,其中承载了计算机可读的程序代码。这种传播的定时任务、主节点、任务执行日志等形式。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
值得注意的是,上述任务调度系统的实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (14)

1.一种任务调度方法,应用于任务调度系统,其特征在于,包括:
获取业务方发送的定时任务的触发请求;
基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,其中,每个所述单元包括一个主节点和至少一个从节点,每个所述单元由至少两个服务器中的唯一节点构成;
基于所述至少一个单元的主节点对应的定时任务的执行信息,生成至少一个任务执行日志;
所述基于至少一个单元的主节点并行调度所述触发请求对应的定时任务,包括:
通过任务获取线程,查找各单元的主节点对应的定时任务,将所述各单元的主节点对应的定时任务加入内存中的队列内;
通过任务调度线程,提取所述内存中的队列的所述各单元的主节点对应的定时任务,将提取的所述各单元的主节点对应的定时任务传递至任务执行线程;
通过所述任务执行线程调用远程调用线程,以触发业务方接口,以使所述业务方根据所述业务方接口的触发信息执行对应的定时任务;
计算所述业务方接口的触发信息对应的定时任务的下次执行时间,判断所述定时任务是否需要保存在内存中,若需要,则设置所述定时任务的标志位为真,若不需要,则设置所述定时任务的标志位为假,并到数据存储层初始化所述定时任务的运行状态与下次执行时间。
2.根据权利要求1所述的方法,在所述获取业务方发送的定时任务的触发请求之前,所述方法还包括:
创建至少一个定时任务和所述定时任务的调度条件,所述调度条件至少包括定时触发条件、调度类型、调度参数以及调度地址;
设置创建完成的至少一个定时任务的开启状态。
3.根据权利要求2所述的方法,其特征在于,还包括:
获取所述定时任务的任务查询请求和/或任务变更请求,其中,所述任务变更请求包括任务修改请求、任务删除请求、任务增加请求、任务状态启动请求、任务状态停止请求以及手动执行任务请求中的至少一种;
基于所述任务查询请求查询所述对应的任务执行日志,和/或,基于所述任务变更请求,修改至少一个单元对应的定时任务,并将查询到的任务执行日志和/或修改后的定时任务发送至前端页面。
4.根据权利要求1所述的方法,其特征在于,还包括:
通过各所述单元的主节点统计对应的任务执行日志的数量;
如果任一单元的主节点的定时任务为待运行状态,或者,正在运行的任一单元的主节点的定时任务在设定时间内的任务执行日志的数量为0,通过该单元的主节点重置对应的定时任务的执行状态。
5.根据权利要求1所述的方法,其特征在于,还包括:
通过各所述单元的主节点获取数据库中定时任务的执行信息,并根据对应的定时任务的执行信息,对内存中定时任务的执行信息进行检查。
6.根据权利要求1所述的方法,其特征在于,还包括:
确定每个单元的定时任务的执行频率;
将执行频率大于或等于设定频率的定时任务确定为内存任务,将执行频率小于设定频率的定时任务确定为数据库任务。
7.根据权利要求2所述的方法,其特征在于,还包括:
根据所述任务执行日志确定执行失败的定时任务的异常信息。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括下述至少一项:
定时统计各团队的定时任务量,基于各团队的定时任务量确定所有团队的定时任务总量,并将各业务方的所有团队的定时任务总量发送至对应的业务方;
根据接收到的任一团队的修改请求修改团队信息,并根据接收到的任一团队的关注请求,确定该团队的团队信息,并将所述团队信息发送至对应业务方的对应团队。
9.根据权利要求1所述的方法,其特征在于,还包括:
基于预先确定的配置文件创建节点构建者,对各单元的节点进行检查,以及确定重启问题节点。
10.根据权利要求1所述的方法,其特征在于,还包括:
根据预先确定的配置文件创建节点,并确定每个节点的单元名称和节点名,以及开启各节点的线程。
11.一种任务调度系统,其特征在于,包括:接口层、业务逻辑层、功能模块层和数据存储层;所述接口层包括;任务配置接口;所述功能模块层包括至少一个功能模块;
其中,所述任务配置接口,用于获取定时任务的触发请求,并将所述定时任务的触发请求发送至所述业务逻辑层;
所述业务逻辑层执行权利要求1~10中任一项所述的任务调度方法;
所述功能模块层,用于根据所述业务逻辑层的业务逻辑,调用至少一个功能模块对应的执行逻辑;
所述数据存储层,用于存储每个单元对应的定时任务。
12.根据权利要求11所述的系统,其特征在于,所述接口层还包括:团队管理接口;
所述团队管理接口,用于接收定时任务量统计请求和任一团队的修改请求,并将所述定时任务量统计请求和所述修改请求发送至所述业务逻辑层。
13.一种任务调度设备,其特征在于,包括:包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-10中任一项所述的任务调度方法。
14.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时实现如权利要求1-10中任一项所述的任务调度方法。
CN202110609946.8A 2020-10-26 2021-06-01 一种任务调度方法、系统、设备及存储介质 Active CN113157426B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011159072 2020-10-26
CN2020111590722 2020-10-26

Publications (2)

Publication Number Publication Date
CN113157426A CN113157426A (zh) 2021-07-23
CN113157426B true CN113157426B (zh) 2024-04-02

Family

ID=76875407

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110609946.8A Active CN113157426B (zh) 2020-10-26 2021-06-01 一种任务调度方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113157426B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608859A (zh) * 2021-08-24 2021-11-05 京东科技控股股份有限公司 节点任务的执行方法、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092523A (zh) * 2017-04-14 2017-08-25 浙江数链科技有限公司 定时任务的调度方法和系统
CN110247954A (zh) * 2019-05-15 2019-09-17 南京苏宁软件技术有限公司 一种分布式任务的调度方法及系统
CN110377406A (zh) * 2019-06-17 2019-10-25 平安银行股份有限公司 一种任务调度方法、装置、存储介质和服务器节点
CN111045797A (zh) * 2019-10-31 2020-04-21 华控清交信息科技(北京)有限公司 任务调度执行方法、相关装置和介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8089989B2 (en) * 2007-11-29 2012-01-03 Samsung Electronics Co., Ltd. Synchronization of nodes on a network
CN104133724B (zh) * 2014-04-03 2015-08-19 腾讯科技(深圳)有限公司 并发任务调度方法及装置
CN108268318A (zh) * 2016-12-30 2018-07-10 华为技术有限公司 一种分布式系统任务分配的方法和装置
CN107885762B (zh) * 2017-09-19 2021-06-11 北京百度网讯科技有限公司 智能大数据系统、提供智能大数据服务的方法和设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107092523A (zh) * 2017-04-14 2017-08-25 浙江数链科技有限公司 定时任务的调度方法和系统
CN110247954A (zh) * 2019-05-15 2019-09-17 南京苏宁软件技术有限公司 一种分布式任务的调度方法及系统
CN110377406A (zh) * 2019-06-17 2019-10-25 平安银行股份有限公司 一种任务调度方法、装置、存储介质和服务器节点
CN111045797A (zh) * 2019-10-31 2020-04-21 华控清交信息科技(北京)有限公司 任务调度执行方法、相关装置和介质

Also Published As

Publication number Publication date
CN113157426A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
US11048688B2 (en) Deleting configuration items in a configuration management database
US8185903B2 (en) Managing system resources
US20070220515A1 (en) Method and Apparatus for Analyzing Wait States in a Data Processing System
CN107016480B (zh) 任务调度方法、装置及系统
US8347021B1 (en) Storing application messages
US20100223446A1 (en) Contextual tracing
US20100161549A1 (en) Masterless distributed batch scheduling engine
JP2012099092A (ja) インシデント・プールの管理方法、システムおよびコンピュータ・プログラム
CN111125444A (zh) 大数据任务调度管理方法、装置、设备及存储介质
JP5705871B2 (ja) 分散された永続性インスタンスに対するロックの解決
CN112416581B (zh) 定时任务的分布式调用系统
CN106371953B (zh) 紧凑二进制事件日志生成方法及系统
CN110109741B (zh) 循环任务的管理方法、装置、电子设备及存储介质
WO2020232871A1 (zh) 一种微服务依赖分析方法及装置
CN111078422A (zh) 消息处理方法、消息处理装置、可读存储介质、电子设备
CN113157426B (zh) 一种任务调度方法、系统、设备及存储介质
CN113515317A (zh) 数据恢复的方法、装置
CN113342554B (zh) Io多路复用方法、介质、设备和操作系统
CN113238815B (zh) 一种接口访问控制方法、装置、设备及存储介质
CN113157411B (zh) 一种基于Celery的可靠可配置任务系统及装置
CN110737510A (zh) 块设备管理系统
CN111078418B (zh) 操作同步方法、装置、电子设备及计算机可读存储介质
CN113296872B (zh) 容器状态查询方法、装置、设备、存储介质和系统
CN111488373B (zh) 用于处理请求的方法和系统
CN113760491A (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