CN106598705A - 一种异步任务的调度方法、装置、系统以及电子设备 - Google Patents

一种异步任务的调度方法、装置、系统以及电子设备 Download PDF

Info

Publication number
CN106598705A
CN106598705A CN201510666054.6A CN201510666054A CN106598705A CN 106598705 A CN106598705 A CN 106598705A CN 201510666054 A CN201510666054 A CN 201510666054A CN 106598705 A CN106598705 A CN 106598705A
Authority
CN
China
Prior art keywords
asynchronous task
task
asynchronous
value
time
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.)
Granted
Application number
CN201510666054.6A
Other languages
English (en)
Other versions
CN106598705B (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.)
Cainiao Smart Logistics Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510666054.6A priority Critical patent/CN106598705B/zh
Publication of CN106598705A publication Critical patent/CN106598705A/zh
Application granted granted Critical
Publication of CN106598705B publication Critical patent/CN106598705B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种异步任务的调度方法、装置、系统以及电子设备。所述异步任务的调度方法,包括:为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;根据调度需求设置相应的检索参数;根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;调取并执行检索获得的符合检索参数要求的异步任务。采用上述方法,能够解决执行节点与数据库交互频繁、不能保证任务调度的顺序和需求,从而导致异步任务调度的准确性较低使异步任务的执行缓慢的问题。通过本方法,可以通过简单的参数设置,实现对异步任务的多种调度方式。

Description

