CN114756354A - 分布式任务调度方法、装置、设备、介质和程序产品 - Google Patents
分布式任务调度方法、装置、设备、介质和程序产品 Download PDFInfo
- Publication number
- CN114756354A CN114756354A CN202210477903.3A CN202210477903A CN114756354A CN 114756354 A CN114756354 A CN 114756354A CN 202210477903 A CN202210477903 A CN 202210477903A CN 114756354 A CN114756354 A CN 114756354A
- Authority
- CN
- China
- Prior art keywords
- task
- instance
- scheduling
- execution
- executed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本公开提供了一种分布式任务调度方法、装置、设备、介质和程序产品,涉及计算机技术领域,尤其涉及分布式技术领域、任务调度技术领域,可以应用于金融技术领域。该分布式任务调度方法包括:根据调度管理集群的调度管理实例读取待执行任务,其中,调度管理实例包括第一调度管理实例;响应于待执行任务被触发,确定触发任务;以及根据第一调度管理实例,确定目标执行实例,其中,目标执行实例用于执行触发任务,待执行任务包括第一类型任务,第一类型任务包括至少一个分片任务。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及分布式技术领域、任务调度技术领域,具体涉及一种分布式任务调度方法、装置、设备、介质和程序产品。
背景技术
分布式系统是由多个计算机节点组成的系统,分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。分布式系统具有资源共享、计算速度快速、可靠性高以及通信便捷等优点,因此逐渐被广泛采用。
分布式任务调度是指在分布式系统的环境下运行任务调度,可以提高任务的调度处理能力。
目前的一些分布式任务调度方法,仍然具有灵活性差以及效率低下等缺陷。
发明内容
鉴于上述问题,本公开提供了提高分布式任务调度效率的分布式任务调度方法、装置、设备、介质和程序产品。
根据本公开的第一个方面,提供了一种分布式任务调度方法,包括:根据调度管理集群的调度管理实例读取待执行任务,其中,调度管理实例包括第一调度管理实例;响应于待执行任务被触发,确定触发任务;以及根据第一调度管理实例,确定目标执行实例,其中,目标执行实例用于执行触发任务,待执行任务包括第一类型任务,第一类型任务包括至少一个分片任务。
根据本公开的实施例,任务执行集群包括至少一个执行实例,目标执行实例是至少一个执行实例中的一个,目标执行实例包括第一目标执行实例;根据调度管理集群的第一调度管理实例,确定目标执行实例包括:在第一调度管理实例,根据分片任务的元数据和执行实例的执行数据,匹配分片任务与执行实例,得到与分片任务一一对应的第一目标执行实例。
根据本公开的实施例,待执行任务还包括第二类型任务,目标执行实例包括第二目标执行实例;根据调度管理集群的第一调度管理实例,确定目标执行实例包括:在触发任务为第二类型任务时,向任务执行集群的每一个执行实例通知第二类型任务;以及在第一调度管理实例,根据竞争策略,从执行实例中,确定竞争成功的执行实例为第二目标执行实例。
根据本公开的实施例,分布式任务调度方法还包括:针对第一类型任务,在每一个第一目标执行实例,根据分片任务的执行规则执行分片任务,得到每一个分片任务的分片执行结果;以及根据每一个分片执行结果和第一类型任务的任务逻辑,确定第一类型任务的目标执行结果。
根据本公开的实施例,分布式任务调度方法还包括:响应于针对待执行任务的操作指令,对待执行任务进行相应的操作,得到操作后的待执行任务,操作指令包括以下中的至少一个:编排操作、增加操作、删除操作、暂停操作、恢复操作以及更新操作。
根据本公开的实施例,分布式任务调度方法还包括:根据动态脚本执行操作指令。
根据本公开的实施例,待执行任务经过编排操作得到编排任务,分布式任务调度方法还包括:对编排任务进行前置任务循环依赖检测,得到检测结果;以及在检测结果为存在前置任务循环依赖时,生成告警信息。
根据本公开的实施例,分布式任务调度方法还包括:响应于目标执行结果为执行失败,根据实例选择策略确定二次任务执行实例,二次任务执行实例用于重新执行执行失败的触发任务,实例选择策略包括指定策略和竞争策略。
根据本公开的实施例,每一个执行实例与每一个调度管理实例通过服务注册和服务心跳进行实例状态的通信。
根据本公开的实施例,执行实例与调度管理实例通过消息队列进行任务调度消息的通信,其中,任务调度消息包括:服务注册的信息、服务心跳的信息、目标执行结果以及待执行任务的信息。
根据本公开的实施例,调度管理集群包括至少一个调度管理节点,每一个调度管理节点运行至少一个调度管理实例,分布式任务调度方法还包括:将待执行任务缓存至调度管理节点的本地位置;和/或将执行实例缓存至调度管理节点的本地位置。
根据本公开的实施例,调度管理节点包括调度管理主节点和调度管理从节点,第一调度管理实例运行于调度管理主节点上,分布式任务调度方法还包括:响应于调度管理主节点失效,从调度管理从节点中确定一个调度管理替换主节点,其中,调度管理替换主节点用于替换失效的第一调度管理主节点。
根据本公开的实施例,待执行任务存储于任务库中,调度管理实例还包括第二调度管理实例,第二调度管理实例运行于调度管理从节点、调度管理主节点两者中的至少一者,分布式任务调度方法还包括:根据调度管理节点本地维护执行实例的信息;响应于任务调度成功指令,根据调度管理实例,确定下次调度时间;以及根据调度管理实例,更新任务库与消息队列。
本公开的第二方面提供了一种分布式任务调度装置,包括:待执行任务读取模块、触发任务确定模块以及目标执行实例确定模块。待执行任务读取模块,用于根据调度管理集群的调度管理实例读取待执行任务,其中,调度管理实例包括第一调度管理实例;触发任务确定模块,用于响应于待执行任务被触发,确定触发任务;目标执行实例确定模块,用于根据第一调度管理实例,确定目标执行实例,其中,目标执行实例用于执行触发任务,待执行任务包括第一类型任务,第一类型任务包括至少一个分片任务。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述分布式任务调度方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述分布式任务调度方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述分布式任务调度方法。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的分布式任务调度方法、装置、设备、介质和程序产品的应用场景图;
图2示意性示出了根据本公开一实施例的分布式任务调度方法的流程图;
图3A示意性示出了根据本公开一实施例的操作S230的流程图;
图3B示意性示出了根据本公开另一实施例的操作S230的流程图;
图4示意性示出了根据本公开另一实施例的分布式任务调度方法的流程图;
图5示意性示出了根据本公开又一实施例的分布式任务调度方法的流程图;
图6示意性示出了根据本公开又一实施例的分布式任务调度方法的流程图;
图7示意性示出了根据本公开又一实施例的分布式任务调度方法的流程图;
图8A示意性示出了根据本公开实施例的广播模式的示意图;
图8B示意性示出了根据本公开实施例的简单模式的示意图;
图8C示意性示出了根据本公开实施例的工作模式的示意图;
图9示意性示出了根据本公开实施例的分布式任务调度方法对应的系统架构的示意图;
图10A示意性示出了根据本公开实施例的调度管理实例启动时的流程示意图;
图10B示意性示出了根据本公开实施例的调度管理实例运行时的流程示意图;
图10C示意性示出了根据本公开实施例的第一调度管理实例执行任务调度时响应操作指令时的流程示意图;
图10D示意性示出了根据本公开实施例的执行实例启动时的流程示意图;
图11示意性示出了根据本公开实施例的分布式任务调度装置的结构框图;以及
图12示意性示出了根据本公开实施例的适于实现分布式任务调度方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
分布式系统是由多个计算机节点组成的系统,分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。分布式系统具有资源共享、计算速度快速、可靠性高以及通信便捷等优点,因此逐渐被广泛采用。
分布式任务调度是在分布式环境下,在约定的特定时刻去执行任务的过程。分布式任务调度具有任务数量多、任务类型多样等特点。
Quartz是一种分布式任务调度框架,其任务调度的核心元素包括:任务调度器(Scheduler)、触发器(Trigger)以及任务(Job)。其中,触发器和任务是任务调度的元数据,任务调度器是实际执行调度的控制器。Quartz框架的核心是任务调度器,任务调度器负责管理Quartz应用运行时环境。Quartz框架可以用于对批量的定时任务进行任务调度。
xxl-job是一个轻量级的分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。但是其调度中心通过数据库锁来保证集群中执行任务的唯一性,如果段任务很多,随着调度中心集群数量增加,那么数据库的锁竞争会比较厉害,性能会下降。
利用上述的分布式调度框架进行任务调度至少具有以下缺陷之一:
1)普遍基于数据库的锁机制保证集群的任务唯一性,当调度中心集群数量增加时,会导致性能降低。
2)实现较为复杂,分布式任务调度框架的接入成本通常较高,且一旦任务确定,很难实时进行任务及其依赖关系的修改,对于大规模且复杂依赖关系的任务,难以实时检测依赖关系正确与否,以及动态修改任务间的依赖,对于一些临时需要调度的任务也无法立即生效。
需要说明的是,本公开确定的分布式任务调度方法和装置可用于金融领域,也可用于除金融领域之外的任意领域,本公开对于分布式任务调度方法和装置的应用领域不做限定。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
图1示意性示出了根据本公开实施例的分布式任务调度方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括网络101、调度管理集群102以及任务执行集群103。网络101可以在调度管理集群102和任务执行集群103之间提供通信链路的介质。网络101可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
调度管理集群102可以包括多个调度管理节点,图1示意性示出了调度管理集群102包括调度管理节点1021至调度管理节点102n,共计n个调度管理节点。
任务执行集群103可以包括多个执行节点,图1示意性示出了任务执行集群103包括执行节点1031至执行节点103m,共计m个执行节点。
需要说明的是,本公开实施例所提供的分布式任务调度方法一般可以由调度管理集群与任务执行集群形成的系统执行。相应地,本公开实施例所提供的分布式任务调度装置一般可以设置于由调度管理集群与任务执行集群形成的系统中。
应该理解,图1中的网络的数目、调度管理集群的调度管理节点的数目以及任务执行集群的执行节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的网络、调度管理集群的调度管理节点和任务执行集群的执行节点。
以下将基于图1描述的场景,通过图2~图10D对本公开实施例的分布式任务调度方法进行详细描述。
图2示意性示出了根据本公开实施例的分布式任务调度方法的流程图。
如图2所示,该实施例的分布式任务调度方法200包括操作S210~操作S230。
在操作S210,根据调度管理集群的调度管理实例读取待执行任务。
集群可以理解为一组相互独立的、通过高速网络互联的计算机,这一组计算机以单一系统的模式加以管理,并作为一个总体向用户提供网络资源,集群中的每一个计算机是一个节点,在一个节点上可以运行多个实例,实例可以理解为被分配了内存、可以由代码字节访问的实体。
本公开实施例的分布式任务调度方法中,调度管理集群可以理解为用于对待执行任务进行调度以及管理的集群,调度管理集群的调度管理节点上运行调度管理实例。
调度管理实例包括第一调度管理实例。第一调度管理实例可以执行任务调度。调度管理实例包括至少一个,第一调度管理实例只有一个。以下将以调度管理实例包括多个为例进行说明。
根据调度管理集群的调度管理实例读取待执行任务可以理解为调度管理集群的每一个调度管理实例均读取待执行任务。
在操作S220,响应于待执行任务被触发,确定触发任务。
可以理解,触发任务是指被触发的待执行任务,例如可以根据预先设定的触发时间确定待执行任务是否被触发。
在操作S230,根据第一调度管理实例,确定目标执行实例。
目标执行实例用于执行触发任务,待执行任务包括第一类型任务,第一类型任务包括至少一个分片任务。
本公开实施例的分布式任务调度方法,由调度管理实例读取待执行任务、由第一调度管理实例确定用于执行触发任务的目标执行实例、由目标执行实例执行触发任务。因此,针对待执行任务,通过不同的实例执行任务调度的不同操作,即任务调度与任务执行的职责分离,使得任务调度更加灵活和高效。
本公开实施例的分布式任务调度方法,在执行某一操作的调度管理实例包括多个,某一个调度管理实例无法运行时,可以使用其他的调度管理实例进行替换。或者,在目标执行实例包括多个时,可以对多个触发任务分别确定对应的目标执行实例,并行执行多个触发任务,任务调度的灵活性和效率更高。
本公开实施例的分布式任务调度方法,在待执行任务为包括多个分片任务的第一类型任务时,可以为第一类型任务的多个分片任务分配一一对应的目标执行实例,支持分片任务的任务调度,可以覆盖更加广泛的场景,具有更高的分布式任务调度效率。在一些大规模任务的场景下,经过任务调度的多个分片任务可以并行执行,更加高效。
图3A示意性示出了根据本公开一实施例的确定目标执行实例的流程图。
如图3A所示,可以采用如下实施例实现本公开实施例的根据调度管理集群的第一调度管理实例,确定目标执行实例的一个具体示例。其中,任务执行集群可以包括至少一个执行实例,目标执行实例是至少一个执行实例中的一个,目标执行实例包括第一目标执行实例。
在操作S231A,在第一调度管理实例,根据分片任务的元数据和执行实例的执行数据,匹配分片任务与执行实例,得到与分片任务一一对应的第一目标执行实例。
可以理解,第一目标执行实例用于执行分片任务。
元数据可以理解为描述数据属性的信息,可以用来支持例如指示存储位置、历史数据、资源查找以及文件记录等功能。
分片任务的元数据例如可以包括分片数量、执行分片任务所需的资源的信息等。
执行实例的执行数据是执行实例的相关数据,执行实例的执行数据例如可以包括执行实例的执行时间信息、资源信息等。
本公开实施例的分布式任务调度方法,通过在第一调度管理实例,根据分片任务的元数据和执行实例的执行数据,可以精确地匹配分片任务与执行实例,得到与分片任务一一对应的第一目标执行实例,提高分布式任务调度的效率。例如在资源信息匹配、执行时间匹配等情况下,可以高效地利用计算机资源,高效地进行任务调度。
图3B示意性示出了根据本公开另一实施例的确定目标执行实例的流程图。
如图3B所示,可以采用如下实施例实现本公开实施例的根据调度管理集群的第一调度管理实例,确定目标执行实例的一种具体示例。其中,待执行任务还包括第二类型任务,目标执行实例包括第二目标执行实例。
在操作S231B,在触发任务为第二类型任务时,向任务执行集群的每一个执行实例通知第二类型任务。
在操作S232B,在第一调度管理实例,根据竞争策略,从执行实例中,确定竞争成功的执行实例为第二目标执行实例。
可以理解,第二目标执行实例用于执行第二类型任务。
“目标执行实例包括第一目标执行实例”以及“目标执行实例还包括第二目标执行实例”可以理解为:任意一个目标执行实例是第一目标执行实例或者第二目标执行实例两个中的一个。
第二类型任务与第一类型任务的区别在于:第一类型任务经划分得到多个分片任务,每一个分片任务由一个第一目标执行实例执行。而第二类型任务不经过划分,每一个第二类型任务可以由一个第二目标执行实例执行。
竞争可以理解为不同进程对共享资源操作,由于进程执行顺序不可预测,共享资源状态不可预知。
本公开实施例的分布式任务调度方法,通过向任务执行集群的每一个执行实例通知第二类型任务,并根据竞争策略,从执行实例中确定竞争成功的执行实例为第二目标执行实例,无需人工干涉,可以快捷、高效地确定第二目标执行实例,提高分布式任务调度的效率。
图4示意性示出了根据本公开另一实施例的分布式任务调度方法的流程图。
如图4所示,根据本公开实施例的分布式任务调度方法300还可以包括操作S310~操作S320。
在操作S310,针对第一类型任务,在每一个第一目标执行实例,根据分片任务的执行规则执行分片任务,得到每一个分片任务的分片执行结果。
在操作S320,根据每一个分片执行结果和第一类型任务的任务逻辑,确定第一类型任务的目标执行结果。
第一类型任务在被划分为多个分片任务时,每一个分片任务均对应一个执行规则,第一目标执行实例根据分片任务的执行规则执行分片任务。
针对第一类型任务的每一个分片任务,由第一目标执行实例按照执行规则执行后,可以得到每一个分片任务的分片执行结果,具体的第一类型任务的目标执行结果可以根据每一个分片任务执行结果和第一类型任务的任务逻辑得到。
例如,某一第一类型任务的任务逻辑是:每一个分片任务执行结果均为执行成功时,目标执行结果为执行成功。此时,可以对每一个分片任务的分片任务执行结果作与运算,以确定第一类型任务的目标执行结果。
本公开实施例的分布式任务调度方法,针对第一类型任务,第一类型任务被划分为多个分片任务被独立执行,执行后得到的分片执行结果和第一类型任务的任务逻辑两者可以确定第一类型任务的目标执行结果。即,第一类型任务被划分为多个分片任务后多个分片任务可以并行、独立执行,得到对应的分片执行结果,通过任务逻辑,可以灵活、高效地从分片执行结果得到第一类型任务的目标执行结果,具有更高的分布式任务调度效率。
示例性地,可以在操作S230之后执行操作S310~操作S320。
根据本公开又一实施例的分布式任务调度方法,可以根据第二目标执行实例执行第二类型任务,得到第二类型任务的目标执行结果。
图5示意性示出了根据本公开又一实施例的分布式任务调度方法的示意图。
如图5所示,根据本公开实施例的分布式任务调度方法400可以包括操作S410。
在操作S410,响应于针对待执行任务的操作指令,对待执行任务进行相应的操作,得到操作后的待执行任务。
示例性地,操作指令可以包括以下中的至少一个:编排操作、增加操作、删除操作、恢复操作以及更新操作。
编排操作即对待执行任务进行任务编排的操作。待执行任务进行任务编排后可以形成新的待执行任务。
示例性地,可以对第一类型任务的分片任务、第二类型任务中的至少一个进行任务编排。
示例性地,相关人员可以通过操作界面发出操作指令。
本公开实施例的分布式任务调度方法,通过对待执行任务进行编排、增加、删除、暂停、回复以及更新的操作,可以根据需求,动态、灵活地对待执行任务进行实时的相关操作,提高分布式任务调度的灵活性,可以适应实时修改任务的场景。
示例性地,可以在操作S210之前执行操作S410。
示例性地,根据本公开又一实施例的分布式任务调度方法还可以包括:根据动态脚本执行操作指令。
动态脚本例如可以由Groovy这一具体的动态类型语言编写。
本公开实施例的分布式任务调度方法,通过动态脚本,可以自动、实时地对待执行任务进行相关操作,提高分布式任务调度的灵活性和效率。
图6示意性示出了根据本公开又一实施例的分布式任务调度方法的流程图。
如图6所示,根据本公开实施例的分布式任务调度方法500可以包括操作S510~操作S520。其中,待执行任务经过编排操作得到编排任务。
在操作S510,对编排任务进行前置任务循环依赖检测,得到检测结果。
前置任务循环依赖检测可以理解为有向无环检测。
示例性地,可以通过拓扑排序的方式对编排任务进行前置任务循环依赖检测。
示例性地,还可以通过将编排任务中的每一个待执行任务放置到Hashset(Hashset,即哈希集合)中,如果增加待执行任务时已有数据则可以确定对该编排任务进行前置任务循环依赖检测的检测结果为存在前置任务循环依赖。
在操作S520,在检测结果为存在前置任务循环依赖时,生成告警信息。
需要说明的是,如果一个编排任务有多个同级前置任务依赖,则可以组成多个链表,可以对每一个链表进行前置任务循环依赖检测,在任意一个链表的检测结果为存在前置任务循环依赖时,该编排任务即存在前置任务循环依赖。
可以理解,在编排任务出现前置任务循环依赖时,编排任务会一直处于执行的状态,即出现编排错误,影响正常的任务调度。
根据本公开实施例的分布式任务调度方法,通过对编排任务进行前置任务循环依赖检测,可以对编排任务的合法性进行检测,利用生成的告警信息提示编排错误的编排任务,确保任务调度正常进行,分布式任务调度的效率更高。
示例性地,可以在操作S410之后执行操作S S510~操作S520。
图7示意性示出了根据本公开又一实施例的分布式任务调度方法的流程图。
如图7所示,根据本公开实施例的分布式任务调度方法600可以包括操作S610。
在操作S610,响应于目标执行结果为执行失败,根据实例选择策略确定二次任务执行实例。
二次任务执行实例用于重新执行执行失败的触发任务,实例选择策略包括指定策略和竞争策略。
示例性地,可以通过随机选择算法执行指定策略,或者由相关人员指定二次任务执行实例。
竞争策略已经在上文解释说明,在此不再赘述。
示例性地,在执行失败的触发任务为分片任务时,可以通过指定策略确定二次任务执行实例。在执行失败的触发任务为第二类型任务时,可以通过竞争策略确定二次任务执行实例。
根据本公开实施例的分布式任务调度方法,可以针对执行失败的触发任务,自动确定重新执行的二次任务执行实例。在触发任务执行失败时,可以迅速地响应,并通过二次任务执行实例重新执行,推进任务的调度和执行流程,具有更高的任务调度效率。
示例性地,可以在操作S320之后执行操作S610。
示例性地,根据本公开另一实施例的分布式任务调度方法,每一个执行实例与每一个调度管理实例可以通过服务注册和服务心跳进行实例状态的通信。
服务注册可以理解为:服务进程在注册中心注册自己的元数据信息。如果服务有多个实例,其中一个示例出现宕机,注册中心可以实时感知到,并将该实例信息从列表中移出(即摘机)。
可以使用服务心跳的方式实现摘机,服务心跳包括主动心跳检测和被动心跳检测两种方式。
被动心跳检测是指服务主动向注册中心发送心跳消息,时间间隔可以自定义,注册中心在三个时间间隔内若没有接受到实例的心跳消息,则会将该实例从列表中移除。主动心跳检测由注册中心主动发起,每隔几秒钟会给列表中的服务实例发送心跳检测消息,如果多个周期内未发送成功或者未收到回复将会主动移除该实例。
本公开实施例的分布式任务调度方法,通过服务注册与服务心跳,可以维持调度管理实例与执行实例之间实时通信,确保执行相应操作的执行实例或者调度管理实例均为有效的状态。
示例性地,根据本公开又一实施例的分布式任务调度方法,执行实例与调度管理实例可以通过消息队列进行任务调度消息的通信。
示例性地,任务调度消息可以包括:服务注册的信息、服务心跳的信息、目标执行结果以及待执行任务的信息。
示例性地,消息队列可以包括延时队列。消息队列可以理解为在消息传输过程中保存消息的容器。延时队列中的消息可以在指定的时间点被消费。
本公开实施例的分布式任务调度方法,通过消息队列进行任务调度消息的通信,可以实现异步、解耦以及削峰,提高系统性能和稳定性。
消息队列中,由执行实例作为生产者产生服务注册的信息和服务心跳的信息,由调度管理实例作为消费者消费消息队列中服务注册的信息和服务心跳的信息。
示例性地,消息队列中的服务注册的信息、服务心跳的信息可以以广播模式通知消费者。
如图8A所示,广播模式可以理解为:生产者P产生消息,将消息发送至交换机X中,多个消息队列可以绑定到交换机X上,交换机X可以将消息发送至多个消息队列中,各个消费者监听各自的消息队列,并消费各自消息队列中的消息。图8A示意性示出了两个消费者和两个消息队列,即消费者C1和消费者C2,消息队列MQ1和消息队列MQ2。
消息队列中,由执行实例作为生产者产生目标执行结果,由调度管理实例作为消费者消费消息队列中目标执行结果。
示例性地,消息队列中的目标执行结果可以以广播模式通知消费者。
消息队列中,由调度管理实例作为生产者产生待执行任务的信息,待执行任务具体为第一类型任务的分片任务,由执行实例作为消费者消费消息队列中分片任务的信息。
示例性地,消息队列中的分片任务的信息可以以简单模式通知消费者。
如图8B所示,简单模式可以理解为:生产者P产生消息,将该消息发送至消息队列MQ中,消费者C消费消息队列MQ中的消息。
消息队列中,由调度管理实例作为生产者产生待执行任务的信息,待执行任务具体为第二类型任务,由执行实例作为消费者消费消息队列中第二类型任务的信息。
示例性地,消息队列中的第二类型任务的信息可以以工作模式通知消费者。
如图8C所示,工作模式可以理解为:生产者P产生消息,将该消息发送至消息队列MQ中,由多个消费者监听消息队列MQ中的消息,并通过竞争,消费消息队列MQ中的消息。图8C示意性示出了两个消费者,即消费者C3和消费者C4。
示例性地,根据本公开又一实施例的分布式任务调度方法,调度管理集群可以包括至少一个调度管理节点,每一个调度管理节点可以运行至少一个调度管理实例。分布式任务调度方法还可以包括以下操作:将待执行任务缓存至调调度管理节点的本地位置和/或将执行实例缓存至调度管理节点的本地位置。
可以理解,调度管理节点是调度管理实例运行的节点。
本公开实施例的分布式任务调度方法,通过将待执行任务缓存至调度管理节点的本地位置和/或将执行实例缓存至调度管理节点的本地位置,使得调度管理实例可以更加快速和高效地获取待执行任务以及维护执行实例的信息,具有更好的性能。
示例性地,根据本公开又一实施例的分布式任务调度方法,其中,调度管理节点可以包括调度管理主节点和调度管理从节点,第一调度管理实例可以运行于调度管理主节点上。分布式任务调度方法还可以包括以下操作:响应于调度管理主节点失效,从调度管理从节点中确定一个调度管理替换主节点。
调度管理替换主节点用于替换失效的第一调度管理主节点。
示例性地,可以通过竞争策略从调度管理从节点中确定一个调度管理替换主节点。
本公开实施例的分布式任务调度方法,第一调度管理节点上运行第一调度管理实例,第一调度管理实例用于调度触发任务,在调度管理主节点失效时,通过调度管理从节点竞争的方式,可以从调度管理从节点中确定一个调度管理替换主节点,确保第一调度管理实例可以正常运行,不依赖于锁机制,对于调度管理主节点宕机失效等情况,可以快速响应并可以灵活地确定一个调度管理替换主节点,具有更高的分布式任务调度效率。
根据本公开又一实施例的分布式任务调度方法,其中,待执行任务可以存储于任务库中,调度管理实例还可以包括第二调度管理实例,第二调度管理实例可以运行于调度管理从节点、调度管理主节点两者中的至少一者。分布式任务调度方法还可以包括以下操作:根据调度管理节点本地维护执行实例的信息;响应于任务调度成功指令,根据调度管理实例,确定下次调度时间;以及根据调度管理实例,更新任务库与消息队列。
示例性地,由于HashMap(哈希映射)的key值(键值)可以表征执行实例的标识信息,因此,可以通过HashMap的key值本地维护执行实例的信息。
本公开实施例的分布式任务调度方法,通过调度管理节点本地维护执行实例的信息,使得调度管理节点可以同步执行实例的信息,有效地分配执行实例。通过调度管理实例确定下次调度时间、更新任务库与消息队列,可以适应于任务的执行情况,更新相关的信息,有效地进行任务调度。具有更高的分布式任务调度效率。
需要说明的是,本公开实施例的第一调度管理实例用于调度任务,第二调度管理实例用于更新数据,并不执行调度任务的操作。第一调度管理实例包括一个,第二调度管理实例包括多个,由此,可以确保任务调度的唯一性,第二调度管理实例还可以在第一调度管理实例失效时替换第一调度管理实例,确保任务调度可以顺利执行。
图9示例性示出了根据本公开实施例的分布式任务调度方法的系统架构示意图。
如图9所示,根据本公开实施例的分布式任务调度方法的系统架构包括任务库701、调度管理集群702、任务执行集群703以及调度通信模块704。
其中,待执行任务存储于任务库中,图9示意性示出了待执行任务包括第一类型任务M1和第二类型任务M2,第一类型任务M1包括x个分片任务,即分片任务F1至分片任务Fx。
图9示意性示出了:调度管理集群702可以包括n个调度管理实例,即调度管理实例DI1至调度管理实例DIn。任务执行集群703可以包括m个执行实例,即执行实例EI1至执行实例EIm。n的数值与m的数值均为正整数,且可以相同或者不同。
调度通信模块704可以通过服务注册和心跳实现调度管理实例与执行实例之间的通信,还可以根据第一类型任务和第二类型任务进行相应的通信,例如第一类型任务以简单模式进行消息队列的消息通知,第二类型任务以工作模式进行消息队列的消息通知。结果上报可以理解为第一类型任务和第二类型任务的目标执行结果的通信,例如,目标执行结果以广播模式进行消息队列的消息通知。
图10A示意性示出了根据本公开实施例的分布式任务调度方法中,调度管理实例启动时的流程示意图。图10B示意性示出了调度管理实例运行时的流程示意图。图10C示意性示出了第一调度管理实例执行任务调度时响应操作指示时的流程示意图,图10C以编排操作为例。图10D示意性示出了执行实例启动时的流程示意图。
综上,本公开实施例的分布式任务调度方法,可以适应分布式环境下待执行任务的数量多、待执行任务的类别多样的特点,分布式任务调度的灵活性高。还支持对待执行任务进行编排等操作,可以实时、动态地对待执行任务进行调整,可以使调度服务具有运行时扩展调度任务的能力,可以适应多种场景。通过消息队列可以提高通信效率和系统性能。本公开实施例的分布式任务调度方法的逻辑简单,对应的系统轻便、便于拓展,可以有效提高分布式任务调度的效率。
本公开实施例的分布式任务调度方法可以应用于各种分布式环境的任务调度,例如可以应用于金融领域,银行调度批量对账这一任务的场景下。
基于上述分布式任务调度方法,本公开还提供了一种分布式任务调度装置。以下将结合图11对该装置进行详细描述。
图11示意性示出了根据本公开实施例的分布式任务调度装置的结构框图。
如图11所示,该实施例的分布式任务调度装置800包括待执行任务读取模块810、触发任务确定模块820和目标执行实例确定模块830。
待执行任务读取模块810用于根据调度管理集群的调度管理实例读取待执行任务,其中,调度管理实例包括第一调度管理实例。
触发任务确定模块820用于响应于待执行任务被触发,确定触发任务。
目标执行实例确定模块830用于根据第一调度管理实例,确定目标执行实例,其中,目标执行实例用于执行触发任务,待执行任务包括第一类型任务,第一类型任务包括至少一个分片任务。
根据本公开的实施例,任务执行集群包括至少一个执行实例,目标执行实例是至少一个执行实例中的一个,目标执行实例包括第一目标执行实例。目标执行实例确定模块包括:第一目标执行实例确定子模块。
第一目标执行实例确定子模块,用于在第一调度管理实例,根据分片任务的元数据和执行实例的执行数据,匹配分片任务与执行实例,得到与分片任务一一对应的第一目标执行实例。
根据本公开的实施例,待执行任务还包括第二类型任务,目标执行实例包括第二目标执行实例。目标执行实例确定模块包括:第二类型任务通知子模块和第二目标执行实例确定子模块。
第二类型任务通知子模块,用于在触发任务为第二类型任务时,向任务执行集群的每一个执行实例通知第二类型任务。
第二目标执行实例确定子模块,用于在第一调度管理实例,根据竞争策略,从执行实例中,确定竞争成功的执行实例为第二目标执行实例。
根据本公开实施例的分布式任务调度装置还包括:分片执行结果确定模块以及第一目标执行结果确定模块。
分片执行结果确定模块,用于针对第一类型任务,在每一个第一目标执行实例,根据分片任务的执行规则执行分片任务,得到每一个分片任务的分片执行结果。
第一目标执行结果确定模块,用于根据每一个分片执行结果和第一类型任务的任务逻辑,确定第一类型任务的目标执行结果。
根据本公开实施例的分布式任务调度装置还包括:待执行任务操作模块。
待执行任务操作模块,用于响应于针对待执行任务的操作指令,对待执行任务进行相应的操作,得到操作后的待执行任务,操作指令包括以下中的至少一个:编排操作、增加操作、删除操作、暂停操作、恢复操作以及更新操作。
根据本公开实施例的分布式任务调度装置还包括:脚本操作模块,用于根据动态脚本执行操作指令。
根据本公开实施例,待执行任务经过编排操作得到编排任务,分布式任务调度方法还包括:检测模块以及告警模块。
检测模块,用于对编排任务进行前置任务循环依赖检测,得到检测结果。
告警模块,用于在检测结果为存在前置任务循环依赖时,生成告警信息。
根据本公开实施例的分布式任务调度装置还包括:二次任务执行实例确定模块。
二次任务执行实例确定模块,用于响应于目标执行结果为执行失败,根据实例选择策略确定二次任务执行实例,二次任务执行实例用于重新执行执行失败的触发任务,实例选择策略包括指定策略和竞争策略。
根据本公开实施例,每一个执行实例与每一个调度管理实例通过服务注册和服务心跳进行实例状态的通信。
根据本公开实施例,执行实例与调度管理实例通过消息队列进行任务调度消息的通信,其中,任务调度消息包括:服务注册的信息、服务心跳的信息、目标执行结果以及待执行任务的信息。
根据本公开实施例,调度管理集群包括至少一个调度管理节点,每一个调度管理节点运行至少一个调度管理实例,分布式任务调度装置还包括:缓存模块。
缓存模块,用于将待执行任务缓存至调度管理节点的本地位置;和/或将执行实例缓存至调度管理节点的本地位置。
根据本公开实施例,调度管理节点包括调度管理主节点和调度管理从节点,第一调度管理实例运行于调度管理主节点上。分布式任务调度装置还包括:主节点替换模块。
主节点替换模块,用于响应于调度管理主节点失效,从调度管理从节点中确定一个调度管理替换主节点,其中,调度管理替换主节点用于替换失效的第一调度管理主节点。
根据本公开实施例,待执行任务存储于任务库中,调度管理实例还包括第二调度管理实例,第二调度管理实例运行于调度管理从节点、调度管理主节点两者中的至少一者,分布式任务调度装置还包括:执行实例维护模块、调度时间确定模块以及更新模块。
执行实例维护模块,用于根据调度管理节点本地维护执行实例的信息。
调度时间确定模块,用于响应于任务调度成功指令,根据调度管理实例,确定下次调度时间。
更新模块,用于根据调度管理实例,更新任务库与消息队列。
根据本公开的实施例,待执行任务读取模块810、触发任务确定模块820和目标执行实例确定模块830中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,待执行任务读取模块810、触发任务确定模块820和目标执行实例确定模块830中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,待执行任务读取模块810、触发任务确定模块820和目标执行实例确定模块830中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图12示意性示出了根据本公开实施例的适于实现分布式任务调度方法的电子设备的方框图。
如图12所示,根据本公开实施例的电子设备900包括处理器901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。处理器901例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器901还可以包括用于缓存用途的板载存储器。处理器901可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 903中,存储有电子设备900操作所需的各种程序和数据。处理器901、ROM902以及RAM 903通过总线904彼此相连。处理器901通过执行ROM 902和/或RAM 903中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 902和RAM 903以外的一个或多个存储器中。处理器901也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备900还可以包括输入/输出(I/O)接口905,输入/输出(I/O)接口905也连接至总线904。电子设备900还可以包括连接至I/O接口905的以下部件中的一项或多项:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 902和/或RAM 903和/或ROM 902和RAM 903以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的分布式任务调度方法。
在该计算机程序被处理器901执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分909被下载和安装,和/或从可拆卸介质911被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被处理器901执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (17)
1.一种分布式任务调度方法,包括:
根据调度管理集群的调度管理实例读取待执行任务,其中,所述调度管理实例包括第一调度管理实例;
响应于所述待执行任务被触发,确定触发任务;以及
根据所述第一调度管理实例,确定目标执行实例,其中,所述目标执行实例用于执行所述触发任务,所述待执行任务包括第一类型任务,所述第一类型任务包括至少一个分片任务。
2.根据权利要求1所述的方法,其中,任务执行集群包括至少一个执行实例,所述目标执行实例是所述至少一个执行实例中的一个,所述目标执行实例包括第一目标执行实例;所述根据所述调度管理集群的第一调度管理实例,确定目标执行实例包括:
在所述第一调度管理实例,根据所述分片任务的元数据和所述执行实例的执行数据,匹配所述分片任务与所述执行实例,得到与所述分片任务一一对应的所述第一目标执行实例。
3.根据权利要求2所述的方法,其中,所述待执行任务还包括第二类型任务,所述目标执行实例包括第二目标执行实例;所述根据所述调度管理集群的第一调度管理实例,确定目标执行实例包括:
在所述触发任务为所述第二类型任务时,向所述任务执行集群的每一个所述执行实例通知所述第二类型任务;以及
在所述第一调度管理实例,根据竞争策略,从所述执行实例中,确定竞争成功的所述执行实例为所述第二目标执行实例。
4.根据权利要求3所述的方法,还包括:
针对所述第一类型任务,在每一个所述第一目标执行实例,根据所述分片任务的执行规则执行所述分片任务,得到每一个所述分片任务的分片执行结果;以及
根据每一个所述分片执行结果和所述第一类型任务的任务逻辑,确定所述第一类型任务的目标执行结果。
5.根据权利要求4所述的方法,还包括:
响应于针对所述待执行任务的操作指令,对所述待执行任务进行相应的操作,得到操作后的待执行任务,所述操作指令包括以下中的至少一个:编排操作、增加操作、删除操作、暂停操作、恢复操作以及更新操作。
6.根据权利要求5所述的方法,还包括:
根据动态脚本执行所述操作指令。
7.根据权利要求5所述的方法,其中,所述待执行任务经过所述编排操作得到编排任务,所述分布式任务调度方法还包括:
对所述编排任务进行前置任务循环依赖检测,得到检测结果;以及
在所述检测结果为存在前置任务循环依赖时,生成告警信息。
8.根据权利要求4所述的方法,还包括:
响应于所述目标执行结果为执行失败,根据实例选择策略确定二次任务执行实例,所述二次任务执行实例用于重新执行执行失败的所述触发任务,所述实例选择策略包括指定策略和所述竞争策略。
9.根据权利要求5所述的方法,其中,每一个所述执行实例与每一个所述调度管理实例通过服务注册和服务心跳进行实例状态的通信。
10.根据权利要求9所述的方法,其中,所述执行实例与所述调度管理实例通过消息队列进行任务调度消息的通信,其中,所述任务调度消息包括:所述服务注册的信息、所述服务心跳的信息、所述目标执行结果以及所述待执行任务的信息。
11.根据权利要求10所述的方法,其中,所述调度管理集群包括至少一个调度管理节点,每一个所述调度管理节点运行至少一个所述调度管理实例,所述分布式任务调度方法还包括:
将所述待执行任务缓存至所述调度管理节点的本地位置;和/或
将所述执行实例缓存至所述调度管理节点的本地位置。
12.根据权利要求11所述的方法,其中,所述调度管理节点包括调度管理主节点和调度管理从节点,所述第一调度管理实例运行于所述调度管理主节点上,所述分布式任务调度方法还包括:
响应于所述调度管理主节点失效,从所述调度管理从节点中确定一个调度管理替换主节点,其中,所述调度管理替换主节点用于替换失效的所述第一调度管理主节点。
13.根据权利要求12所述的方法,其中,所述待执行任务存储于任务库中,所述调度管理实例还包括第二调度管理实例,所述第二调度管理实例运行于所述调度管理从节点、所述调度管理主节点两者中的至少一者,所述分布式任务调度方法还包括:
根据所述调度管理节点本地维护所述执行实例的信息;
响应于任务调度成功指令,根据所述调度管理实例,确定下次调度时间;以及
根据所述调度管理实例,更新所述任务库与所述消息队列。
14.一种分布式任务调度装置,包括:
待执行任务读取模块,用于根据调度管理集群的调度管理实例读取待执行任务,其中,所述调度管理实例包括第一调度管理实例;
触发任务确定模块,用于响应于所述待执行任务被触发,确定触发任务;以及
目标执行实例确定模块,用于根据所述第一调度管理实例,确定目标执行实例,其中,所述目标执行实例用于执行所述触发任务,所述待执行任务包括第一类型任务,所述第一类型任务包括至少一个分片任务。
15.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~13中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~13中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210477903.3A CN114756354A (zh) | 2022-04-29 | 2022-04-29 | 分布式任务调度方法、装置、设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210477903.3A CN114756354A (zh) | 2022-04-29 | 2022-04-29 | 分布式任务调度方法、装置、设备、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114756354A true CN114756354A (zh) | 2022-07-15 |
Family
ID=82332803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210477903.3A Pending CN114756354A (zh) | 2022-04-29 | 2022-04-29 | 分布式任务调度方法、装置、设备、介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114756354A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118467140A (zh) * | 2024-07-10 | 2024-08-09 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种任务调度方法和系统 |
CN118467140B (zh) * | 2024-07-10 | 2024-10-22 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种任务调度方法和系统 |
-
2022
- 2022-04-29 CN CN202210477903.3A patent/CN114756354A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118467140A (zh) * | 2024-07-10 | 2024-08-09 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种任务调度方法和系统 |
CN118467140B (zh) * | 2024-07-10 | 2024-10-22 | 凯美瑞德(苏州)信息科技股份有限公司 | 一种任务调度方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11748154B2 (en) | Computing node job assignment using multiple schedulers | |
CN106919445B (zh) | 一种在集群中并行调度容器的方法和装置 | |
RU2589357C2 (ru) | Автоматизированное восстановление и передача по инстанции в комплексных распределенных приложениях | |
US10338964B1 (en) | Computing node job assignment for distribution of scheduling operations | |
CN112416581B (zh) | 定时任务的分布式调用系统 | |
US9696985B1 (en) | Patching of virtual machines within sequential time windows | |
CN106817408B (zh) | 一种分布式服务器集群调度方法及装置 | |
CN109656782A (zh) | 可视化调度监控方法、装置及服务器 | |
CN110795503A (zh) | 分布式存储系统的多集群数据同步方法及相关装置 | |
CN111459763A (zh) | 跨kubernetes集群监控系统及方法 | |
US10230820B2 (en) | Analytics driven update notification | |
CN111526049B (zh) | 运维系统、运维方法、电子设备和存储介质 | |
US10719359B2 (en) | Periodic task execution in an automated context | |
CN111190732A (zh) | 定时任务处理系统及方法、存储介质和电子设备 | |
CN110998535A (zh) | 经由对应用操作请求的分析来恢复应用功能 | |
CN113656239A (zh) | 针对中间件的监控方法、装置及计算机程序产品 | |
CN113268318A (zh) | 一种任务调度的方法和分布式系统 | |
CN116594752A (zh) | 流程调度方法、装置、设备、介质和程序产品 | |
CN114756354A (zh) | 分布式任务调度方法、装置、设备、介质和程序产品 | |
CN112445597B (zh) | 定时任务调度方法和装置 | |
CN115373886A (zh) | 服务群组容器停机方法、装置、计算机设备和存储介质 | |
US20180309622A1 (en) | System and method for generating an alert associated with a device consuming a resource | |
CN111917812B (zh) | 数据的传输控制方法、装置、设备以及存储介质 | |
CN116225668B (zh) | 高轨多星定位任务组合调度方法、装置、设备和介质 | |
US20100228372A1 (en) | Per-station start time constraint |
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 |