CN112650572A - 一种分布式任务调度方法、装置、计算机设备及存储介质 - Google Patents

一种分布式任务调度方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112650572A
CN112650572A CN202011621605.4A CN202011621605A CN112650572A CN 112650572 A CN112650572 A CN 112650572A CN 202011621605 A CN202011621605 A CN 202011621605A CN 112650572 A CN112650572 A CN 112650572A
Authority
CN
China
Prior art keywords
task
level
instance
executor
scheduling
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
Application number
CN202011621605.4A
Other languages
English (en)
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN202011621605.4A priority Critical patent/CN112650572A/zh
Publication of CN112650572A publication Critical patent/CN112650572A/zh
Pending legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明应用于分布式人工智能系统技术领域,公开了一种分布式任务调度方法、装置、计算机设备及存储介质,其中,方法部分包括:以预设频率轮询数据库中的任务信息表,获得调度任务信息以确定调度任务的任务类型,若任务类型为秒级任务,则生成秒级任务实例,确定秒级任务执行器并将秒级任务实例发送至秒级任务执行器,接收秒级任务执行器反馈的秒级任务执行信息,并更新任务信息表;本发明中,将需要即时执行的秒级任务直接分配给可用的任务执行器执行,提高了秒级任务的执行精确度,提高了秒级任务执行的效率,从而减少了出现任务阻塞的可能,进而提高了所有任务的执行效率。本申请还涉及区块链技术领域,任务信息表等数据存储于区块链网络中。

Description

一种分布式任务调度方法、装置、计算机设备及存储介质
技术领域
本发明涉及分布式人工智能系统领域,尤其涉及一种分布式任务调度方法、装置、计算机设备及存储介质。
背景技术
当用户使用应用程序,在使用过程中用户可能会要应用程序提供某一服务,此时,管理应用程序的任务调度服务器就会自动形成一个任务。由于服务器管理多个应用程序,且使用应用程序的用户较多,短时间内任务调度系统会根据用户需求生成大量不同的任务,任务调度服务器需要对大量不同的任务进行配置任务队列,以根据任务的先后以及任务的优先级安排任务的执行。
现有技术中,一般根据任务的执行时间将任务创建为定时任务,在生成定时任务的定时任务实例后,任务调度服务器使用CRON表达式初始化执行时间字段,保证每一定时任务实例都存在可用的下次调度时间,然后将定时任务实例推入时间轮,到达下次调度时间时则触发任务,将定时任务实例分配给任务执行器。但是这种方法中,任务调度服务器会花费大量的时间在管理任务上,定时的任务触发功能不够精准,导致大量的任务无法得到有效执行,造成任务阻塞,降低了任务的执行效率。
发明内容
本发明提供一种分布式任务调度方法、装置、计算机设备及存储介质,以解决现有任务调度中,定时的任务触发功能不够精准导致任务的执行效率不高问题。
一种分布式任务调度方法,包括:
以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
根据所述调度任务信息确定所述调度任务的任务类型;
若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
进一步地,所述根据所述调度任务信息确定所述调度任务的任务类型之后,所述方法还包括:
若所述任务类型为定时任务,则根据所述定时任务的调度任务信息生成定时任务实例,所述定时任务为需要以一定的时长间隔执行的任务,所述定时任务实例包括所述定时任务的下次执行时刻;
确定所述下次执行时刻是否在所述预设时刻之后;
若所述下次执行时刻在所述预设时刻之后,则将所述定时任务实例置入时间轮;
当所述时间轮的计时时刻达到所述下次执行时刻时,确定是否需要执行所述定时任务实例;
若需要执行所述定时任务实例,则确定执行所述定时任务实例的定时任务执行器,并将所述定时任务实例发送至定时任务执行器,以使所述定时任务执行器执行所述定时任务实例;
接收所述定时任务执行器反馈的定时任务执行信息,并根据所述定时任务执行信息更新所述任务信息表。
进一步地,所述确定是否需要执行所述定时任务实例,包括:
确定所述定时任务实例中的任务状态是否为启用状态;
若所述定时任务实例中的任务状态为所述启用状态,则确定为需要执行所述定时任务实例;
若所述定时任务实例中的任务状态为非启用状态,确定为不需要执行所述定时任务实例。
进一步地,所述根据所述秒级任务的调度任务信息生成秒级任务实例,包括:
在所述调度任务信息中确定所述秒级任务的任务状态和任务ID;
确定所述任务状态是否为启用状态;
若所述任务状态为所述启用状态,则根据所述任务ID查询任务日志记录表,以确定所述秒级任务是否需要进行调度,所述任务日志记录表中保存有所述调度任务的任务实例日志信息;
若确定所述秒级任务需要进行调度,则根据所述秒级任务的调度任务信息生成所述秒级任务实例,并更新所述任务日志记录表。
进一步地,所述确定执行所述秒级任务实例的秒级任务执行器,包括:
确定所述秒级任务实例中是否配置有执行所述秒级任务实例的配置执行器;
若所述秒级任务实例中配置有执行所述秒级任务实例的配置执行器,则确定当前所有的可用任务执行器,并确定所述配置执行器是否为所述可用任务执行器;
若所述配置执行器为所述可用任务执行器,则将所述配置执行器作为所述秒级任务执行器;
若所述秒级任务实例中未配置有执行所述秒级任务实例的配置执行器,或所述配置执行器不为所述可用任务执行器,则在当前所有的所述可用任务执行器中确定所述秒级任务执行器。
进一步地,所述在当前所有的所述可用任务执行器中确定所述秒级任务执行器,包括:
获取所述可用任务执行器实时的执行器信息,所述执行器信息包括所述可用任务执行器的CPU、内存和磁盘空间;
根据所述可用任务执行器的CPU、内存和磁盘空间对所述可用任务执行器进行评估,以获得所有所述可用任务执行器的健康评分;
选取所述健康评分最高的可用任务执行器作为所述秒级任务执行器。
一种分布式任务调度装置,包括:
轮询模块,用于以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
第一确定模块,用于根据所述调度任务信息确定所述调度任务的任务类型;
第一生成模块,用于若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
第二确定模块,用于确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
第一更新模块,用于接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
进一步地,所述根据所述调度任务信息确定所述调度任务的任务类型之后,所述分布式任务调度装置还包括:
第一生成模块,用于若所述任务类型为定时任务,则根据所述定时任务的调度任务信息生成定时任务实例,所述定时任务为需要以一定的时长间隔执行的任务,所述定时任务实例包括所述定时任务的下次执行时刻;
第三确定模块,用于确定所述下次执行时刻是否在所述预设时刻之后;
置入模块,用于若所述下次执行时刻在所述预设时刻之后,则将所述定时任务实例置入时间轮;
第四确定模块,用于当所述时间轮的计时时刻达到所述下次执行时刻时,确定是否需要执行所述定时任务实例;
第五确定模块,用于若需要执行所述定时任务实例,则确定执行所述定时任务实例的定时任务执行器,并将所述定时任务实例发送至定时任务执行器,以使所述定时任务执行器执行所述定时任务实例;
第二更新模块,用于接收所述定时任务执行器反馈的定时任务执行信息,并根据所述定时任务执行信息更新所述任务信息表。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述分布式任务调度方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式任务调度方法的步骤。
上述分布式任务调度方法、装置、计算机设备及存储介质所提供的一个方案中,通过以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息,根据调度任务信息确定调度任务的任务类型,若任务类型为秒级任务,则根据秒级任务的调度任务信息生成秒级任务实例,秒级任务为需要即时执行的任务,确定执行秒级任务实例的秒级任务执行器,并将秒级任务实例发送至秒级任务执行器,以使秒级任务执行器执行秒级任务实例,接收秒级任务执行器反馈的秒级任务执行信息,并根据秒级任务执行信息更新任务信息表;本发明中,将需要调度的任务设置为不同的类型,以对大量不同的任务进行灵活配置,然后在调度任务的过程中,将需要即时执行的秒级任务直接分配给可用的任务执行器执行,而不是置入时间轮中进行定时触发并执行,提高了秒级任务的执行精确度,提高了秒级任务执行的效率,从而减少了出现任务阻塞的可能,进而提高了所有任务的执行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中分布式任务调度方法的一应用环境示意图;
图2是本发明一实施例中分布式任务调度方法的一流程示意图;
图3是本发明一实施例中分布式任务调度方法的另一流程示意图;
图4是图3中步骤S90的一实现流程示意图;
图5是图2中步骤S30的一实现流程示意图;
图6是图2中步骤S40的一实现流程示意图;
图7是图6中步骤S44的一实现流程示意图;
图8是本发明一实施例中分布式任务调度装置的一结构示意图;
图9是本发明一实施例中计算机设备的一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的分布式任务调度方法,该分布式任务调度方法可应用如图1所示的应用环境中。具体地,该分布式任务调度方法应用在分布式任务调度系统中,该分布式任务调度系统包括如图1所示的客户端和服务器,客户端与服务器通过网络进行通信,用于解决现有任务调度中,定时的任务触发功能不够精准导致任务的执行效率不高问题。其中,客户端又称为用户端,是指与服务器相对应,为客户提供本地服务的程序。客户端可安装在但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备上。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在该分布式任务调度系统中,用户通过客户端的应用程序向服务器请求提供服务,服务器管理中心根据用户的服务请求生成任务并注册至任务信息表,服务器会以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息,根据调度任务信息确定调度任务的任务类型,若任务类型为秒级任务,则根据秒级任务的调度任务信息生成秒级任务实例,秒级任务为需要即时执行的任务,确定执行秒级任务实例的秒级任务执行器,并将秒级任务实例发送至秒级任务执行器,以使秒级任务执行器执行秒级任务实例,接收秒级任务执行器反馈的秒级任务执行信息,并根据秒级任务执行信息更新任务信息表;在调度任务的过程中,将需要即时执行的秒级任务直接分配给可用的任务执行器执行,而不是置入时间轮中进行定时触发并执行,提高了秒级任务的执行精确度,提高了秒级任务执行的效率,从而减少了出现任务阻塞的可能,进而提高了所有任务的执行效率。
本申请中的分布式任务调度系统为包括多个任务调度服务器和多个任务执行器的分布式系统,本申请提供的分布式任务调度方法可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
其中,本申请中的分布式任务调度系统的系统环境为区块链网络环境,分布式任务调度方法所涉及的数据均存储于区块链节点中,如任务信息表、调度任务信息、任务实例、任务执行信息等数据均存储于区块链节点中,以保证数据的安全性。本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。将数据库部署于区块链可提高数据存储的安全性。
其中,本申请的分布式任务调度系统提供灰度上线功能。任务调度服务器与业务实现解耦,只需部署一次后常年不再需要维护,但是任务执行器中托管运行着业务作业,作业上线和变更需要重启任务执行器,尤其是Bean模式任务。任务执行器重启可能会中断运行中的任务,通过灰度上线的方式,避免因重启导致的任务中断的问题。在灰度上线模式下,首先将任务执行器改为手动注册,下线一半机器列表(A组),线上运行另一半机器列表(B组)。等待A组机器任务运行结束并编译上线,任务执行器r注册地址替换为A组。等待B组机器任务运行结束并编译上线后,任务执行器注册地址替换为A组+B组。
在一实施例中,如图2所示,提供一种分布式任务调度方法,以该方法应用在图1中的服务器为例进行说明,包括如下步骤:
S10:以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息。
需要理解的是,本申请提供的分布式任务调度方法应用于分布式任务调度系统中,任务调度服务器根据本申请提供的分布式任务调度方法,将任务调度至分布式的任务执行器中,以使任务执行器执行任务,接受任务执行器在对任务的执行信息。
首先,分布式任务调度系统会接收任务配置信息,并根据任务配置信息创建调度任务,例如,系统通过当前任务调度服务器的IP及端口信息查询应用信息表,获取当前任务调度服务器负责的所有应用ID,,并清理当前任务调度服务器的历史缓存信息。然后通过@Scheduler注解及fixed Rate参数、@Async注解等任务配置信息,创建固定频率的调度任务,并确定调度任务的任务状态、任务ID和所属的应用ID,根据任务所属的应用ID,将调度任务、调度任务的任务状态、任务ID汇总至任务信息表中,便于后续任务调度服务器根据所负责的应用到任务信息表中查询任务并进行调度。其中,然后按照预定的每组最大数量将应用ID对应的任务分为不同的任务组,每一任务组对应启用一个线程,避免顺序阻塞处理产生的等待延迟。
各任务调度服务器会以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息,进而根据调度任务信息进行任务调度,以保证任务的及时执行。其中,调度任务信息还可以包括任务名称、任务描述、任务所属的应用ID、任务调度参数、时间表达式类型、时间表达式、执行类型、执行器类型、执行器信息、最大同时运行任务数、并发度、超时时间、重试策略、下次调度时间等配置信息。
S20:根据调度任务信息确定调度任务的任务类型。
在获得调度任务信息之后,根据调度任务信息确定调度任务的任务类型。其中,调度任务信息中可以包含任务类型,读取调度任务信息中的任务类型即可直接获得调度任务的类型。
其中,调度任务的任务类型可以通过如下方式确定:
获取调度任务的任务配置信息,将任务调度配置信息与历史任务配置信息进行匹配;
确定任务调度配置信息与历史任务配置信息的匹配度是否大于预设阈值;
若任务配置信息与历史任务配置信息的匹配度大于预设阈值,则确定调度任务的任务类型与历史任务的调度类型相同;
若任务配置信息与历史任务配置信息的匹配度未大于预设阈值,则重新与其他历史任务配置信息进行匹配,直至确定调度任务的任务类型。
例如,调度任务的任务类型包括秒级任务和定时任务,秒级任务为需要立即调度执行的任务,定时任务为以一定的时长间隔执行的任务,预设阈值可以为80%,获取调度任务A的@Scheduler注解及fixed Rate参数、@Async注解等任务配置信息,确定调度任务A的任务配置信息与历史任务B的任务配置信息的匹配度,若任务配置信息与历史任务B的任务配置信息的匹配度大于80%,则确定调度任务A的任务类型与历史任务B的任务类型相同,若历史任务B的任务类型为秒级任务,则调度任务A的任务类型为秒级任务;若历史任务B的任务类型为定时任务,则调度任务A的任务类型为定时任务。
本实施例中,预设阈值为80%仅为示例性说明,在其他实施例中,预设阈值还可以是其他数值,在此不再赘述。
S30:若任务类型为秒级任务,则根据秒级任务的调度任务信息生成秒级任务实例,秒级任务为需要即时执行的任务。
在根据调度任务信息确定调度任务的任务类型之后,若任务类型为秒级任务,则根据秒级任务的调度任务信息生成秒级任务实例。其中,秒级任务为需要即时调度给任务执行器执行的任务,在进行任务分组后直接进入调度流程,调度失败也无需重试,直接进行新的调度。
S40:确定执行秒级任务实例的秒级任务执行器,并将秒级任务实例发送至秒级任务执行器,以使秒级任务执行器执行秒级任务实例。
在根据秒级任务的调度任务信息生成秒级任务实例之后,进入等待任务执行器执行秒级任务实例的状态,此时需要确定执行秒级任务实例的任务执行器,作为秒级任务执行器,在确定执行秒级任务实例的秒级任务执行器之后,向秒级任务执行器发送调度请求和秒级任务实例,启用一个后台线程定期轮询请求状态(可以为任务执行中,任务执行成功、任务失败、超时等),秒级任务执行器接收到调度请求和秒级任务实例后,直接执行秒级任务实例。
S50:接收秒级任务执行器反馈的秒级任务执行信息,并根据秒级任务执行信息更新任务信息表。
在秒级任务执行器执行秒级任务实例时,会将秒级任务实例的执行信息进行反馈,任务调度服务器会接收秒级任务执行器反馈的秒级任务执行信息,并根据秒级任务执行信息更新任务信息表中的更新任务状态,并将任务执行信息写入缓存。
例如,秒级任务实例的执行信息可以包括执行中、执行完成或者执行失败等任务执行状态上午一种,任务调度服务器接收到的执行完成的信息之后,将任务信息表中调度任务进行删除。在其他实施例中,秒级任务实例的执行信息还可以是其他,更新任务信息表的方式还可以是其他方式。
本实施例中,通过以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息,根据调度任务信息确定调度任务的任务类型,若任务类型为秒级任务,则根据秒级任务的调度任务信息生成秒级任务实例,确定执行秒级任务实例的秒级任务执行器,并将秒级任务实例发送至秒级任务执行器,以使秒级任务执行器执行秒级任务实例,接收秒级任务执行器反馈的秒级任务执行信息,并根据秒级任务执行信息更新任务信息表;本发明中,将需要调度的任务设置为不同的类型,以对不同的任务进行灵活配置,然后在调度任务的过程中,将需要即时执行秒级任务直接分配给可以的任务执行器执行,而不是置入时间轮中进行定时触发并执行,提高了秒级任务的执行精确度,减少了出现任务阻塞的可能,从而提高了任务执行的效率。
在一实施例中,如图3所示,步骤S20之后,即根据调度任务信息确定调度任务的任务类型之后,所述方法还具体包括如下步骤:
S60:若任务类型为定时任务,则根据定时任务的调度任务信息生成定时任务实例,定时任务为需要以一定的时长间隔执行的任务,定时任务实例包括定时任务的下次执行时刻。
在根据调度任务信息确定调度任务的任务类型之后,若任务类型为定时任务,则根据定时任务的调度任务信息生成定时任务实例,其中,定时任务为需要以一定的时长间隔执行的任务,定时任务实例包括定时任务的下次执行时刻,还包括任务ID、所属的应用ID、任务实例ID、实例变量、任务类型、状态、下次执行时刻等。在根据定时任务的调度任务信息生成定时任务实例之后,然后保存任务实例日志信息。
其中,可以通过解析任务配置信息中的CRON 表达式确定定时任务的下次执行时刻;任务ID是在任务注册至系统时产生的ID,任务实例ID是任务在每一次调度中产生的,类似于执行日志的ID,可以以雪花算法生成的分布式唯一ID作为任务实例ID。例如,任务ID为390078的任务,每隔一分钟需要调度一次,第一次调度时任务实例ID为T7459001,第二次任务调度时实例ID为T7459002,第二次调度时任务实例ID为T7459003。
S70:确定下次执行时刻是否在预设时刻之后。
在确定根据定时任务的调度任务信息生成定时任务实例之后,确定定时任务的下次执行时刻是否在预设时刻之后。其中,定时任务的下次执行时刻为:当前系统时刻+预设阈值,预设阈值可以是二倍的调度频率。
S80:若下次执行时刻在预设时刻之后,则将定时任务实例置入时间轮。
若下次执行时刻在预设时刻之后,则将定时任务实例置入时间轮。具体的,需要确定当前系统时刻是否在下次执行时刻之前,若当前系统时刻在下次执行时刻之前,则将定时任务实例的延迟毫秒数设置为0;若当前系统时刻在下次执行时刻之后,则将定时任务实例的延迟毫秒数设置为:下次执行时刻-当前系统时刻,然后将定时任务实例的延迟毫秒数和定时任务实例一同置入时间轮中,以进行定时调度。
需要理解的是,时间轮是一个环形数组结构Time Wheel。Time Wheel有两个参数,时间间隔和刻度数量,时间间隔是指针转动的频率,刻度数量是这个表盘内任务槽的数量,也就是数组长度。指针指向数组的起点,每间隔一段相同的时间间隔后,指针将会向前推进一个位置;当指针指向数组末尾时,再次推进则回到数组起点,开启新的一轮。数组的每一个位置指向一个链表,链表中存放的当前要执行的任务,指针每推进一个位置后,会从链表中取出所有任务进行调度。由于数组的每个位置按照固定的时间间隔推进,所以新增调度任务时,可根据任务的调度时间和当前时间计算出具体的位置序号。Time Wheel通过单线程和循环利用的数据结构,在高并发场景下具有出色且稳定的性能。
S90:当时间轮的计时时刻达到下次执行时刻时,确定是否需要执行定时任务实例。
在将定时任务实例的延迟毫秒数和定时任务实例之后,在时间轮中达到延迟毫秒数时,即当时间轮的计时时刻达到下次执行时刻时,还需要根据用户的设置确定是否需要执行定时任务实例。
S100:若需要执行定时任务实例,则确定执行定时任务实例的定时任务执行器,并将定时任务实例发送至定时任务执行器,以使定时任务执行器执行定时任务实例。
在确定是否需要执行定时任务实例之后,若确定需要执行定时任务实例,则确定执行定时任务实例的定时任务执行器,向定时任务执行器发送调度请求和定时任务实例,启用一个后台线程定期轮询请求状态,定时任务执行器接收到调度请求和定时任务实例后,执行定时任务实例。若不需要执行定时任务实例,则将忽略定时任务实例,并从时间轮中将定时任务实例剔除。
其中,执行定时任务实例的定时任务执行器可以通过如下方式确定:获取有序的当前所有可用任务执行器的地址,排除超时机器,以最低可用CPU核心数量、最低可用内存、最低可用磁盘空间为指标,评估任务执行器可用性,并按健康评分的高低对任务执行器进行排序,排在前面的健康评分更高;确定定时任务实例是否指定了任务执行器,若指定了任务执行器,则判断该指定的任务执行器是否在筛选出的可用任务执行器中,若该指定的任务执行器是否在筛选出的可用任务执行器,则使用该指定的任务执行器执行定时任务实例,否则使用筛选出健康评分最高的可用任务执行器,以执行定时任务实例;若当前无可用任务执行器,则定时任务实例执行失败。通过上述方式可以确定健康评分较高的任务执行器执行任务,保证了定时任务执行的成功率,提高了定时任务执行的效率,减少了因任务执行器任务冲突导致的堵塞。
本实施例中,上述确定执行定时任务实例的定时任务执行器的方式仅为示例性说明,在其他实施例中,还可以通过其他方式确定定时任务执行器,在此不再赘述。
S110:接收定时任务执行器反馈的定时任务执行信息,并根据定时任务执行信息更新任务信息表。
在定时任务执行器执行定时任务实例时,会将定时任务实例的执行信息进行反馈,任务调度服务器会接收定时任务执行器反馈的定时任务执行信息,将定时任务执行信息写入缓存,并计算下一次调度时刻,忽略预设时长内的重复执行,将定时任务执行信息和下一次调度时刻更新至任务信息表。
本实施例中,在根据调度任务信息确定调度任务的任务类型之后,若任务类型为定时任务,则根据定时任务的调度任务信息生成定时任务实例,定时任务为需要以一定的时长间隔执行的任务,定时任务实例包括定时任务的下次执行时刻,确定下次执行时刻是否小于预设时刻阈值,若下次执行时刻小于预设时刻阈值,则将定时任务实例置入时间轮,当时间轮的计时时刻达到下次执行时刻时,确定是否需要执行定时任务实例,若需要执行定时任务实例,则确定执行定时任务实例的定时任务执行器,并将定时任务实例发送至定时任务执行器,以使定时任务执行器执行定时任务实例,接收定时任务执行器反馈的定时任务执行信息,并根据定时任务执行信息更新任务信息表,明确了定时任务的调度过程,将定时任务实例置入时间轮中定时执行,并根据定时任务的执行信息更新信息表,在保证任务可按照分配顺序及时执行的基础上,及时地更新了任务信息,简化了调度系统的调度逻辑,减少了系统资源占用。
在一实施例中,如图4所示,步骤S90,即确定是否需要执行定时任务实例,具体包括如下步骤:
S91:确定定时任务实例中的任务状态是否为启用状态。
S92:若定时任务实例中的任务状态为启用状态,则确定为需要执行定时任务实例。
S93:若定时任务实例中的任务状态为非启用状态,确定为不需要执行定时任务实例。
在将定时任务实例的延迟毫秒数和定时任务实例之后,在时间轮中达到延迟毫秒数时,即当时间轮的计时时刻达到下次执行时刻时,还需要根据定时任务实例中的任务状态确定是否需要执行定时任务实例。若定时任务实例中的任务状态为启用状态,则确定为需要执行定时任务实例,若定时任务实例中的任务状态为非启用状态,确定为不需要执行定时任务实例。
其中,正常情况下,执行定时任务实例时,定时任务实例中的任务状态需要为启用状态,因为在定时任务实例的调度触发后,用户可以在前端界面手动将定时任务取消,此时,定时任务实例中的任务状态为取消状态,不需要执行该定时任务实例;用户也可以在前端界面手动将定时任务禁用,此时,定时任务实例中的任务状态为禁用状态,该定时任务已被禁用不再执行。因此,当时间轮的计时时刻达到下次执行时刻时,需要确定任务状态,若定时任务实例中的任务状态为取消状态或者禁用状态,则确定不需要执行定时任务实例,若定时任务实例中的任务状态为启用状态,则继续本次正常调度流程。
本实施例中,通过确定定时任务实例中的任务状态是否为启用状态,若定时任务实例中的任务状态为启用状态,则确定为需要执行定时任务实例;若定时任务实例中的任务状态为非启用状态,确定为不需要执行定时任务实例,明确了确定是否需要执行定时任务实例的过程中,通过定时任务实例中的任务状态即可快速确定是否需要执行定时任务实例,简单便捷,实用性较高。
在一实施例中,如图5所示,步骤S30,即根据秒级任务的调度任务信息生成秒级任务实例,具体包括如下步骤:
S31:在调度任务信息中确定秒级任务的任务状态和任务ID。
因为秒级任务需要即时执行,且执行频率较高,在根据调度任务信息确定调度任务的任务类型之后,若任务类型为秒级任务,需要确定该秒级任务是否被取消、或已经被调度、或者已执行。其中,需要在调度任务信息中确定秒级任务的任务状态和任务ID,以确定是否执行该秒级任务。
S32:确定任务状态是否为启用状态。
在调度任务信息中确定秒级任务的任务状态之后,确定秒级任务的任务状态是否为启用状态,若秒级任务的任务状态为取消状态或者禁用状态,则无需执行该秒级任务,停止调度。
S33:若任务状态为启用状态,则根据任务ID查询任务日志记录表,以确定秒级任务是否需要进行调度,任务日志记录表中保存有调度任务的任务实例日志信息。
在确定秒级任务的任务状态是否为启用状态之后,若秒级任务的任务状态为启用状态,则根据任务ID查询任务日志记录表,以确定秒级任务是否需要进行调度,其中,任务日志记录表中保持有调度任务的任务实例日志信息。即根据任务日志记录表的内容,确定该秒级任务是否已经被调度、或者已执行。
例如,若任务实例日志信息中任务ID对应额任务实例处于等待派发、等待任务执行器接收、运行中这三种状态,则表示该秒级任务已经被调度、或者已执行,此时该秒级任务不需要进行调度;若任务实例日志信息中任务ID对应额任务实例未处于等待派发、等待任务执行器接收、运行中这三种状态的任一种,则表示该秒级任务未被调度,也未被执行,需要调度该秒级任务至执任务执行器。
S34:若确定秒级任务需要进行调度,则根据秒级任务的调度任务信息生成秒级任务实例,并更新任务日志记录表。
在确定秒级任务是否需要进行调度之后,若确定秒级任务需要进行调度,则根据秒级任务的调度任务信息生成秒级任务实例,并更新任务日志记录表。秒级任务实例包括包括任务ID、所属的应用ID、任务实例ID、实例变量、任务类型、状态等。
若确定秒级任务不需要进行调度,表示该秒级任务处于被调度状态或者被执行状态,不需要进行调度执行,则忽略该秒级任务。
本实施例中,通过在调度任务信息中确定秒级任务的任务状态和任务ID,确定任务状态是否为启用状态,若任务状态为启用状态,则根据任务ID查询任务日志记录表,以确定秒级任务是否需要进行调度,任务日志记录表中保持有调度任务的任务实例日志信息,若确定秒级任务需要进行调度,则根据秒级任务的调度任务信息生成秒级任务实例,并更新任务日志记录表,明确了根据秒级任务的调度任务信息生成秒级任务实例的步骤,通过查询调度任务信息和任务日志记录表的信息来确定是否需要调度秒级任务至任务执行器执行,减少了任务重复执行的可能,进而减少了任务重复执行导致的资源浪费。
在一实施例中,如图6所示,步骤S40,即确定执行秒级任务实例的秒级任务执行器,具体包括如下步骤:
S41:确定秒级任务实例中是否配置有执行秒级任务实例的配置执行器。
在根据秒级任务的调度任务信息生成秒级任务实例之后,确定秒级任务实例中是否配置有执行秒级任务实例的配置执行器。配置执行器为用户或者系统根据任务需求配置的任务执行器。
S42:若秒级任务实例中配置有执行秒级任务实例的配置执行器,则确定当前所有的可用任务执行器,并确定配置执行器是否为可用任务执行器。
若确定秒级任务实例中是否配置有执行秒级任务实例的配置执行器,则获取所有任务服务器的信息(包括CPU、内存和磁盘空间等),从而根据CPU、内存和磁盘空间确定当前所有的可用任务执行器,并确定配置执行器是否为可用任务执行器。
S43:若配置执行器为可用任务执行器,则将配置执行器作为秒级任务执行器。
若配置执行器为可用任务执行器,则将配置执行器作为秒级任务执行器。
S44:若秒级任务实例中未配置有执行秒级任务实例的配置执行器,或配置执行器不为可用任务执行器,则在当前所有的可用任务执行器中确定秒级任务执行器。
若秒级任务实例中未配置有执行秒级任务实例的配置执行器,或配置执行器不为可用任务执行器,则需要在当前所有的可用任务执行器中确定秒级任务执行器。
本实施例中,通过确定秒级任务实例中是否配置有执行秒级任务实例的配置执行器,若秒级任务实例中配置有执行秒级任务实例的配置执行器,则将配置执行器作为秒级任务执行器;若秒级任务实例中配置有执行秒级任务实例的配置执行器,则获取当前所有的可用任务执行器,并在当前所有的可用任务执行器中确定秒级任务执行器,细化了确定执行秒级任务实例的秒级任务执行器上午步骤,可根据任务的执行需求主动配置任务执行器,当无配置执行器时,则选择当前可用的执行器执行秒级任务,保证了秒级任务可即时执行,提高了秒级任务执行的准确性和效率,进而减少了系统堵塞的可能,降低了系统的资源消耗。
本实施例中,服务器(任务调度服务器)的通讯均采用数据加密,任务调度服务器向任务执行器发送调度请求时,使用Request Model和Response Model两个对象封装调度请求参数和响应数据, 在进行通讯之前底层会将上述两个对象序列化,并进行数据协议以及时间戳检验,从而达到数据加密的功能。为提升系统安全性,任务调度服务器和任务执行器在通讯时进行安全性校验,双方持有的Access Token匹配才允许通讯。
在任务执行器集群部署时,如果某一台任务执行器发生故障,支持自动进行Failover切换到一台正常的任务执行器继续完成调度请求流程,且支持通过自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试。
由于任务执行器存在网络抖动回调失败或宕机等异常情况,会导致任务调度结果丢失。由于任务调度服务器依赖任务执行器回调来感知调度结果,因此会导致调度日志永远处于“运行中”状态。针对该问题,任务调度服务器会巡查停留在“运行中”状态超过预设时间(如10min),且对应任务执行器心跳注册失败不在线的调度记录,将其主动标记失败。任务调度服务器支持设置任务超时时间,任务运行超时的情况下,将会主动中断任务。提供邮件失败告警,且可扩展短信、微信等方式。还支持按照时区定制调度时间,使任务调度服务器和任务执行器可以跨时区异地部署。
在一实施例中,如图7所示,步骤S44中,即在当前所有的可用任务执行器中确定秒级任务执行器,具体包括如下步骤:
S441:获取可用任务执行器实时的执行器信息,执行器信息包括可用任务执行器的CPU、内存和磁盘空间。
获取有序的当前所有任务执行器实时的执行器信息,执行器信息包括任务执行器的CPU、内存、磁盘空间和地址,排除超时机器,确定可用任务执行器。
S442:根据可用任务执行器的CPU、内存和磁盘空间对可用任务执行器进行评估,以获得所有可用任务执行器的健康评分。
根据可用任务执行器的CPU、内存和磁盘空间对可用任务执行器进行评估,以最低可用CPU核心数量、最低可用内存、最低可用磁盘空间为指标,评估任务执行器可用性,并按健康评分的高低对任务执行器进行排序,排在前面的健康评分更高。
S443:选取健康评分最高的可用任务执行器作为秒级任务执行器。
筛选出健康评分最高的可用任务执行器作为秒级任务执行器,以执行秒级任务实例;若当前无可用任务执行器,则秒级任务实例执行失败。通过上述方式可以确定健康评分较高的任务执行器执行任务,保证了秒级任务执行的成功率,提高了秒级任务执行的效率,减少了因任务执行器任务冲突导致的堵塞。
本实施例中,通过获取可用任务执行器实时的执行器信息,执行器信息包括可用任务执行器的CPU、内存和磁盘空间,然后根据可用任务执行器的CPU、内存和磁盘空间对可用任务执行器进行评估,以获得所有可用任务执行器的健康评分,进而选取健康评分最高的可用任务执行器作为秒级任务执行器,细化为在当前所有的可用任务执行器中确定秒级任务执行器的具体步骤,根据任务执行器的健康得分选择执行秒级任务的执行器,保证了任务执行器的健康度,从而秒级任务的成功执行性,进一步提高了秒级任务执行的效率,减少了系统堵塞的可能,降低了系统的资源消耗。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种分布式任务调度装置,该分布式任务调度装置与上述实施例中分布式任务调度方法一一对应。如图8所示,该分布式任务调度装置包括轮询模块801、确定模块802、生成模块803、发送模块804和更新模块805。各功能模块详细说明如下:
轮询模块801,用于以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
第一确定模块802,用于根据所述调度任务信息确定所述调度任务的任务类型;
第一生成模块803,用于若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
第二确定模块804,用于确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
第一更新模块805,用于接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
进一步地,所述根据所述调度任务信息确定所述调度任务的任务类型之后,所述分布式任务调度装置还包括:
第一生成模块806,用于若所述任务类型为定时任务,则根据所述定时任务的调度任务信息生成定时任务实例,所述定时任务为需要以一定的时长间隔执行的任务,所述定时任务实例包括所述定时任务的下次执行时刻;
第三确定模块807,用于确定所述下次执行时刻是否在所述预设时刻之后;
置入模块808,用于若所述下次执行时刻在所述预设时刻之后,则将所述定时任务实例置入时间轮;
第四确定模块809,用于当所述时间轮的计时时刻达到所述下次执行时刻时,确定是否需要执行所述定时任务实例;
第五确定模块810,用于若需要执行所述定时任务实例,则确定执行所述定时任务实例的定时任务执行器,并将所述定时任务实例发送至定时任务执行器,以使所述定时任务执行器执行所述定时任务实例;
第二更新模块811,用于接收所述定时任务执行器反馈的定时任务执行信息,并根据所述定时任务执行信息更新所述任务信息表。
进一步地,所述第四确定模块809具体用于:
确定所述定时任务实例中的任务状态是否为启用状态;
若所述定时任务实例中的任务状态为所述启用状态,则确定为需要执行所述定时任务实例;
若所述定时任务实例中的任务状态为非启用状态,确定为不需要执行所述定时任务实例。
进一步地,所述第一生成模块803具体用于:
在所述调度任务信息中确定所述秒级任务的任务状态和任务ID;
确定所述任务状态是否为启用状态;
若所述任务状态为所述启用状态,则根据所述任务ID查询任务日志记录表,以确定所述秒级任务是否需要进行调度,所述任务日志记录表中保存有所述调度任务的任务实例日志信息;
若确定所述秒级任务需要进行调度,则根据所述秒级任务的调度任务信息生成所述秒级任务实例,并更新所述任务日志记录表。
进一步地,所述第二确定模块804具体用于:
确定所述秒级任务实例中是否配置有执行所述秒级任务实例的配置执行器;
若所述秒级任务实例中配置有执行所述秒级任务实例的配置执行器,则确定当前所有的可用任务执行器,并确定所述配置执行器是否为所述可用任务执行器;
若所述配置执行器为所述可用任务执行器,则将所述配置执行器作为所述秒级任务执行器;
若所述秒级任务实例中未配置有执行所述秒级任务实例的配置执行器,或所述配置执行器不为所述可用任务执行器,则在当前所有的所述可用任务执行器中确定所述秒级任务执行器。
进一步地,所述第二确定模块804具体还用于:
获取所述可用任务执行器实时的执行器信息,所述执行器信息包括所述可用任务执行器的CPU、内存和磁盘空间;
根据所述可用任务执行器的CPU、内存和磁盘空间对所述可用任务执行器进行评估,以获得所有所述可用任务执行器的健康评分;
选取所述健康评分最高的可用任务执行器作为所述秒级任务执行器。
关于分布式任务调度装置的具体限定可以参见上文中对于分布式任务调度方法的限定,在此不再赘述。上述分布式任务调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库为区块链数据库,用于存储上述分布式任务调度方法所生成、用到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分布式任务调度方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
根据所述调度任务信息确定所述调度任务的任务类型;
若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
根据所述调度任务信息确定所述调度任务的任务类型;
若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

Claims (10)

1.一种分布式任务调度方法,其特征在于,包括:
以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
根据所述调度任务信息确定所述调度任务的任务类型;
若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
2.如权利要求1所述的分布式任务调度方法,其特征在于,所述根据所述调度任务信息确定所述调度任务的任务类型之后,所述方法还包括:
若所述任务类型为定时任务,则根据所述定时任务的调度任务信息生成定时任务实例,所述定时任务为需要以一定的时长间隔执行的任务,所述定时任务实例包括所述定时任务的下次执行时刻;
确定所述下次执行时刻是否在所述预设时刻之后;
若所述下次执行时刻在所述预设时刻之后,则将所述定时任务实例置入时间轮;
当所述时间轮的计时时刻达到所述下次执行时刻时,确定是否需要执行所述定时任务实例;
若需要执行所述定时任务实例,则确定执行所述定时任务实例的定时任务执行器,并将所述定时任务实例发送至定时任务执行器,以使所述定时任务执行器执行所述定时任务实例;
接收所述定时任务执行器反馈的定时任务执行信息,并根据所述定时任务执行信息更新所述任务信息表。
3.如权利要求2所述的分布式任务调度方法,其特征在于,所述确定是否需要执行所述定时任务实例,包括:
确定所述定时任务实例中的任务状态是否为启用状态;
若所述定时任务实例中的任务状态为所述启用状态,则确定为需要执行所述定时任务实例;
若所述定时任务实例中的任务状态为非启用状态,确定为不需要执行所述定时任务实例。
4.如权利要求1所述的分布式任务调度方法,其特征在于,所述根据所述秒级任务的调度任务信息生成秒级任务实例,包括:
在所述调度任务信息中确定所述秒级任务的任务状态和任务ID;
确定所述任务状态是否为启用状态;
若所述任务状态为所述启用状态,则根据所述任务ID查询任务日志记录表,以确定所述秒级任务是否需要进行调度,所述任务日志记录表中保存有所述调度任务的任务实例日志信息;
若确定所述秒级任务需要进行调度,则根据所述秒级任务的调度任务信息生成所述秒级任务实例,并更新所述任务日志记录表。
5.如权利要求1-4任一项所述的分布式任务调度方法,其特征在于,所述确定执行所述秒级任务实例的秒级任务执行器,包括:
确定所述秒级任务实例中是否配置有执行所述秒级任务实例的配置执行器;
若所述秒级任务实例中配置有执行所述秒级任务实例的配置执行器,则确定当前所有的可用任务执行器,并确定所述配置执行器是否为所述可用任务执行器;
若所述配置执行器为所述可用任务执行器,则将所述配置执行器作为所述秒级任务执行器;
若所述秒级任务实例中未配置有执行所述秒级任务实例的配置执行器,或所述配置执行器不为所述可用任务执行器,则在当前所有的所述可用任务执行器中确定所述秒级任务执行器。
6.如权利要求5所述的分布式任务调度方法,其特征在于,所述在当前所有的所述可用任务执行器中确定所述秒级任务执行器,包括:
获取所述可用任务执行器实时的执行器信息,所述执行器信息包括所述可用任务执行器的CPU、内存和磁盘空间;
根据所述可用任务执行器的CPU、内存和磁盘空间对所述可用任务执行器进行评估,以获得所有所述可用任务执行器的健康评分;
选取所述健康评分最高的可用任务执行器作为所述秒级任务执行器。
7.一种分布式任务调度装置,其特征在于,包括:
轮询模块,用于以预设频率轮询数据库中的任务信息表,获得各调度任务的调度任务信息;
第一确定模块,用于根据所述调度任务信息确定所述调度任务的任务类型;
第一生成模块,用于若所述任务类型为秒级任务,则根据所述秒级任务的调度任务信息生成秒级任务实例,所述秒级任务为需要即时执行的任务;
第二确定模块,用于确定执行所述秒级任务实例的秒级任务执行器,并将所述秒级任务实例发送至所述秒级任务执行器,以使所述秒级任务执行器执行所述秒级任务实例;
第一更新模块,用于接收所述秒级任务执行器反馈的秒级任务执行信息,并根据所述秒级任务执行信息更新所述任务信息表。
8.如权利要求7所述的分布式任务调度装置,其特征在于,所述根据所述调度任务信息确定所述调度任务的任务类型之后,所述分布式任务调度装置还包括:
第一生成模块,用于若所述任务类型为定时任务,则根据所述定时任务的调度任务信息生成定时任务实例,所述定时任务为需要以一定的时长间隔执行的任务,所述定时任务实例包括所述定时任务的下次执行时刻;
第三确定模块,用于确定所述下次执行时刻是否在所述预设时刻之后;
置入模块,用于若所述下次执行时刻在所述预设时刻之后,则将所述定时任务实例置入时间轮;
第四确定模块,用于当所述时间轮的计时时刻达到所述下次执行时刻时,确定是否需要执行所述定时任务实例;
第五确定模块,用于若需要执行所述定时任务实例,则确定执行所述定时任务实例的定时任务执行器,并将所述定时任务实例发送至定时任务执行器,以使所述定时任务执行器执行所述定时任务实例;
第二更新模块,用于接收所述定时任务执行器反馈的定时任务执行信息,并根据所述定时任务执行信息更新所述任务信息表。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述分布式任务调度方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述分布式任务调度方法的步骤。
CN202011621605.4A 2020-12-30 2020-12-30 一种分布式任务调度方法、装置、计算机设备及存储介质 Pending CN112650572A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011621605.4A CN112650572A (zh) 2020-12-30 2020-12-30 一种分布式任务调度方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011621605.4A CN112650572A (zh) 2020-12-30 2020-12-30 一种分布式任务调度方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN112650572A true CN112650572A (zh) 2021-04-13