一种异步任务的调度方法、装置、系统以及电子设备
技术领域
本申请涉及分布式数据处理技术领域,具体涉及一种异步任务的调度方法、一种异步任务的调度装置以及一种异步任务的调度系统;本申请同时涉及一种电子设备。
背景技术
随着互联网的飞速发展,互联网所依赖的服务器规模也越来越庞大。并且随着用户业务的不断扩展,异步任务往往需要采用分布式网络存储系统。因此如何对这些跨机器应用中的异步任务进行管理、维护及调度,就成为一个亟待解决的问题。
传统的异步任务调度方法包括:从数据库中直接调取异步任务到执行节点。由此可知,传统的异步任务调度方法具有以下局限性:执行节点与数据库交互频繁;涉及到网络通信,浪费流量;不能保证任务调度的顺序和需求,从而导致异步任务调度的准确性较低使异步任务的执行缓慢。
即使传统的异步任务调度方法能够满足的几千万任务规模的调度,也无法实现对异步任务的高效执行与分配,往往造成资源空闲、而某些资源耗费贻尽,为异步任务进行调度时带了极大的局限性。
发明内容
本申请提供了一种异步任务的调度方法、一种异步任务的调度装置以及一种异步任务的调度系统,以解决现有技术中的上述问题。本申请同时涉及一种电子设备。
本申请提供了一种异步任务的调度方法,所述异步任务的调度方法包括:
为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;
根据调度需求设置相应的检索参数;
根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;
调取并执行检索获得的符合检索参数要求的异步任务。
可选的,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
可选的,所述调度参数,包括:执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
可选的,所述检索参数,包括:执行状态、执行时间或者优先级中的一种或者两种以上的组合。
可选的,实现对异步任务的重试,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括执行状态,并且其初始取值为“未执行”,异步任务首次执行后,若异步任务执行失败,在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,将所述执行状态设置为“执行失败可重试”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间,所述检索参数中的执行状态的取值为“执行失败可重试”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态的取值包括“执行失败可重试”且执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
可选的,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
可选的,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败不可重试”或者“任务取消”。
可选的,所述调度参数中包括重试次数;所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的重试次数减1;
若所述重试次数减1后的值大于零,则将执行状态的取值设置为“执行失败可重试”;并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值;
若所述重试次数减1后的值等于零,则将执行状态的取值设置为“执行失败不可重试”或者“任务取消”。
可选的,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行结果为执行异常,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
可选的,实现对异步任务的定时,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括执行时间,并且根据需要执行该异步任务的时间点设置该执行时间参数的取值;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
可选的,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要定时执行的异步任务的任务类型取值为“定时任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“定时任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“定时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的任务。
可选的,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
可选的,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
可选的,根据需要执行该异步任务的时间点设置该执行时间参数的取值的方式,是在该异步任务的产生时间点加上需要延迟的时间长度后,获得该异步任务的执行时间参数的取值。
可选的,实现对异步任务的循环,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述需要实现循环执行的异步任务的调度参数包括执行时间以及自定义参数,所述执行时间的取值根据该需要实现循环执行的异步任务的首次执行时间设定,所述自定义参数的取值根据该调度任务的一个执行周期的时间长度设置;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务;
所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,不论在上述步骤中该异步任务的执行结果为执行成功、执行失败还是执行异常,均将该异步任务的执行时间修改为当前系统时间和加上所述自定义参数提供的执行周期的时间长度的取值。
可选的,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要执行的异步任务的任务类型取值为“循环任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“循环任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“循环任务”的异步任务,然后再在其中进一步进行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务。
可选的,实现对异步任务的超时执行,需要采取以下步骤:所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述需要实现超时执行的异步任务的调度参数包括执行时间、自定义参数以及执行状态,所述执行时间的取值根据该需要执行该异步任务的时间设定,所述自定义参数的取值根据该调度任务的预定的重试周期的时间长度设置,所述执行状态的初始取值为“未执行”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间,设置所述检索参数中执行状态为“未执行”或者“执行失败可重试”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务;
在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,若在上述步骤中该异步任务的执行结果为执行成功,则将该异步任务的执行状态设置为“执行成功”;若在上述步骤中该异步任务的执行结果为执行失败或者执行异常,则将所述执行状态设置为“执行失败可重试”,并将所述执行时间设置为系统当前时间加上所述自定义参数提供的预定的重试周期的时间长度的取值。
可选的,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要执行的异步任务的任务类型取值为“超时任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“超时任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“超时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务。
可选的,在所述执行所述检索获得的符合检索参数要求的异步任务的步骤之后,还包括:
获取执行所述异步任务的时间和/或执行结果;
记录执行所述异步任务的时间和/或执行结果,并保存在异步任务数据库中。
可选的,实现对异步任务的调级,需要采取以下步骤:
在所述为各个待调度的异步任务设置调度参数的取值的步骤中,需要实现调级的异步任务的调度参数包括优先级,并且根据需要选择相应的优先级级别作为初始值;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的优先级的取值;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中优先级的取值与所述检索参数中优先级的具体取值相同的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
可选的,在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,若记录执行所述异步任务的时间,则判断多次执行所述异步任务的平均时间是否处于规定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值;若记录执行所述异步任务的执行结果,则判断多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例是否处于固定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值。
可选的,在所述调整所述异步任务的优先级参数的取值的步骤之后,包括:
对所保存的执行所述异步任务的时间和/或执行结果清零。
可选的,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括子名称,该子名称关联该异步任务需要使用的特定外部资源;
在所述执行所述检索获得的符合检索参数要求的异步任务的步骤之前,包括:
检索出的所述待调度的异步任务的子名称的取值。
可选的,实现对异步任务的隔离,需要采取以下步骤:
判断与所述待调度的异步任务的子名称关联的外部资源是否正常;
若是,则进行所述执行所述检索获得的符合检索参数要求的异步任务的步骤;
若否,则停止调取和执行所述异步任务。
可选的,所述外部资源的异常包括:
需要使用的服务器宕机导致响应超时或者不能为所述异步任务分配线程执行所述异步任务。
可选的,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括名称以及子名称,所述名称是根据该条异步任务的执行时的内容概括出的该条异步任务易于理解的字符串,所述子名称关联该异步任务需要使用的特定外部资源;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之前,包括:
获取检索出的所述待调度的异步任务的名称以及子名称的取值。
可选的,实现对异步任务的暂停,需要采取以下步骤:
判断所述待调度的异步任务的名称以及子名称关联的外部资源是否在预设的暂停列表中;
若是,则获取当前系统时间;
根据当前系统时间和预设的时间间隔,获取所述待调度的异步任务的推迟时间;
跳过所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤,将在异步任务数据库存储的待调度的异步任务的执行时间的取值修改为所述待调度的异步任务的推迟时间。
可选的,所述待调度的异步任务具有根据所述调度参数建立的异步任务索引。
可选的,所述异步任务索引以执行时间为第一索引词。
相应的,本申请还提供了一种异步任务的调度装置,所述异步任务的调度装置包括:调度参数设置单元、检索参数设置单元、检索单元以及执行单元;
所述调度参数设置单元,用于为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;
所述检索参数设置单元,用于根据调度需求设置相应的检索参数;
所述检索单元,用于根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;
所述执行单元,用于调取并执行检索获得的符合检索参数要求的异步任务。
可选的,所述异步任务的调度装置,还包括:调度参数修改单元;
所述调度参数修改单元,用于在所述调取并执行所述检索获得的符合检索参数要求的异步任务之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
可选的,所述调度参数设置单元,具体用于设置异步任务的执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
可选的,所述检索参数设置单元,具体用于设置执行状态、执行时间或者优先级中的一种或者两种以上的组合。
此外,本申请还提供了一种电子设备,所述电子设备包括:
显示器;
处理器;
存储器,用于存储异步任务的调度程序,所述程序在被所述处理器读取执行时,执行如下操作:为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;根据调度需求设置相应的检索参数;根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;调取并执行检索获得的符合检索参数要求的异步任务。
此外,本申请还提供了一种异步任务的调度系统,所述异步任务的调度系统包括:任务执行服务器、异步任务数据库以及调度组件;
所述任务执行服务器,用于生成执行待调度的异步任务的线程,每个线程执行为其分配的异步任务;
所述异步任务数据库,用于存储待调度的异步任务以及各个所述待调度异步任务的调度参数;
所述调度组件,用于根据调度需求设置的检索参数,从所述异步任务数据库中调取调度参数与所述检索参数相匹配的异步任务,并将该异步任务分配给所述任务执行服务器中的相应线程。
可选的,所述异步任务的调度系统,包括规则配置组件,用于根据外部输入配置反应调度需求的检索参数,并提供给所述调度组件。
可选的,所述异步任务的调度系统,包括外部采集接口,用于从生成异步任务的业务系统中采集异步任务。
可选的,所述异步任务的调度系统,包括数据库访问层,用于为所述调度组件和所述外部采集接口提供访问所述异步任务数据库的接口。
与现有技术相比,本申请具有以下优点:
本申请提供的一种异步任务的调度方法、装置、系统以及电子设备,通过为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;根据调度需求设置相应的检索参数;根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;调取并执行检索获得的符合检索参数要求的异步任务。所述技术方案解决了执行节点与数据库交互频繁、不能保证任务调度的顺序和需求,从而导致异步任务调度的准确性较低使异步任务的执行缓慢的问题。通过本方法,可以通过简单的参数设置,实现对异步任务的多种调度方式。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来将,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的实施例提供的异步任务的调度方法的流程图;
图2示出了根据本申请的实施例提供的修改该异步任务的调度参数的流程图;
图3示出了根据本申请的实施例提供的异步任务的调度装置的示意图;
图4示出了根据本申请的实施例提供的异步任务的调度系统的示意图;
图5示出了根据本申请的实施例提供的电子设备的示意图。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面结合附图和具体实施方式对本申请进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。
本申请的实施例提供了一种异步任务的调度方法、一种异步任务的调度装置以及一种异步任务的调度系统,本申请的实施例同时提供了一种电子设备。在下面的实施例中逐一进行详细说明。
在详细描述本实施例的具体步骤之前,先对本技术方案涉及的异步任务作简要说明。
异步任务是指任务被创建之后,并不严格要求立即执行,业务主流程不需要等待任务执行的结果就可以继续执行的任务。异步任务执行完成后,才需要将结果反馈给主流程,且异步任务执行的成败,一般不影响主流程的执行。
本申请的实施例提供了一种异步任务的调度方法。所述异步任务的调度方法实施例如下:
请参考图1,其示出了根据本申请的实施例提供的异步任务的调度方法的流程图。
所述异步任务的调度方法方法包括:
步骤S101,为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数。
在本实施例中,所述为各个待调度的异步任务设置调度参数,包括:执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
具体的,所述异步任务是以数据库表的形式存储在异步任务数据库中,该数据库表以上述八个调度参数作为字段描述一条具体的异步任务的执行特性,同时存储需要执行的异步任务代码本身。
为了便于理解,下面举一个具体的例子说明本申请实施例提供的异步任务,异步任务代码本身在此忽略不计;该异步任务的调度参数如下表所示:
具体详见表一:
通过表一可见,所述异步任务包括:task_type(名称)、sub_task_type(子名称)、params(自定义参数)、statue(执行状态)、plan_time(执行时间)、rode_count(重试次数)、type(任务类型)以及priority(优先级)八个字段,每个字段对应一个调度参数。下面对每个字段做详细说明。
所述数据库表中的名称字段是根据该条异步任务的执行时的内容概括出的该条异步任务易于理解的字符串,例如订单a即该异步任务为执行订单a的异步任务。
所述数据库表中的子名称字段是描述该异步任务关联的外部资源的参数,所述外部资源是执行该异步任务的具体服务器,例如服务器X。
所述数据库表中的自定义参数字段是针对该异步任务执行特殊操作时,计算对应执行的操作的执行时间的参数;例如:所述自定义参数可以是延迟的时间长度、执行周期的时间长度或者预定的重试周期的时间长度。
所述数据库表中的执行状态字段是描述该异步任务当前状态的参数,异步任务可能的所述执行状态至少包括:“未执行”、“执行失败可重试”、“执行失败不可重试”、“任务取消”和“执行成功”五种执行状态。具体保存在所述数据库表中的执行状态是该异步任务的真实执行状态的标识符,即:执行状态的标识符。执行状态的标识符与真实的执行状态之间具有映射关系,例如:标识符为0对应该异步任务的执行状态为“未执行”;标识符为1对应该异步任务的执行状态为“执行成功”;标识符为2对应该异步任务的执行状态为“执行失败可重试”;标识符为-2对应该异步任务的执行状态为“执行失败不可重试”;标识符为-1对应该异步任务的执行状态为“任务取消”。
所述数据库表中的执行时间字段是描述该异步任务执行时的时间参数。例如:在上述例子中执行时间是long类型的毫秒数1425712218820。
所述数据库表中的重试次数字段是描述该异步任务还可以进行重试操作次数的参数。
所述数据库表中的任务类型字段是描述该异步任务执行的特殊操作的类型,所述任务类型至少包括:普通、定时、循环和超时四种任务类型。
具体保存在所述数据库表中的任务类型是该异步任务的任务类型的标识符。任务类型的标识符与异步任务的任务类型之间具有映射关系,例如:标识符为0对应该异步任务的任务类型为普通任务;标识符为1对应该异步任务的任务类型为定时任务;标识符为2对应该异步任务的任务类型为循环任务;标识符为3对应该异步任务的任务类型为超时任务。
所述数据库表中的优先级字段是描述该异步任务执行频率和周期的参数,优先级由0-9级逐级递减,高优先级的异步任务执行的更加频繁,低优先级的异步任务执行频率较低。
需要说明的是,上述给出的例子仅仅是示意性的,在具体实施中,通过调度参数的设置以及不同字段值的取值组合,可以描述异步任务的不同执行特性。
此外,作为一种完善的实施方式,所述数据库表还可以包括如下字段,创建时间、修改时间、异步任务标识符、分表标识符、环境信息、请求方信息等,
在此不再赘述。
在本实施例中,所述异步任务来自具体产生异步任务的业务系统,并通过任务采集接口从业务系统中采集获得。为各个待调度的异步任务设置调度参数的取值,可以采用如下方式实现:根据在客户端的显示屏幕中的具体页面中填写的数据信息,将所述数据信息转换为对应的调度参数,并根据所述调度参数生成对应的待调度的异步任务。
步骤S103,根据调度需求设置相应的检索参数。
在本实施例中,所述检索参数,包括:执行状态、执行时间或者优先级中的一种或者两种以上的组合。
可以理解的,由于所述待调度的异步任务是以数据库表的形式存储在异步任务数据库中,所以从所述异步任务数据库中检索待调度的异步任务时,需要按照调度需求使索引参数对应数据库表中的调度参数,并通过设置检索参数的取值,获取对应的具体待调度的异步任务。
设置检索参数是为了根据需要从异步任务数据库中提取符合要求的异步任务。在一个分布式系统中,对于一组检索参数,可以对应有一个或者多个用于执行异步任务的进程,这些进程根据检索参数在所述异步任务数据库中捞取异步任务并执行。例如,执行状态字段的取值为“执行失败可重试”、执行时间小于当前系统时间,以及优先级字段的取值为0,就是一组具体的检索参数,可以作为从异步任务数据库中检索异步任务的依据。通过设置检索参数中执行状态、执行时间和优先级的不同取值的组合,可以获取满足不同调度需求的待调度的异步任务。当然,上述三种检索参数可以只选择其中一个,或者任意两个检索参数组合,以及选择全部三个检索参数。
确定一组检索参数后,代入数据库查询语句SQL进行实际检索。在本实施例中,基于以数据库表的形式存储在异步任务数据库中的所述待调度的异步任务,定义的数据库查询语句(sql)如下:
select*from schedule_task
where
status in(#statusList#)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(#statusList#)是从status(执行状态)字段中检索具体取值为(#statusList#)的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为#priority#的异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order by plan_time是将异步任务按照各自的执行时间进行排序。(#statusList#)和#priority#即为所述根据调度需求设置的相应的检索参数,可以通过预先输入对应各字段的具体取值,也可以是默认取值。
在本实施例中,若设置所述检索参数中的执行时间的取值为当前系统时间,所述检索参数中的状态的取值为“执行失败可重试”,优先级为任意优先级,则对应的数据库查询语句(sql)如下:
select*from schedule_task
where
status in(2)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(2)是从status(执行状态)字段中检索具体取值为(2)的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为任意数值的异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order byplan_time是将异步任务按照各自的执行时间进行排序。例如:当前系统时间为2015年3月7日15点17分42秒,则获取plan_time的取值小于等于14257126620000的异步任务。
步骤S105,根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务。
在本实施例中,所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务,可以采用如下方式实现:根据步骤S103中设置的所述检索参数的具体取值,从异步任务数据库存储的待调度的异步任务中,检索调度参数中状态的取值包括“执行失败可重试”且执行时间的取值小于等于当前系统时间的待调度的异步任务。
需要说明的是,在本步骤中检索出的异步任务是该异步任务在首次执行任务失败后,将其执行状态的初始取值“未执行”修改为“执行失败可重试”的异步任务。
步骤S107,调取并执行检索获得的符合检索参数要求的异步任务。
在本实施例中,所述调取并执行检索获得的符合检索参数要求的异步任务,可以采用如下方式实现:调取并对步骤S105中检索获得的与所述检索参数相匹配的异步任务执行重试操作。
在具体实施时,为所述检索获得的符合检索参数要求的异步任务分配执行所述异步任务的线程,在线程接收到被分配的所述异步任务后,执行所述异步任务,即对所述异步任务执行重试操作。
需要说明的是,进程通常被业界定义为一个正在运行的程序实例,它是资源分配的基本单位。进一步,为了适应各种复杂的并发环境,获得更快的切换速度,引入了多线程的处理机制。线程是调度的基本单位,同时进程拥有足够的分离的上下文来维护各自的控制线程,从而一个进程可以支持多个线程。
此外,线程在执行所述异步任务后,还需同步返回计算结果。作为一种完善的实施方式,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数,以便反映该异步任务的最新状态,以及对以后的执行方式进行准确的描述。
在本实施例中,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,具体包括步骤S108-1至S108-3,下面结合图2作进一步说明。
请参考图2,其示出了根据本申请的实施例提供的修改该异步任务的调度参数的流程图。
步骤S108-1,若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,在本步骤中,是将在异步任务数据库存储的所述异步任务的执行状态的取值修改为1,即将执行状态字段中的具体取值修改为1。
步骤S108-2,若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则根据具体情况,将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”、“执行失败不可重试”或者“任务取消”。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,在本步骤中,若该异步任务的执行状态为“执行失败可重试”,则将对应status字段中的具体取值修改为2;若该异步任务的执行状态为“执行失败不可重试”,则将status字段的具体取值修改为-2;若该异步任务的执行状态为“任务取消”,则将对应status字段中的具体取值修改为-1。具体修改为哪一种执行状态,可以根据预先的设定,或者查询该异步任务的其他相关调度参数确定。
在许多情况下,需要给执行失败的异步任务重试的机会,但是又需要避免一个异步任务在执行失败后频繁的重试占用进程资源,本实施例的技术方案提供了一种优选实施方式,以平衡上述情况。该优选方式具体包括如下步骤:
首先,根据该异步任务的重要程度或者其它条件为其设置重试次数;
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的重试次数减1;
若所述重试次数减1后的值大于零,则将执行状态的取值设置为“执行失败可重试”;并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值;
若所述重试次数减1后的值等于零,则将执行状态的取值设置为“执行失败不可重试”。
例如:所述异步任务的初始重试次数为5次,在该异步任务每进行一次重试操作且执行失败后,将在异步任务数据库存储的所述异步任务的重试次数减1,在所述重试次数减1后的值等于零时,将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败不可重试”,即:将status字段中的具体取值修改为-2。
在上述“执行失败可重试”的情况下,如果立刻重试,可能会由于导致执行失败的情况尚未结束,导致再次执行失败,为了避免此种情况,一般需要设置足够的重试时间间隔。为此,可以所述根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值,具体实现方式为:获取当前系统时间和该异步任务的自定义参数中的预设的重试时间间隔,将当前系统时间与预设的重试时间间隔转换为long类型的毫秒数,并计算两者之和,作为所述待调度的异步任务的新的执行时间的取值,并修改异步任务数据库存储的所述异步任务的执行时间的取值。
此外,所述异步任务在多次重试操作之后计算结果均为执行失败后,用户可以主动取消该异步任务,若用户取消所述异步任务,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“任务取消”,即:将status字段中的具体取值修改为-1。
步骤S108-3,若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行异常,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
在本步骤中,所述执行异常,包括:该异步任务在进程中的响应时间超时,或者其他原因无法返回计算结果。
所述将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值,可以采用如下方式实现:由于执行状态的标识符与真实的执行状态之间具有映射关系,将该异步任务的执行状态修改为“执行失败可重试”,即将对应status字段中的具体取值修改为2;并获取当前系统时间和该异步任务的自定义参数中的预设的重试时间间隔,将当前系统时间与预设的重试时间间隔转换为long类型的毫秒数,并计算两者之和,作为所述待调度的异步任务的新的执行时间的取值,并修改异步任务数据库存储的所述异步任务的执行时间的取值。
以上描述了本实施例实现对异步任务调度的通用方法,以及使用该调度方法实现异步任务的重试执行的方案。采用本实施例提供的对异步任务调度的通用方法,通过对调度参数取值与检索参数取值的设置,以及根据执行情况以及异步任务的任务类型等情况在异步任务执行后对异步任务的调度参数的修改方式,可以实现对异步任务的多种调度方式。以下结合上述异步任务调度方法,对可能实现的常用调度方式以及实现调度方式需要的参数取值设置以及执行后的调度参数的修改方式等具体实现过程予以详细说明。以下提供的异步任务调度方式包括定时执行、循环执行、超时执行、适时优先级调整、以及实现对异步任务的隔离等。当然,通过合理选择调度参数、检索参数以及执行后的调度参数修改方式等,本实施例提供的异步任务的调度方法,还可以根据需求实现其他各种调度方式,在此无法完全例举和说明。
所述“定时执行”调度方式采用以下方式实现。
在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要定时执行的异步任务的任务类型取值为“定时任务”。
需要说明的是,由于任务类型的标识符与异步任务的任务类型之间具有映射关系,任务类型的取值为“定时任务”,对应该异步任务的任务类型标识符为1。
在步骤S103根据调度需求设置相应的检索参数中,设置所述检索参数中的执行时间的取值为当前系统时间。
在本实施例中,若设置所述检索参数中的执行时间的取值为当前系统时间,则对应的数据库查询语句如下:
select*from schedule_task
where
status in(#statusList#)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(#statusList#)是从status(执行状态)字段中检索具体取值为任意数值的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为任意数值异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order by plan_time是将异步任务按照各自的执行时间进行排序。例如:当前系统时间为2015年3月7日15点17分42秒,则获取plan_time的取值小于等于14257126620000的异步任务。
为了使检索参数能够准确获取存储在异步任务数据库中的定时任务,本实施例的技术方案提供了一种优选实施方式,在优选方式下,所述根据调度需求设置相应的检索参数的步骤中,还需在所述检索参数中设置任务类型,且该任务类型的取值为“定时任务”。
可以理解的,所述待调度的异步任务具有根据所述调度参数建立的异步任务索引,所述异步任务索引以执行时间为第一索引词。
在步骤S105中,根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务,可以采用如下方式实现:根据步骤S103中设置的所述检索参数的具体取值,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务。
需要说明的是,在本步骤中检索出的异步任务是需要在当前时间下执行的异步任务,所述异步任务的执行时间的取值是在步骤S101中根据需要执行该异步任务的时间点设置的。
可以理解的,所述根据需要执行该异步任务的时间点设置该执行时间参数的取值的方式,是在该异步任务的产生时间点加上需要延迟的时间长度后,获得该异步任务的执行时间参数的取值。
由于在步骤S103中还设置所述检索参数中的任务类型的取值为“定时任务”,在优选方式下,执行定时任务的进程在所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤之前,先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为1的异步任务,然后再在检索出的异步任务中执行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤。
在步骤S107中,所述调取并执行检索获得的符合检索参数要求的异步任务,可以采用如下方式实现:调取并对步骤S105中检索获得的与所述检索参数相匹配的异步任务执行操作。
在具体实施时,为所述检索获得的符合检索参数要求的异步任务分配执行所述异步任务的线程,在线程接收到被分配的所述异步任务后,执行所述异步任务,即对所述异步任务执行定时操作。
此外,线程在执行所述异步任务后,还需同步返回计算结果。作为一种完善的实施方式,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
在本实施例中,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,具体包括如下步骤:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务返回的计算结果为执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,在本步骤中,是将在异步任务数据库存储的所述异步任务的执行状态的取值修改为1,即将执行状态字段中的具体取值修改为1。
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务返回的计算结果为执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,将在异步任务数据库存储的所述异步任务的执行状态的取值修改为2,该异步任务的执行状态为“执行失败可重试”就是将执行状态字段中的具体取值修改为2;并获取当前系统时间和该异步任务的自定义参数中的预设的重试时间间隔,将当前系统时间与预设的重试时间间隔转换为long类型的毫秒数,并计算两者之和,作为所述待调度的异步任务的新的执行时间的取值,并修改异步任务数据库存储的所述异步任务的执行时间的取值。
以下说明实现循环执行调度方式的具体方法。
在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要定时执行的异步任务的任务类型取值为“循环任务”。
由于任务类型的标识符与异步任务的任务类型之间具有映射关系,任务类型的取值为“循环任务”,对应该异步任务的任务类型标识符为2。
在步骤S103根据调度需求设置相应的检索参数中,设置所述检索参数中的执行时间的取值为当前系统时间。
在本实施例中,若设置所述检索参数中的执行时间的取值为当前系统时间,则对应的数据库查询语句如下:
select*from schedule_task
where
status in(#statusList#)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(#statusList#)是从status(执行状态)字段中检索具体取值为任意数值的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为任意数值异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order by plan_time是将异步任务按照各自的执行时间进行排序。例如:当前系统时间为2015年3月7日15点17分42秒,则获取plan_time的取值小于等于14257126620000的异步任务。
为了使检索参数能够准确获取存储在异步任务数据库中的循环任务,本实施例的技术方案提供了一种优选实施方式,在优选方式下,所述根据调度需求设置相应的检索参数的步骤中,还需在所述检索参数中设置任务类型,且该任务类型的取值为“循环任务”。
在步骤S105中,根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务,可以采用如下方式实现:根据步骤S103中设置的所述检索参数的具体取值,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务。
在本步骤中检索出的异步任务是需要在当前时间下执行的异步任务,所述异步任务的执行时间的取值是在步骤S101中根据需要执行该异步任务的时间点设置的。
可以理解的,需要实现循环执行的异步任务的调度参数包括执行时间以及自定义参数,所述执行时间的取值根据该需要实现循环执行的异步任务的首次执行时间设定,所述自定义参数的取值根据该调度任务的一个执行周期的时间长度设置。
由于在步骤S103中还设置所述检索参数中的任务类型的取值为“循环任务”,在优选方式下,执行循环任务的进程在所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤之前,先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为2的异步任务,然后再在检索出的异步任务中执行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤。
在步骤S107中,所述调取并执行检索获得的符合检索参数要求的异步任务,可以采用如下方式实现:调取并对步骤S105中检索获得的与所述检索参数相匹配的异步任务并执行。
在具体实施时,为所述检索获得的符合检索参数要求的异步任务分配执行所述异步任务的线程,在线程接收到被分配的所述异步任务后,执行所述异步任务,即对所述异步任务执行循环操作。
此外,线程在执行所述异步任务后,还需同步返回计算结果。作为一种完善的实施方式,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
在本实施例中,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,具体包括如下步骤:
在所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,不论该异步任务返回的计算结果为执行成功、执行失败还是执行异常,均将该异步任务的执行时间修改为当前系统时间和加上所述自定义参数提供的执行周期的时间长度的取值。
所述将该异步任务的执行时间修改为当前系统时间和加上所述自定义参数提供的执行周期的时间长度的取值,可以采用如下方式实现:获取执行该异步任务时的系统时间和该异步任务的自定义参数中的执行周期的时间长度的取值,将执行该异步任务时的系统时间和该异步任务的自定义参数中的执行周期的时间长度的取值转换为long类型的毫秒数,并计算两者之和,作为所述待调度的异步任务的新的执行时间的取值,并修改异步任务数据库存储的所述异步任务的执行时间的取值。
这样,通过自定义参数的取值设置,以及异步任务执行后对执行时间的修改,就可以实现对该异步任务的固定周期的循环执行。
以下对所述“超时执行”调度的实现方式进行说明,该调度方式用于实现执行失败后要求在较短时间内重新执行的异步任务的调度。
在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述各个待调度的异步任务的调度参数还包括任务类型,并且设置需要定时执行的异步任务的任务类型取值为“超时任务”。
需要说明的是,任务类型的标识符与异步任务的任务类型之间具有映射关系,任务类型的取值为“超时任务”对应该异步任务的任务类型标识符为3。
在步骤S103根据调度需求设置相应的检索参数中,设置所述检索参数中的执行时间的取值为当前系统时间,所述检索参数中的执行状态为“未执行”或者“执行失败可重试”。
在本实施例中,若设置所述检索参数中的执行时间的取值为当前系统时间,则对应的数据库查询语句如下:
select*from schedule_task
where
status in(#statusList#)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(#statusList#)是从status(执行状态)字段中检索具体取值为任意数值的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为任意数值异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order by plan_time是将异步任务按照各自的执行时间进行排序。例如:当前系统时间为2015年3月7日15点17分42秒,则获取plan_time的取值小于等于14257126620000的异步任务。
为了使检索参数能够准确获取存储在异步任务数据库中的超时任务,本实施例的技术方案提供了一种优选实施方式,在优选方式下,所述根据调度需求设置相应的检索参数的步骤中,还需在所述检索参数中设置任务类型,且该任务类型的取值为“超时任务”。
在步骤S105中,根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务,可以采用如下方式实现:根据步骤S103中设置的所述检索参数的具体取值,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务。
需要说明的是,在本步骤中检索出的异步任务是需要在当前时间下执行的异步任务,所述异步任务的执行时间的取值是在步骤S101中根据需要执行该异步任务的时间点设置的。
可以理解的,需要实现超时执行的异步任务的调度参数包括执行时间、自定义参数以及执行状态,所述执行时间的取值根据该需要执行该异步任务的时间设定,所述自定义参数的取值根据该调度任务的预定的重试周期的时间长度设置,所述执行状态的初始取值为“未执行”。
由于在步骤S103中还设置所述检索参数中的任务类型的取值为“超时任务”,在优选方式下,执行超时任务的进程在所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤之前,先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为3的异步任务,然后再在检索出的异步任务中执行所述检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务的步骤。
在步骤S107中,所述调取并执行检索获得的符合检索参数要求的异步任务,可以采用如下方式实现:调取并对步骤S105中检索获得的与所述检索参数相匹配的异步任务执行操作。
在具体实施时,为所述检索获得的符合检索参数要求的异步任务分配执行所述异步任务的线程,在线程接收到被分配的所述异步任务后,执行所述异步任务,即对所述异步任务执行超时操作。
此外,线程在执行所述异步任务后,还需同步返回计算结果。作为一种完善的实施方式,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
在本实施例中,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,具体包括如下步骤:
若在上述步骤中该异步任务的执行结果为执行成功,则将该异步任务的执行状态设置为“执行成功”。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,在本步骤中,是将在异步任务数据库存储的所述异步任务的执行状态的取值修改为1。
若在上述步骤中该异步任务的执行结果为执行失败或者执行异常,则将所述执行状态设置为“执行失败可重试”,并将所述执行时间设置为系统当前时间加上所述自定义参数提供的预定的重试周期的时间长度的取值。
需要说明的是,由于执行状态的标识符与真实的执行状态之间具有映射关系,将在异步任务数据库存储的所述异步任务的执行状态的取值修改为2,该异步任务的执行状态为“执行失败可重试”就是将执行状态字段中的具体取值修改为2;并获取执行该异步任务时的系统时间和该异步任务的自定义参数中预定的重试周期的时间长度的取值,将执行该异步任务时的系统时间和该异步任务的自定义参数中预定的重试周期的时间长度的取值转换为long类型的毫秒数,并计算两者之和,作为所述待调度的异步任务的新的执行时间的取值,并修改异步任务数据库存储的所述异步任务的执行时间的取值。
以下对所述“调级执行”调度的实现方式进行说明,该方式用于调整异步任务的执行频率。
在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述各个待调度的异步任务的调度参数包括优先级,并且根据需要选择相应的优先级级别作为初始值。所述优先级级别包括0-9级且逐级递减,高优先级的异步任务执行的更加频繁,低优先级的异步任务执行频率较低。
在步骤S103所述根据调度需求设置相应的检索参数中,设置所述检索参数中的优先级的取值。
在本实施例中,若设置所述检索参数中的优先级的取值,则对应的数据库查询语句如下:(以优先级为1的异步任务为例)
select*from schedule_task
where
status in(1)
priority=#priority#
plan_time<=now()
order by plan_time
其中,select*from schedule_task是选择从名称为schedule_task的数据库表中检索异步任务;status in(1)是从status(执行状态)字段中检索具体取值为(1)的异步任务;priority=#priority#是从priority(优先级)字段中检索具体取值为任意数值异步任务;plan_time<=now()是从plan_time(执行时间)字段中检索具体取值小于等于当前系统时间的异步任务;order byplan_time是将异步任务按照各自的执行时间进行排序。
在步骤S105所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务中,可以采用如下方式实现:根据步骤S103中设置的所述检索参数的具体取值,从异步任务数据库存储的待调度的异步任务中,检索调度参数中优先级的取值与所述检索参数中优先级的具体取值相同的待调度的异步任务。
需要说明的是,在本步骤中检索出的异步任务是在步骤S101中根据需要选择相应的优先级级别作为初始值与设置的所述检索参数中的优先级的取值相同的异步任务。
在步骤S107所述调取并执行检索获得的符合检索参数要求的异步任务,可以采用如下方式实现:调取并对步骤S105中检索获得的与所述检索参数相匹配的异步任务执行操作。
在具体实施时,为所述检索获得的符合检索参数要求的异步任务分配执行所述异步任务的线程,在线程接收到被分配的所述异步任务后,执行所述异步任务,即对所述异步任务执行调级操作。
为了提高异步任务的执行效率,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在所述执行所述检索获得的符合检索参数要求的异步任务的步骤之后,包括:
获取执行所述异步任务的时间和/或执行结果;
记录执行所述异步任务的时间和/或执行结果,并保存在异步任务数据库中。
所述执行所述异步任务的时间,是指:在线程中开始执行该异步任务至该异步任务执行完毕返回计算结果的时间段。
此外,线程在执行所述异步任务后,还需同步返回计算结果。作为一种完善的实施方式,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
在本实施例中,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,具体包括如下步骤:
若记录执行所述异步任务的时间,则判断多次执行所述异步任务的平均时间是否处于规定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值;若记录执行所述异步任务的执行结果,则判断多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例是否处于固定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值。
例如:异步任务执行时发生失败的次数为3次,记录的该异步任务的执行结果有9次,则该异步任务发生失败或者异常的比例为30%,固定的阈值区间为25%-30%。
需要说明的是,所述规定的阈值区间是指在某一优先级下,异步任务执行时的预估时间或预估时间段,不同的优先级对应不同的规定的阈值区间;所述固定的阈值区间是指在某一优先级下,预设的异步任务执行时发生失败或者异常的次数所占该异步任务执行总次数的比例的范围,不同的优先级对应不同的固定的阈值区间。
可以理解的,若多次执行所述异步任务的平均时间超过规定的阈值区间,则将所述异步任务的优先级参数的取值加一,将在异步任务数据库存储的所述异步任务的优先级的取值修改为加一后的取值;若多次执行所述异步任务的平均时间小于规定的阈值区间,则将所述异步任务的优先级参数的取值减一,将在异步任务数据库存储的所述异步任务的优先级的取值修改为减一后的取值;若多次执行所述异步任务的平均时间处于规定的阈值区间内,则不修改异步任务数据库存储的所述异步任务的优先级的取值;同样的道理,多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例超过固定的阈值区间,则将所述异步任务的优先级参数的取值加一,将在异步任务数据库存储的所述异步任务的优先级的取值修改为加一后的取值;多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例小于固定的阈值区间,则将所述异步任务的优先级参数的取值减一,将在异步任务数据库存储的所述异步任务的优先级的取值修改为减一后的取值;多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例处于固定的阈值区间内,则不修改异步任务数据库存储的所述异步任务的优先级的取值。
为了使每次调整优先级之后的异步任务减少再次调整优先级时的误差,本实施例的技术方案提供了一种优选实施方式,在优选方式下,在所述调整所述异步任务的优先级参数的取值之后,包括:对所保存的执行所述异步任务的时间和/或执行结果清零。
所述“隔离执行”调度方式采用以下方式实现。
考虑到外部资源在执行待调度的异步任务时,因为某些原因使外部资源发生异常,无法执行所述待调度的异步任务时,为了保障其他外部资源能够正常执行该异步任务,在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述调度参数包括子名称,该子名称关联该异步任务需要使用的特定外部资源。
由于在步骤S101中还设置所述调度参数中的子名称的取值,在执行步骤S107之前,还需检索出所述待调度的异步任务的子名称的取值。
在所述检索出所述待调度的异步任务的子名称的取值之后,需要对所述待调度的异步任务的子名称进行判断是否对异步任务执行隔离操作,具体包括如下步骤:
判断与所述待调度的异步任务的子名称关联的外部资源是否正常;
若是,则进行所述执行所述检索获得的符合检索参数要求的异步任务的步骤;
若否,则对停止调取和执行所述异步任务。
需要说明的是,对停止调取和执行所述异步任务,说明与所述待调度的异步任务的子名称关联的外部资源发生了异常。所述外部资源异常包括:需要使用的服务器宕机导致响应超时或者不能为所述异步任务分配线程执行所述异步任务。
所述“暂停执行”调度方式采用以下方式实现。
考虑到某些异步任务在生成之后,因为某些原因暂时不需要执行,可以基于所述待调度的异步任务的调度参数中的子名称执行暂停操作。所述暂停操作是一种主动使异步任务进行延迟执行的操作,在步骤S101为各个待调度的异步任务设置调度参数的取值中,所述调度参数包括名称以及子名称,所述名称是根据该条异步任务的执行时的内容概括出的该条异步任务易于理解的字符串,所述子名称关联该异步任务需要使用的特定外部资源;
由于在步骤S101中还设置所述调度参数中的名称以及子名称的取值,在执行步骤S107之前,还需检索出所述待调度的异步任务的名称以及子名称的取值。
在所述检索出所述待调度的异步任务的名称以及子名称的取值之后,需要对所述待调度的异步任务的名称以及子名称进行判断是否对异步任务执行暂停操作,具体包括如下步骤:
判断所述待调度的异步任务的名称以及子名称关联的外部资源是否在预设的暂停列表中;
若是,则获取当前系统时间;
根据当前系统时间和预设的时间间隔,获取所述待调度的异步任务的推迟时间;
跳过所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤,将在异步任务数据库存储的待调度的异步任务的执行时间的取值修改为所述待调度的异步任务的推迟时间。
需要说明的是,所述异步任务在从异步任务数据库中检索出来后,保持未执行的状态并根据当前系统时间加上预设的时间间隔获取该异步任务的下次执行时间的取值,并按照该异步任务的下次执行时间的取值修改在异步任务数据库中存储的该异步任务的执行时间,达到修改后的执行时间时,若未取消该任务的暂停操作,则按照预设的时间间隔再次修改该异步任务的执行时间,直至取消暂停操作。例如:预设的时间间隔为30分钟。
在上述的实施例中,提供了一种异步任务的调度方法,与上述异步任务的调度方法相对应的,本申请还提供了一种异步任务的调度装置。由于装置的实施例基本相似于方法的实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。所述异步任务的调度方法实施例如下:
请参考图3,其示出了根据本申请的实施例提供的异步任务的调度装置的示意图。
所述异步任务的调度装置,包括:调度参数设置单元301、检索参数设置单元303、检索单元305以及执行单元307;
所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;
所述检索参数设置单元303,用于根据调度需求设置相应的检索参数;
所述检索单元305,用于根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;
所述执行单元307,用于调取并执行检索获得的符合检索参数要求的异步任务。
可选的,所述异步任务的调度装置,还包括:调度参数修改单元;
所述调度参数修改单元,用于在所述调取并执行所述检索获得的符合检索参数要求的异步任务之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
可选的,所述调度参数设置单元301,具体用于设置异步任务的执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
可选的,所述检索参数设置单元303,具体用于设置执行状态、执行时间或者优先级中的一种或者两种以上的组合。
可选的,若实现对异步任务的重试,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,所述调度参数包括执行状态,并且其初始取值为“未执行”;
所述调度参数修改单元,用于异步任务首次执行任务失败后,将所述执行状态设置为“执行失败可重试”;
所述检索参数设置单元303,用于设置所述检索参数中的执行时间的取值为当前系统时间,所述检索参数中的状态的取值为“执行失败可重试”;
所述检索单元305,用于从异步任务数据库存储的待调度的异步任务中,检索调度参数中状态的取值包括“执行失败可重试”且执行时间的取值小于等于当前系统时间的待调度的异步任务;
所述执行单元307,用于调取并执行上述步骤获得的异步任务。
可选的,所述调度参数修改单元,用于若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
可选的,所述调度参数修改单元,用于若该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败不可重试”或者“任务取消”。
可选的,所述调度参数中包括重试次数;所述调度参数修改单元,用于若该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的重试次数减1;
若所述重试次数减1后的值大于零,则将执行状态的取值设置为“执行失败可重试”;并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值;
若所述重试次数减1后的值等于零,则将执行状态的取值设置为“执行失败不可重试”或者“任务取消”。
可选的,所述调度参数修改单元,用于若该异步任务执行结果为执行异常,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
可选的,若实现对异步任务的定时,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,所述调度参数包括执行时间,并且根据需要执行该异步任务的时间点设置该执行时间参数的取值;
所述检索参数设置单元303,用于设置所述检索参数中的执行时间的取值为当前系统时间;
所述检索单元305,用于从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
所述执行单元307,用于调取并执行上述步骤获得的异步任务。
可选的,所述调度参数中包括任务类型;所述调度参数设置单元301,用于设置需要定时执行的异步任务的任务类型取值为“定时任务”;
所述检索参数设置单元303,用于设置所述检索参数中的任务类型的取值为“定时任务”;
所述检索单元305,用于首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“定时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的任务。
可选的,所述调度参数修改单元,用于若该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
可选的,所述调度参数修改单元,用于若该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
可选的,所述调度参数修改单元,用于根据需要执行该异步任务的时间点设置该执行时间参数的取值的方式,是在该异步任务的产生时间点加上需要延迟的时间长度后,获得该异步任务的执行时间参数的取值。
可选的,若实现对异步任务的循环,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,所述需要实现循环执行的异步任务的调度参数包括执行时间以及自定义参数,所述执行时间的取值根据该需要实现循环执行的异步任务的首次执行时间设定,所述自定义参数的取值根据该调度任务的一个执行周期的时间长度设置;
所述检索参数设置单元303,用于设置所述检索参数中的执行时间的取值为当前系统时间;
所述检索单元305,用于从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
所述执行单元307,用于调取并执行上述步骤获得的异步任务;
所述调度参数修改单元,用于不论在上述步骤中该异步任务的执行结果为执行成功、执行失败还是执行异常,均将该异步任务的执行时间修改为当前系统时间和加上所述自定义参数提供的执行周期的时间长度的取值。
可选的,所述调度参数中包括任务类型;所述调度参数设置单元301,用于设置需要执行的异步任务的任务类型取值为“循环任务”;
所述检索参数设置单元303,用于设置所述检索参数中的任务类型的取值为“循环任务”;
所述检索单元305,用于首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“循环任务”的异步任务,然后再在其中进一步进行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务。
可选的,若实现对异步任务的超时执行,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,所述需要实现超时执行的异步任务的调度参数包括执行时间、自定义参数以及执行状态,所述执行时间的取值根据该需要执行该异步任务的时间设定,所述自定义参数的取值根据该调度任务的预定的重试周期的时间长度设置,所述执行状态的初始取值为“未执行”;
所述检索参数设置单元303,用于设置所述检索参数中的执行时间的取值为当前系统时间,设置所述检索参数中执行状态为检索“未执行”或者“执行失败可重试”;
所述检索单元305,用于从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务;
所述执行单元307,用于调取并执行上述步骤获得的异步任务;
所述调度参数修改单元,用于若在上述步骤中该异步任务的执行结果为执行成功,则将该异步任务的执行状态设置为“执行成功”;若在上述步骤中该异步任务的执行结果为执行失败或者执行异常,则将所述执行状态设置为“执行失败可重试”,并将所述执行时间设置为系统当前时间加上所述自定义参数提供的预定的重试周期的时间长度的取值。
可选的,所述调度参数中包括任务类型;所述调度参数设置单元301,用于设置需要执行的异步任务的任务类型取值为“超时任务”;
所述检索参数设置单元303,用于设置所述检索参数中的任务类型的取值为“超时任务”;
所述检索单元305,用于首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“超时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务。
可选的,所述异步任务的调度装置,还包括:时间获取单元以及时间记录单元;
所述时间获取单元,用于在所述执行所述检索获得的符合检索参数要求的异步任务之后,获取执行所述异步任务的时间和/或执行结果;
所述时间记录单元,用于记录执行所述异步任务的时间和/或执行结果,并保存在异步任务数据库中。
可选的,若实现对异步任务的调级,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,需要实现调级的异步任务的调度参数包括优先级,并且根据需要选择相应的优先级级别作为初始值;
可选的,所述检索参数设置单元303,用于设置所述检索参数中的优先级的取值;
所述检索单元305,用于从异步任务数据库存储的待调度的异步任务中,检索调度参数中优先级的取值与所述检索参数中优先级的具体取值相同的待调度的异步任务;
所述执行单元307,用于调取并执行上述步骤获得的异步任务。
可选的,所述调度参数修改单元,用于若记录执行所述异步任务的时间,则判断多次执行所述异步任务的平均时间是否处于规定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值;若记录执行所述异步任务的执行结果,则判断多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例是否处于固定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值。
可选的,所述调度参数修改单元,还用于在所述调整所述异步任务的优先级参数的取值之后,对所保存的执行所述异步任务的时间和/或失败次数清零。
可选的,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,设置的所述调度参数包括子名称,该子名称关联该异步任务需要使用的特定外部资源;
所述异步任务的调度装置,还包括:子名称检索单元,用于在所述执行所述检索获得的符合检索参数要求的异步任务之前,检索出的所述待调度的异步任务的子名称的取值。
可选的,若实现对异步任务的隔离,所述异步任务的调度装置,还包括:外部资源判断单元、检索单元触发单元以及停止单元;
所述外部资源判断单元,用于判断与所述待调度的异步任务的子名称关联的外部资源是否正常;
所述检索单元触发单元,用于接收所述外部资源判断单元的判断结果,若是,则进行所述执行所述检索获得的符合检索参数要求的异步任务的步骤;
所述停止单元,用于接收所述外部资源判断单元的判断结果,若否,则对停止调取和执行所述异步任务。
可选的,所述外部资源判断单元,具体用于判断与所述待调度的异步任务的子名称关联的服务器是否宕机导致响应超时或者不能为所述异步任务分配线程执行所述异步任务。
可选的,所述调度参数设置单元301,用于为各个待调度的异步任务设置调度参数的取值,设置的所述调度参数包括名称以及子名称,所述名称是根据该条异步任务的执行时的内容概括出的该条异步任务易于理解的字符串,所述子名称关联该异步任务需要使用的特定外部资源;
所述异步任务的调度装置,还包括:名称与子名称检索单元,用于在所述执行所述检索获得的符合检索参数要求的异步任务之前,获取检索出的所述待调度的异步任务的名称以及子名称的取值。
可选的,所述异步任务的调度装置,还包括:暂停列表判断单元、系统时间获取单元以及推迟时间获取单元;
所述暂停列表判断单元,用于判断所述待调度的异步任务的名称以及子名称关联的外部资源是否在预设的暂停列表中;
所述系统时间获取单元,用于接收所述暂停列表判断单元的判断结果,若是在所述获取检索出的所述待调度的异步任务的子名称的取值之后,获取当前系统时间;
所述推迟时间获取单元,用于根据当前系统时间和预设的时间间隔,获取所述待调度的异步任务的推迟时间。
可选的,所述异步任务的调度装置,还包括:执行跳过单元;
所述执行跳过单元,用于在所述获取所述待调度的异步任务的推迟时间之后,跳过所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤,将在异步任务数据库存储的待调度的异步任务的执行时间的取值修改为所述待调度的异步任务的推迟时间。
在上述的实施例中,提供了一种异步任务的调度方法以及一种异步任务的调度装置,此外,本申请还提供了一种电子设备;所述电子设备实施例如下:
请参考图4,其示出了根据本申请的实施例提供的电子设备的示意图。
所述电子设备,包括:显示器401;处理器403;存储器405;
所述存储器405,用于为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;根据调度需求设置相应的检索参数;根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;调取并执行检索获得的符合检索参数要求的异步任务。
在上述的实施例中,提供了一种异步任务的调度方法、一种异步任务的调度装置以及一种电子设备,此外,本申请还提供了一种异步任务的调度系统;所述异步任务的调度系统实施例如下:
请参考图5,其示出了根据本申请的实施例提供的异步任务的调度系统的示意图。
所述异步任务的调度系统,包括:任务执行服务器501、异步任务数据库503以及调度组件505;
所述任务执行服务器501,用于生成执行待调度的异步任务的线程,每个线程执行为其分配的异步任务;
所述异步任务数据库503,用于存储待调度的异步任务以及各个所述待调度异步任务的调度参数;
所述调度组件505,用于根据调度需求设置的检索参数,从所述异步任务数据库中调取调度参数与所述检索参数相匹配的异步任务,并将该异步任务分配给所述任务执行服务器中的相应线程。
可选的,所述异步任务的调度系统,还包括规则配置组件,用于根据外部输入配置反应调度需求的检索参数,并提供给所述调度组件。
可选的,所述异步任务的调度系统,还包括外部采集接口,用于从生成异步任务的业务系统中采集异步任务。
可选的,所述异步任务的调度系统,还包括数据库访问层,用于为所述调度组件和所述外部采集接口提供访问所述异步任务数据库的接口。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

Claims (38)

1.一种异步任务的调度方法,其特征在于,包括:
为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;
根据调度需求设置相应的检索参数;
根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;
调取并执行检索获得的符合检索参数要求的异步任务。
2.根据权利要求1所述的异步任务的调度方法,其特征在于,在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
3.根据权利要求2所述的异步任务的调度方法,其特征在于,所述调度参数,包括:执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
4.根据权利要求3所述的异步任务的调度方法,其特征在于,所述检索参数,包括:执行状态、执行时间或者优先级中的一种或者两种以上的组合。
5.根据权利要求4所述的异步任务的调度方法,其特征在于,实现对异步任务的重试,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括执行状态,并且其初始取值为“未执行”,异步任务首次执行后,若异步任务执行失败,在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,将所述执行状态设置为“执行失败可重试”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间,所述检索参数中的执行状态的取值为“执行失败可重试”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态的取值包括“执行失败可重试”且执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
6.根据权利要求5所述的异步任务的调度方法,其特征在于,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
7.根据权利要求5所述的异步任务的调度方法,其特征在于,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败不可重试”或者“任务取消”。
8.根据权利要求5所述的异步任务的调度方法,其特征在于,所述调度参数中包括重试次数;所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的重试次数减1;
若所述重试次数减1后的值大于零,则将执行状态的取值设置为“执行失败可重试”;并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值;
若所述重试次数减1后的值等于零,则将执行状态的取值设置为“执行失败不可重试”或者“任务取消”。
9.根据权利要求5所述的异步任务的调度方法,其特征在于,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行结果为执行异常,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
10.根据权利要求4所述的异步任务的调度方法,其特征在于,实现对异步任务的定时,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括执行时间,并且根据需要执行该异步任务的时间点设置该执行时间参数的取值;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
11.根据权利要求10所述的异步任务的调度方法,其特征在于,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要定时执行的异步任务的任务类型取值为“定时任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“定时任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“定时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务的任务。
12.根据权利要求11所述的异步任务的调度方法,其特征在于,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行成功,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行成功”。
13.根据权利要求11所述的异步任务的调度方法,其特征在于,所述根据对所述异步任务的执行结果,修改该异步任务的调度参数,包括:
若所述调取并执行检索获得的符合检索参数要求的异步任务的步骤中,该异步任务执行失败,则将在异步任务数据库存储的所述异步任务的执行状态的取值修改为“执行失败可重试”,并根据当前系统时间和预设的重试时间间隔修改所述待调度的异步任务的执行时间的取值。
14.根据权利要求10所述的异步任务的调度方法,其特征在于,根据需要执行该异步任务的时间点设置该执行时间参数的取值的方式,是在该异步任务的产生时间点加上需要延迟的时间长度后,获得该异步任务的执行时间参数的取值。
15.根据权利要求4所述的异步任务的调度方法,其特征在于,实现对异步任务的循环,需要采取以下步骤:
所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述需要实现循环执行的异步任务的调度参数包括执行时间以及自定义参数,所述执行时间的取值根据该需要实现循环执行的异步任务的首次执行时间设定,所述自定义参数的取值根据该调度任务的一个执行周期的时间长度设置;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务;
所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,不论在上述步骤中该异步任务的执行结果为执行成功、执行失败还是执行异常,均将该异步任务的执行时间修改为当前系统时间和加上所述自定义参数提供的执行周期的时间长度的取值。
16.根据权利要求15所述的异步任务的调度方法,其特征在于,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要执行的异步任务的任务类型取值为“循环任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“循环任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“循环任务”的异步任务,然后再在其中进一步进行所述检索调度参数中执行时间的取值小于等于当前系统时间的待调度的异步任务。
17.根据权利要求4所述的异步任务的调度方法,其特征在于,实现对异步任务的超时执行,需要采取以下步骤:所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述需要实现超时执行的异步任务的调度参数包括执行时间、自定义参数以及执行状态,所述执行时间的取值根据该需要执行该异步任务的时间设定,所述自定义参数的取值根据该调度任务的预定的重试周期的时间长度设置,所述执行状态的初始取值为“未执行”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的执行时间的取值为当前系统时间,设置所述检索参数中执行状态为“未执行”或者“执行失败可重试”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务;
在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,若在上述步骤中该异步任务的执行结果为执行成功,则将该异步任务的执行状态设置为“执行成功”;若在上述步骤中该异步任务的执行结果为执行失败或者执行异常,则将所述执行状态设置为“执行失败可重试”,并将所述执行时间设置为系统当前时间加上所述自定义参数提供的预定的重试周期的时间长度的取值。
18.根据权利要求17所述的异步任务的调度方法,其特征在于,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述各个待调度的异步任务的调度参数包括任务类型,并且设置需要执行的异步任务的任务类型取值为“超时任务”;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的任务类型的取值为“超时任务”;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,首先从异步任务数据库存储的待调度的异步任务中,检索任务类型的取值为“超时任务”的异步任务,然后再在其中进一步执行所述检索调度参数中执行状态为“未执行”或者“执行失败可重试”并且执行时间的取值小于等于当前系统时间的待调度的异步任务。
19.根据权利要求4所述的异步任务的调度方法,其特征在于,在所述执行所述检索获得的符合检索参数要求的异步任务的步骤之后,还包括:
获取执行所述异步任务的时间和/或执行结果;
记录执行所述异步任务的时间和/或执行结果,并保存在异步任务数据库中。
20.根据权利要求19所述的异步任务的调度方法,其特征在于,实现对异步任务的调级,需要采取以下步骤:
在所述为各个待调度的异步任务设置调度参数的取值的步骤中,需要实现调级的异步任务的调度参数包括优先级,并且根据需要选择相应的优先级级别作为初始值;
所述根据调度需求设置相应的检索参数的步骤中,设置所述检索参数中的优先级的取值;
所述根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务的步骤中,从异步任务数据库存储的待调度的异步任务中,检索调度参数中优先级的取值与所述检索参数中优先级的具体取值相同的待调度的异步任务;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤中,调取并执行上述步骤获得的异步任务。
21.根据权利要求20所述的异步任务的调度方法,其特征在于,在所述根据对所述异步任务的执行结果,修改该异步任务的调度参数的步骤中,若记录执行所述异步任务的时间,则判断多次执行所述异步任务的平均时间是否处于规定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值;若记录执行所述异步任务的执行结果,则判断多次执行异步任务的结果中为失败或者异常的次数占所述异步任务执行总次数的比例是否处于固定的阈值区间内,若否,则调整所述异步任务的优先级参数的取值。
22.根据权利要求21所述的异步任务的调度方法,其特征在于,在所述调整所述异步任务的优先级参数的取值的步骤之后,包括:
对所保存的执行所述异步任务的时间和/或执行结果清零。
23.根据权利要求1-22任意一项所述的异步任务的调度方法,其特征在于,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括子名称,该子名称关联该异步任务需要使用的特定外部资源;
在所述执行所述检索获得的符合检索参数要求的异步任务的步骤之前,包括:
检索出的所述待调度的异步任务的子名称的取值。
24.根据权利要求23所述的异步任务的调度方法,其特征在于,实现对异步任务的隔离,需要采取以下步骤:
判断与所述待调度的异步任务的子名称关联的外部资源是否正常;
若是,则进行所述执行所述检索获得的符合检索参数要求的异步任务的步骤;
若否,则停止调取和执行所述异步任务。
25.根据权利要求24所述的异步任务的调度方法,其特征在于,所述外部资源的异常包括:
需要使用的服务器宕机导致响应超时或者不能为所述异步任务分配线程执行所述异步任务。
26.根据权利要求1-22任意一项所述的异步任务的调度方法,其特征在于,所述为各个待调度的异步任务设置调度参数的取值的步骤中,所述调度参数包括名称以及子名称,所述名称是根据该条异步任务的执行时的内容概括出的该条异步任务易于理解的字符串,所述子名称关联该异步任务需要使用的特定外部资源;
在所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤之前,包括:
获取检索出的所述待调度的异步任务的名称以及子名称的取值。
27.根据权利要求26所述的异步任务的调度方法,其特征在于,实现对异步任务的暂停,需要采取以下步骤:
判断所述待调度的异步任务的名称以及子名称关联的外部资源是否在预设的暂停列表中;
若是,则获取当前系统时间;
根据当前系统时间和预设的时间间隔,获取所述待调度的异步任务的推迟时间;
跳过所述调取并执行所述检索获得的符合检索参数要求的异步任务的步骤,将在异步任务数据库存储的待调度的异步任务的执行时间的取值修改为所述待调度的异步任务的推迟时间。
28.根据权利要求1-4任意一项所述的异步任务的调度方法,其特征在于,所述待调度的异步任务具有根据所述调度参数建立的异步任务索引。
29.根据权利要求28所述的异步任务的调度方法,其特征在于,所述异步任务索引以执行时间为第一索引词。
30.一种异步任务的调度装置,其特征在于,包括:调度参数设置单元、检索参数设置单元、检索单元以及执行单元;
所述调度参数设置单元,用于为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;
所述检索参数设置单元,用于根据调度需求设置相应的检索参数;
所述检索单元,用于根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;
所述执行单元,用于调取并执行检索获得的符合检索参数要求的异步任务。
31.根据权利要求30所述的异步任务的调度装置,其特征在于,还包括:调度参数修改单元;
所述调度参数修改单元,用于在所述调取并执行所述检索获得的符合检索参数要求的异步任务之后,根据对所述异步任务的执行结果,修改该异步任务的调度参数。
32.根据权利要求31所述的异步任务的调度装置,其特征在于,所述调度参数设置单元,具体用于设置异步任务的执行状态、执行时间、优先级中的至少一项;还可以包括以下参数中的一项或者多项:名称、子名称、自定义参数、重试次数、任务类型;所述执行状态至少包括:未执行、执行失败可重试、执行失败不可重试、任务取消、执行成功。
33.根据权利要求32所述的异步任务的调度装置,其特征在于,所述检索参数设置单元,具体用于设置执行状态、执行时间或者优先级中的一种或者两种以上的组合。
34.一种电子设备,其特征在于,所述电子设备包括:
显示器;
处理器;
存储器,用于存储异步任务的调度程序,所述程序在被所述处理器读取执行时,执行如下操作:为各个待调度的异步任务设置调度参数的取值;所述调度参数是调度过程中供调度检索用的说明异步任务的执行特性的参数;根据调度需求设置相应的检索参数;根据所述检索参数,从异步任务数据库存储的待调度的异步任务中,检索调度参数与所述检索参数相匹配的异步任务;调取并执行检索获得的符合检索参数要求的异步任务。
35.一种异步任务的调度系统,其特征在于,包括:任务执行服务器、异步任务数据库以及调度组件;
所述任务执行服务器,用于生成执行待调度的异步任务的线程,每个线程执行为其分配的异步任务;
所述异步任务数据库,用于存储待调度的异步任务以及各个所述待调度异步任务的调度参数;
所述调度组件,用于根据调度需求设置的检索参数,从所述异步任务数据库中调取调度参数与所述检索参数相匹配的异步任务,并将该异步任务分配给所述任务执行服务器中的相应线程。
36.根据权利要求35所述的异步任务的调度系统,其特征在于,包括规则配置组件,用于根据外部输入配置反应调度需求的检索参数,并提供给所述调度组件。
37.根据权利要求35所述的异步任务的调度系统,其特征在于,包括外部采集接口,用于从生成异步任务的业务系统中采集异步任务。
38.根据权利要求35-37任意一项所述的异步任务的调度系统,其特征在于,包括数据库访问层,用于为所述调度组件和所述外部采集接口提供访问所述异步任务数据库的接口。
CN201510666054.6A 2015-10-15 2015-10-15 一种异步任务的调度方法、装置、系统以及电子设备 Active CN106598705B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510666054.6A CN106598705B (zh) 2015-10-15 2015-10-15 一种异步任务的调度方法、装置、系统以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510666054.6A CN106598705B (zh) 2015-10-15 2015-10-15 一种异步任务的调度方法、装置、系统以及电子设备

Publications (2)

Publication Number Publication Date
CN106598705A true CN106598705A (zh) 2017-04-26
CN106598705B CN106598705B (zh) 2020-08-11

Family

ID=58552162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510666054.6A Active CN106598705B (zh) 2015-10-15 2015-10-15 一种异步任务的调度方法、装置、系统以及电子设备

Country Status (1)

Country Link
CN (1) CN106598705B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423881A (zh) * 2017-06-09 2017-12-01 中国邮政储蓄银行股份有限公司 任务分发方法及装置
CN107544853A (zh) * 2017-08-23 2018-01-05 万惠投资管理有限公司 一种与银行进行交互重试的方法和系统
CN107798405A (zh) * 2017-07-24 2018-03-13 平安科技(深圳)有限公司 医疗服务预约方法、装置、存储介质和计算机设备
CN107957903A (zh) * 2017-11-13 2018-04-24 中国平安财产保险股份有限公司 异步任务调度方法、服务器及存储介质
CN108132836A (zh) * 2017-12-29 2018-06-08 北京奇艺世纪科技有限公司 一种任务分发方法、装置及电子设备
CN108415765A (zh) * 2018-02-28 2018-08-17 百度在线网络技术(北京)有限公司 任务调度方法、装置及智能终端
CN109002352A (zh) * 2018-07-04 2018-12-14 北京捷旅易行科技有限公司 流量控制器系统
CN109002353A (zh) * 2018-08-16 2018-12-14 北京中科梧桐网络科技有限公司 一种java统一任务中心调度方法
CN109242454A (zh) * 2018-08-14 2019-01-18 阿里巴巴集团控股有限公司 电子红包的发放方法、装置、服务器及可读存储介质
CN110321211A (zh) * 2019-06-27 2019-10-11 上海数禾信息科技有限公司 用于业务系统的异步调度方法及装置
CN110442440A (zh) * 2019-08-05 2019-11-12 中国工商银行股份有限公司 一种异步任务处理方法及装置
CN110457126A (zh) * 2019-08-13 2019-11-15 杭州有赞科技有限公司 一种异步调用方法及系统
CN110868449A (zh) * 2019-10-14 2020-03-06 深圳市非零无限科技有限公司 一种基于异步消息实现定时任务的方法及系统
CN111427676A (zh) * 2020-03-20 2020-07-17 达而观信息科技(上海)有限公司 一种机器人流程自动化任务处理方法及装置
CN113127564A (zh) * 2021-04-20 2021-07-16 建信金融科技有限责任公司 一种参数同步方法和装置
CN114756573A (zh) * 2022-06-16 2022-07-15 恒生电子股份有限公司 数据处理方法、装置及系统
CN114860349A (zh) * 2022-07-06 2022-08-05 深圳华锐分布式技术股份有限公司 数据加载方法、装置、设备及介质
CN116775314A (zh) * 2023-08-18 2023-09-19 国能日新科技股份有限公司 异步处理方法、装置和设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882161A (zh) * 2010-06-23 2010-11-10 中国工商银行股份有限公司 应用级异步任务调度系统和方法
US20110115802A1 (en) * 2009-09-03 2011-05-19 Michael Mantor Processing Unit that Enables Asynchronous Task Dispatch
CN103092574A (zh) * 2013-01-18 2013-05-08 浙江工商大学 一种基于递归自主式复杂任务分解系统及方法
CN104239148A (zh) * 2013-06-06 2014-12-24 腾讯科技(深圳)有限公司 一种分布式任务调度方法及装置
CN104346215A (zh) * 2013-08-07 2015-02-11 中兴通讯股份有限公司 一种任务调度服务系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110115802A1 (en) * 2009-09-03 2011-05-19 Michael Mantor Processing Unit that Enables Asynchronous Task Dispatch
CN101882161A (zh) * 2010-06-23 2010-11-10 中国工商银行股份有限公司 应用级异步任务调度系统和方法
CN103092574A (zh) * 2013-01-18 2013-05-08 浙江工商大学 一种基于递归自主式复杂任务分解系统及方法
CN104239148A (zh) * 2013-06-06 2014-12-24 腾讯科技(深圳)有限公司 一种分布式任务调度方法及装置
CN104346215A (zh) * 2013-08-07 2015-02-11 中兴通讯股份有限公司 一种任务调度服务系统及方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423881A (zh) * 2017-06-09 2017-12-01 中国邮政储蓄银行股份有限公司 任务分发方法及装置
CN107798405A (zh) * 2017-07-24 2018-03-13 平安科技(深圳)有限公司 医疗服务预约方法、装置、存储介质和计算机设备
CN107544853A (zh) * 2017-08-23 2018-01-05 万惠投资管理有限公司 一种与银行进行交互重试的方法和系统
CN107957903A (zh) * 2017-11-13 2018-04-24 中国平安财产保险股份有限公司 异步任务调度方法、服务器及存储介质
CN108132836A (zh) * 2017-12-29 2018-06-08 北京奇艺世纪科技有限公司 一种任务分发方法、装置及电子设备
CN108132836B (zh) * 2017-12-29 2021-10-22 北京奇艺世纪科技有限公司 一种任务分发方法、装置及电子设备
CN108415765A (zh) * 2018-02-28 2018-08-17 百度在线网络技术(北京)有限公司 任务调度方法、装置及智能终端
CN109002352B (zh) * 2018-07-04 2019-12-03 北京捷旅易行科技有限公司 流量控制器系统
CN109002352A (zh) * 2018-07-04 2018-12-14 北京捷旅易行科技有限公司 流量控制器系统
CN109242454A (zh) * 2018-08-14 2019-01-18 阿里巴巴集团控股有限公司 电子红包的发放方法、装置、服务器及可读存储介质
CN109002353A (zh) * 2018-08-16 2018-12-14 北京中科梧桐网络科技有限公司 一种java统一任务中心调度方法
CN110321211A (zh) * 2019-06-27 2019-10-11 上海数禾信息科技有限公司 用于业务系统的异步调度方法及装置
CN110321211B (zh) * 2019-06-27 2020-05-12 上海数禾信息科技有限公司 用于业务系统的异步调度方法及装置
CN110442440A (zh) * 2019-08-05 2019-11-12 中国工商银行股份有限公司 一种异步任务处理方法及装置
CN110457126A (zh) * 2019-08-13 2019-11-15 杭州有赞科技有限公司 一种异步调用方法及系统
CN110868449A (zh) * 2019-10-14 2020-03-06 深圳市非零无限科技有限公司 一种基于异步消息实现定时任务的方法及系统
CN110868449B (zh) * 2019-10-14 2022-03-22 深圳市非零无限科技有限公司 一种基于异步消息实现定时任务的方法及系统
CN111427676B (zh) * 2020-03-20 2024-03-29 达观数据有限公司 一种机器人流程自动化任务处理方法及装置
CN111427676A (zh) * 2020-03-20 2020-07-17 达而观信息科技(上海)有限公司 一种机器人流程自动化任务处理方法及装置
CN113127564A (zh) * 2021-04-20 2021-07-16 建信金融科技有限责任公司 一种参数同步方法和装置
CN113127564B (zh) * 2021-04-20 2023-02-28 建信金融科技有限责任公司 一种参数同步方法和装置
CN114756573B (zh) * 2022-06-16 2022-10-04 恒生电子股份有限公司 数据处理方法、装置及系统
CN114756573A (zh) * 2022-06-16 2022-07-15 恒生电子股份有限公司 数据处理方法、装置及系统
CN114860349A (zh) * 2022-07-06 2022-08-05 深圳华锐分布式技术股份有限公司 数据加载方法、装置、设备及介质
CN116775314A (zh) * 2023-08-18 2023-09-19 国能日新科技股份有限公司 异步处理方法、装置和设备

Also Published As

Publication number Publication date
CN106598705B (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
CN106598705A (zh) 一种异步任务的调度方法、装置、系统以及电子设备
CN107239335B (zh) 分布式系统的作业调度系统及方法
US10275277B2 (en) Job distribution within a grid environment using mega-host groupings of execution hosts
US9465663B2 (en) Allocating resources in a compute farm to increase resource utilization by using a priority-based allocation layer to allocate job slots to projects
CN104050042B (zh) Etl作业的资源分配方法及装置
US9141432B2 (en) Dynamic pending job queue length for job distribution within a grid environment
CN106033373B (zh) 一种云计算平台中虚拟机资源调度方法和调度系统
CN108280148A (zh) 一种数据迁移方法和数据迁移服务器
US20080306950A1 (en) Arrival rate throttles for workload management
CN108762900A (zh) 高频任务调度方法、系统、计算机设备和存储介质
CN110162388A (zh) 一种任务调度方法、系统及终端设备
US8042119B2 (en) States matrix for workload management simplification
CN109558234A (zh) 一种定时任务调度方法和装置
CN106406983A (zh) 一种集群中的任务调度方法及装置
CN102004630A (zh) 多核/线程工作组计算调度器
CN108683692A (zh) 一种业务请求处理方法及装置
CN110308980A (zh) 数据的批量处理方法、装置、设备及存储介质
US7920282B2 (en) Job preempt set generation for resource management
CN109408286A (zh) 数据处理方法、装置、系统、计算机可读存储介质
CN113391913A (zh) 一种基于预测的分布式调度方法和装置
CN106874109A (zh) 一种分布式作业分发处理方法及系统
CN107357640A (zh) 多线程数据库的请求处理方法及装置、电子设备
EP2541408B1 (en) Method and system for processing data for database modification
CN112416520B (zh) 一种基于vSphere的智能资源调度方法
CN117076096A (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
TA01 Transfer of patent application right

Effective date of registration: 20180425

Address after: Cayman Islands, Grand Cayman Island capital building, four level 847 box

Applicant after: CAINIAO SMART LOGISTICS HOLDING Ltd.

Address before: Cayman Islands Grand Cayman capital building a four storey No. 847 mailbox

Applicant before: ALIBABA GROUP HOLDING Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant