集群模式下分布式任务调度方法、装置、设备及存储介质与流程

文档序号:31467088发布日期:2022-09-09 21:48阅读:48来源:国知局
集群模式下分布式任务调度方法、装置、设备及存储介质与流程

1.本发明涉及通信及云计算技术领域,尤其涉及一种集群模式下分布式任务调度方法、装置、设备及存储介质。


背景技术:

2.随着网络及通信技术的发展,软件项目变得越来越复杂,微服务架构的应用也越来越广泛。在基于微服务的分布式业务系统中,存在多个业务系统都有定时任务执行需求的情况,如果将所有作业任务的调度都放在自身的业务系统中,一方面会增加业务系统的复杂度,另一方面也不方便系统的管理。
3.quartz、xxl-job,elastic-job等都是可实现分布式任务调度和管理的任务调度框架/软件/组件/模块/系统。以quartz为例,quartz支持集群和事务,quartz可以用来执行定时任务,它有三个核心模块,分别为scheduler(任务调度器)、trigger(任务触发器)和job(任务执行器)。job用来执行用户的任务,trigger用来设置任务的执行时间、执行次数,scheduler可以把job和trigger绑定到一起,实现在指定的时间、执行指定的任务,从而实现定时执行某个业务。
4.上述任务调度软件存在一些缺陷。以quartz为例,首先,在quartz集群模式下,无法动态的调整线程池的大小,易造成资源浪费。其次,在quartz集群模式下,无法停止单次调度任务中的线程。另外,在quart集群模式下,也无法对周期调度的任务实现线程顺序执行或并发执行的动态切换。


技术实现要素:

5.有鉴于此,本发明提供一种集群模式下分布式任务调度方法、装置、设备及存储介质,用于解决任务调度框架调度不灵活和调度效率不高的技术问题。
6.基于本发明实施例的一方面,本发明提供了一种集群模式下分布式任务调度方法,该方法应用于为分布式计算集群提供任务调度功能的任务调度节点,该方法包括:
7.通过线程监控器监听任务调度信息库中的任务数量,根据任务数量动态地调整线程池的配置参数;
8.提供停止作业任务接口,通过任务监控器响应停止作业任务指令,获取执行作业任务的线程信息,停止对应作业任务;
9.通过任务监控器监控周期性调度的作业任务的执行情况,根据作业任务的执行情况及资源负载情况动态调整周期性调度的作业任务的调度策略。
10.进一步地,所述根据任务数量动态地调整线程池的配置参数的方法为:
11.若当前任务数量超过前一统计周期的任务数量且小于预设的最大任务数量门限值时,增加线程池的线程数量;若当前任务数量小于前一统计周期任务数量的预设比例且大于预设的最小任务数量门限值时,减小线程池的线程数量。
12.进一步地,所述通过任务监控器响应停止作业任务指令,获取执行作业任务的线
程信息,停止对应作业任务的步骤包括:
13.所述任务监控器根据停止作业任务指令中携带的作业任务标识在任务调度信息库中查询执行对应作业任务的线程信息,向线程所在计算节点发送停止作业任务的指令以使计算节点停止作业任务的执行。
14.进一步地,所述通过任务监控器监控周期性调度的作业任务的执行情况,根据作业任务的执行情况及资源负载情况动态调整周期性调度的作业任务的调度策略的方法为:
15.通过任务监控器周期性获取所述周期性调度的作业任务的执行情况以及执行所述周期性调度的作业任务的计算节点和业务数据库的资源负载情况;
16.在所述计算节点和业务数据库的资源充足的情况下,调整所述作业任务的调度策略,允许所述周期性调度的作业任务并行执行;
17.在所述计算节点和业务数据库的资源不足的情况下,调整所述作业任务的调度策略,使所述周期性调度的作业任务串行执行。
18.进一步地,所述周期性调度的作业任务的执行情况包括作业任务是否完成、未完成作业任务的预估完成时长;
19.在前一所述周期性调度的作业任务未完成的情况下,所述任务监控器根据所述计算节点和业务数据库的资源情况,动态调整后续所述所述周期性调度的作业任务的调度策略;
20.任务调度器根据修改后的任务调度策略进行任务调度。
21.基于本发明实施例的另一方面,本发明还提供一种集群模式下分布式任务调度装置,该装置应用于为分布式计算集群提供任务调度功能的任务调度节点,该装置包括:
22.线程监控器,用于监听任务调度信息库中的任务数量,根据任务数量动态地调整线程池的配置参数;
23.任务监控器,用于提供停止作业任务接口,响应停止作业任务指令,获取执行作业任务的线程信息,停止对应作业任务;还用于监控周期性调度的作业任务的执行情况,根据作业任务的执行情况及资源负载情况动态调整周期性调度的作业任务的调度策略。
24.进一步地,所述任务监控器在当前任务数量超过前一统计周期的任务数量且小于预设的最大任务数量门限值时,增加线程池的线程数量;在当前任务数量小于前一统计周期任务数量的预设比例且大于预设的最小任务数量门限值时,减小线程池的线程数量。
25.进一步地,所述任务监控器包括:
26.任务停止模块,用于根据停止作业任务指令中携带的作业任务标识在任务调度信息库中查询执行对应作业任务的线程信息,向线程所在计算节点发送停止作业任务的指令以使计算节点停止作业任务的执行;
27.状态资源获取模块,用于周期性获取所述周期性调度的作业任务的执行情况以及执行所述周期性调度的作业任务的计算节点和业务数据库的资源负载情况;
28.调度策略调整模块,用于在所述计算节点和业务数据库的资源充足的情况下,调整所述作业任务的调度策略,允许所述周期性调度的作业任务并行执行;在所述计算节点和业务数据库的资源不足的情况下,调整所述作业任务的调度策略,使所述周期性调度的作业任务串行执行。
29.本发明通过增加线程监控器监听任务数量,根据任务数量等信息动态地调整线程
池的配置参数;通过增加任务监控器监控作业任务的执行状态,提供停止作业任务的接口以实现按需停止作业任务的能力;通过任务监控器监控周期性调度的作业任务的执行情况,提供任务调度策略的动态调整接口,以实现根据资源负载动态调整周期性调度的作业任务的调度策略的功能。本发明通过新增线程监控器和任务监控器能够提高分布式任务调度框架的作业任务的调度灵活性和调度效率,避免资源的浪费,提高资源的利用率,预防服务和数据库的宕机。
附图说明
30.为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
31.图1为应用本发明提供的集群模式下分布式任务调度方法的分布式计算架构的示意图;
32.图2为本发明一实施例提供的集群模式下分布式任务调度方法步骤流程示例图;
33.图3为用于实现本发明提供的集群模式下分布式任务调度方法的电子设备结构示意图。
具体实施方式
34.在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
35.应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
36.本发明目的是解决集群模式下分布式应用场景中任务调度框架不能动态调整线程池大小、不能根据需要停止调度任务以及不能动态调整周期性调度的作业任务调度策略等技术问题。为实现本发明的发明目的,本发明提供一种集群模式下分布式任务调度方法,本发明的基本思想是:增加线程监控器监听任务数量,根据任务数量等信息动态地调整线程池的配置参数;增加任务监控器监控作业任务的执行状态,提供停止作业任务的接口以实现按需停止作业任务的能力;通过任务监控器监控周期性调度的作业任务的执行情况,提供任务调度策略的动态调整接口,以实现根据资源负载动态调整周期性调度的作业任务的调度策略的功能。本发明通过新增线程监控器和任务监控器能够提高如quartz、xxl-job,elastic-job等分布式任务调度框架的作业任务的调度灵活性和调度效率,避免资源的浪费,提高资源的利用率,预防服务和数据库的宕机。
37.基于本发明的基本思想,以下结合附图和具体实施例来描述本发明的具体实现过
程。
38.图1为应用本发明提供的集群模式下分布式任务调度方法的分布式计算架构的示意图。其中,包括任务调度集群100、分布式计算集群130、业务数据库140,任务调度集群100中可包括一个或多个任务调度节点110,任务调度节点110生成和管理维护的与任务调度相关的信息存储在任务调度信息库120。分布式计算集群130用于实际执行作业任务,作业任务所处理的业务数据存储于业务数据库140中。
39.任务调度节点110中包括的基本组件有任务调度器(scheduler)、任务触发器(trigger)和任务执行器(job),本发明在quartz基本组件的基础上增加了线程监控器组件和任务监控器组件。
40.任务调度器用于将触发器和作业任务绑定,作业任务信息、触发器信息以及作业任务和触发器的绑定关系存储在任务调度信息库120中。任务执行器用于从线程池中获取线程按作业任务和触发器的绑定关系将作业任务派发给分布式计算集群中计算节点去执行作业任务。
41.线程池是指为执行作业任务而创建的线程的集合。线程池中的线程在系统启动时即创建,在任务执行器将作业任务分配给一个线程执行时,该线程从空闲状态转入工作状态,当作业任务执行完作业任务时,任务执行器会将所使用的线程释放回线程池,线程池中的空闲状态的线程不会被杀死,会等待被调度执行下一个作业任务。
42.线程监控器,用于监听作业任务数量并根据作业任务数量动态调整线程池的大小。线程监控器通过注册事件来监听作业任务数量,事件发生者(事件源)会给注册该事件的监听者(线程监控器)发送消息,告诉监听者某些信息,同时监听者也可以获得一份事件对象,根据这个对象可以获得相关属性和执行相关操作。
43.任务监控器,用于监控作业任务执行情况,响应停止作业任务指令关闭指定的作业任务;还用于根据作业任务的执行情况动态调整周期性调度的作业任务的调度策略。任务监控器主要目的是及时清除故障作业任务,根据计算节点资源使用情况调整调度策略,提高服务的高可用性。
44.任务调度集群100为分布式计算集群130提供大量作业任务的调度功能。在采用分布式计算架构对大量数据处理的大数据业务应用场景中,用户的业务数据库140中的数据量往往是巨大的,例如数据记录可能达到1亿条以上,任务调度集群100调度作业任务对于海量的业务数据进行处理,对作业任务进行高效、灵活、高可用的调度是业务系统的一个核心性能指标。
45.本发明一实施例提供的业务应用场景中,通过检核任务对业务数据库存储的大量业务数据进行数据质量的检查和核对(简称检核),所使用的任务调度框架采用quartz实现。以下以该应用场景为例进行具体实施例的描述,但本发明保护范围并不限于该应用场景,同样也适用于类似的其它应用场景及其它的任务调度框架。
46.图2为本发明一实施例提供的集群模式下分布式任务调度方法步骤流程示例图。该实施例的方法应用于如图1所示例的任务调度节点110,该方法包括:
47.步骤201.通过线程监控器监听任务调度信息库中的任务数量,根据任务数量动态地调整线程池的配置参数;
48.以提供数据质量服务的检核业务为例,线程监控器通过注册监听事件监听数据质
量服务的检核任务,如果检核任务的数量增加了,就动态增加线程池中线程数量,使得线程池能够容纳更多的线程用于完成检核作业任务;当检核任务减少时,就动态减小线程池中的线程数量,从而减少资源的浪费和资源使用的不足。
49.具体线程池动态扩展和收缩的方法可以是基于预先设置的动态调整策略来控制,例如动态调整策略可以是:若当前作业任务数量超过前一统计周期的任务数量且小于预设的最大任务数量门限值时,将线程池的线程数量增加10%;若当前任务数量小于前一统计周期任务数量的50%且大于预设的最小任务数量门限值时,将线程池的线程数量减少10%。
50.上述线程池的扩展和收缩的示例仅考虑了任务数量的因素,在实际业务中,还可根据任务并行性、任务所需资源量、任务执行时间长度等因素综合进行决策。其中,最大可承载任务数量门限值和最小任务数量门限值的设置需要考虑分布式计算集群的硬件资源配置、调度任务的数量、执行的业务所需要消耗的时间等因素综合判断进行配置。
51.一个检核业务的应用场景是,通过任务调度集群调度多个检核任务基于检核规则对业务数据库的数据进行检核从而发现问题数据,例如对业务数据库a中的表a的字段b进行空值校验,对字段c做唯一约束校验,对表b的字段d进行值合法性检测等等。多个检核任务可能会并行执行,当针对同一业务数据库同时并行执行多个检核任务时,可能会对业务数据库或计算节点造成较大的压力。
52.步骤202.提供停止作业任务接口,通过任务监控器响应停止作业任务指令,获取执行作业任务的线程信息,停止对应作业任务;
53.本发明增加任务监控器,任务监控器提供停止作业任务接口,当用户通过停止作业任务接口发送停止作业任务指令时,任务监控器响应停止作业任务指令,在任务调度信息库中查询执行对应作业任务的线程信息,向线程所在计算节点发送停止作业任务的指令以使计算节点停止作业任务的执行。
54.分布式计算应用项目中,例如在使用quartz进行任务调度时,由于某些软硬件原因,可能某个单次调度或周期调度的作业任务的执行线程会出现故障导致无法停止,为解决该技术问题,本发明为quartz新增了任务监控器。
55.停止作业任务指令中会携带作业任务标识,任务监控器根据作业任务标识在任务调度信息库中查询执行对应作业任务的线程的计算节点的信息,向计算节点发送停止作业任务的指令以使计算节点停止作业任务的执行。分布式计算集群中的计算节点在接收到停止作业任务的指令后,根据指令中的线程和作业任务标识找到执行对应作业任务的线程,停止对应线程的执行,从而将线程释放会线程池。
56.步骤203.通过任务监控器监控周期性调度的作业任务的执行情况,根据作业任务的执行情况及资源负载情况动态调整周期性调度的作业任务的调度策略。
57.对于大量需要周期性调度的作业任务,需要启动大量线程进行处理,可能会因为资源使用的问题,导致执行作业任务的计算节点的服务器宕机。针对分布式应用场景中,周期性调度的作业任务引起的服务宕机、目标数据库宕机问题,本发明提出了动态调整周期性作业任务调度策略的技术方案。
58.本发明一实施例中,通过任务监控器进行灵活的调度策略的控制,通过获取计算节点的资源负载情况(例如数据库连接数、可用内存使用比例、cpu使用率等)以及业务数据
specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
64.应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
65.进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
66.以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1