Family

ID=75367681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011621605.4A Pending CN112650572A (zh) 2020-12-30 2020-12-30 一种分布式任务调度方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112650572A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988359A (zh) * 2021-04-26 2021-06-18 成都淞幸科技有限责任公司 一种基于定时调度的采集任务智能分配方法及系统
CN113590236A (zh) * 2021-08-03 2021-11-02 聚好看科技股份有限公司 一种服务器及微服务声明式接口超时配置方法
CN113656157A (zh) * 2021-08-10 2021-11-16 北京锐安科技有限公司 一种分布式任务调度方法、装置、存储介质及电子设备
CN113742063A (zh) * 2021-08-06 2021-12-03 天津中新智冠信息技术有限公司 分布式定时调度系统和方法
CN113849292A (zh) * 2021-11-30 2021-12-28 天聚地合(苏州)数据股份有限公司 定时任务的执行方法、装置、存储介质及设备
CN113867911A (zh) * 2021-09-26 2021-12-31 聚好看科技股份有限公司 一种任务调度方法、设备及微服务系统
CN114020430A (zh) * 2021-11-04 2022-02-08 上海合阔信息技术有限公司 一种分布式任务调度方法、装置、电子设备及存储介质
CN114879942A (zh) * 2022-05-20 2022-08-09 北京宇信科技集团股份有限公司 分布式时间轮分组注册的校验方法、装置、介质和设备

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988359A (zh) * 2021-04-26 2021-06-18 成都淞幸科技有限责任公司 一种基于定时调度的采集任务智能分配方法及系统
CN113590236A (zh) * 2021-08-03 2021-11-02 聚好看科技股份有限公司 一种服务器及微服务声明式接口超时配置方法
CN113590236B (zh) * 2021-08-03 2023-10-31 聚好看科技股份有限公司 一种服务器及微服务声明式接口超时配置方法
CN113742063A (zh) * 2021-08-06 2021-12-03 天津中新智冠信息技术有限公司 分布式定时调度系统和方法
CN113656157A (zh) * 2021-08-10 2021-11-16 北京锐安科技有限公司 一种分布式任务调度方法、装置、存储介质及电子设备
CN113656157B (zh) * 2021-08-10 2024-04-23 北京锐安科技有限公司 一种分布式任务调度方法、装置、存储介质及电子设备
CN113867911A (zh) * 2021-09-26 2021-12-31 聚好看科技股份有限公司 一种任务调度方法、设备及微服务系统
CN114020430A (zh) * 2021-11-04 2022-02-08 上海合阔信息技术有限公司 一种分布式任务调度方法、装置、电子设备及存储介质
CN113849292A (zh) * 2021-11-30 2021-12-28 天聚地合(苏州)数据股份有限公司 定时任务的执行方法、装置、存储介质及设备
CN114879942A (zh) * 2022-05-20 2022-08-09 北京宇信科技集团股份有限公司 分布式时间轮分组注册的校验方法、装置、介质和设备
CN114879942B (zh) * 2022-05-20 2023-02-03 北京宇信科技集团股份有限公司 分布式时间轮分组注册的校验方法、装置、介质和设备

Similar Documents

Publication Publication Date Title
CN112650572A (zh) 一种分布式任务调度方法、装置、计算机设备及存储介质
US6708224B1 (en) Methods, systems and computer program products for coordination of operations for interrelated tasks
CN106406993A (zh) 一种定时任务管理方法和系统
CN110895487B (zh) 分布式任务调度系统
WO2022105138A1 (zh) 去中心化的任务调度方法、装置、设备及介质
CN110895484A (zh) 任务调度方法及装置
US5640513A (en) Notification of disconnected service machines that have stopped running
CN108446172B (zh) 数据调取方法、装置、计算机设备和存储介质
CN110895488B (zh) 任务调度方法及装置
CN112865992B (zh) 分布式主从系统中主节点的切换方法、装置和计算机设备
CN110750343B (zh) 集群系统定时任务调度控制方法及集群系统
US7228545B2 (en) Methods and apparatus for managing the execution of a task among a plurality of autonomous processes
CN107729213B (zh) 一种后台任务监控方法及装置
CN110704172B (zh) 集群系统定时任务调度方法及集群系统
CN110895486A (zh) 分布式任务调度系统
CN111796954A (zh) 基于jvm的看门狗的控制方法、装置、设备及存储介质
CN113391902B (zh) 一种任务调度方法及设备、存储介质
CN114564281A (zh) 容器调度方法、装置、设备及存储介质
CN113703929B (zh) 一种任务调度方法、系统、计算设备和存储介质
CN110895485A (zh) 任务调度系统
CN112416542A (zh) 分布式任务系统、管理方法、装置和计算机设备
CN111831424B (zh) 一种任务处理方法、系统及装置
CN116149829A (zh) 任务管理方法、装置、设备及存储介质
CN110188008B (zh) 作业调度主备切换方法、装置、计算机设备及存储介质
CN112148420B (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