CN114090198A - 分布式任务调度方法、装置、电子设备及存储介质 - Google Patents
分布式任务调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114090198A CN114090198A CN202111256508.4A CN202111256508A CN114090198A CN 114090198 A CN114090198 A CN 114090198A CN 202111256508 A CN202111256508 A CN 202111256508A CN 114090198 A CN114090198 A CN 114090198A
- Authority
- CN
- China
- Prior art keywords
- task
- executed
- scheduling
- registered
- tasks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000011161 development Methods 0.000 claims abstract description 20
- 239000012634 fragment Substances 0.000 claims abstract description 16
- 230000000875 corresponding effect Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 16
- 238000013467 fragmentation Methods 0.000 claims description 15
- 238000006062 fragmentation reaction Methods 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 13
- 230000001960 triggered effect Effects 0.000 claims description 9
- 230000002596 correlated effect Effects 0.000 claims description 4
- 230000007547 defect Effects 0.000 abstract description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种分布式任务调度方法、装置、电子设备及存储介质,分布式任务调度方法包括:基于封装的开发工具包读取待执行任务以及服务注册信息,并基于所述服务注册信息,将所述待执行任务进行注册;对已注册的待执行任务进行触发,加入调度队列;基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器。本发明提供分布式任务调度方法、装置、电子设备及存储介质,可以解决现有技术中不支持分布式任务主动自动注册和发现的缺陷,实现自动注册和发现分布式任务,提高分布式任务调度效率。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种分布式任务调度方法、装置、电子设备及存储介质。
背景技术
随着互联网的发展,线上***日益增加,***赋能业务发展的同时也增加的***的复杂度。经常需要定时触发一些业务逻辑,比如凌晨时间要定时计算前一天的业务数据报表;定时触发一些业务内容同步,比如定期商品信息同步等。目前,市面上存在的定时任务解决方案,不支持分布式任务主动自动注册和发现,只能手动添加任务,开发费时费力,服务器节点变化要手动变更任务配置,效率低下。
发明内容
本发明提供一种分布式任务调度方法、装置、电子设备及存储介质,用以解决现有技术中不支持分布式任务主动自动注册和发现的缺陷,实现自动注册和发现分布式任务,提高分布式任务调度效率。
本发明提供一种分布式任务调度方法,包括:
基于封装的开发工具包读取待执行任务以及服务注册信息,并基于所述服务注册信息,将所述待执行任务进行注册;
对已注册的待执行任务进行触发,加入调度队列;
基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器。
根据本发明提供的分布式任务调度方法,所述对已注册的待执行任务进行触发,加入调度队列,包括:
基于第一线程和/或第二线程对所述已注册的待执行任务进行定时触发,加入所述调度队列;
其中,所述第一线程基于轮询方式获取所述已注册的待执行任务,并将所述已注册的待执行任务加入哈希队列;所述第二线程基于预设频率获取所述已注册的待执行任务。
根据本发明提供的分布式任务调度方法,还包括:
在基于所述执行器,执行完所述已注册的待执行任务后,将对应的任务执行结果发送至操作界面进行显示。
根据本发明提供的分布式任务调度方法,还包括:
获取服务器节点信息,在所述服务器节点信息发生变化的情况下,基于新的服务器节点信息,对所述服务注册信息进行更新。
根据本发明提供的分布式任务调度方法,还包括:
在基于所述任务执行结果,确定所述已注册的待执行任务执行失败的情况下,获取对应失败任务的重复执行次数;
在所述重复执行次数未达到预设限制次数的情况下,重新执行所述失败任务。
根据本发明提供的分布式任务调度方法,所述重新执行所述失败任务,包括:
在确定所述已注册的待执行任务执行失败,并经过目标时长后,基于所述调度器,将所述失败任务加入所述执行器;
其中,所述目标时长的大小与所述重复执行次数正相关。
根据本发明提供的分布式任务调度方法,所述基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器,包括:
对服务器节点执行心跳探测;
基于所述调度器,将所述已注册的待执行任务,分片调度至心跳探测成功的服务器节点,加入所述执行器,进行分片调度。
本发明还提供分布式任务调度装置,包括:
注册模块,用于基于封装的开发工具包读取待执行任务以及服务注册信息,并基于所述服务注册信息,将所述待执行任务进行注册;
触发模块,用于对已注册的待执行任务进行触发,加入调度队列;
调度模块,用于基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述分布式任务调度方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述分布式任务调度方法的步骤。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述分布式任务调度方法的步骤。
本发明提供的分布式任务调度方法、装置、电子设备及存储介质,通过封装的开发工具包读取待执行任务以及服务注册信息,就可以将待执行任务进行注册,再将已注册的待执行任务进行触发,加入调度队列,等到需要执行这些任务时,再将调度队列中的任务分片调度,加入执行器。该分布式任务调度方法,可以完全实现任务读取、注册、触发以及调度等工作,不需要人工进行手动调度。因此,本发明提供的分布式任务调度方法,可以解决现有技术中不支持分布式任务主动自动注册和发现的缺陷,实现自动注册和发现分布式任务,提高分布式任务调度效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的分布式任务调度方法的流程示意图之一;
图2是本发明提供的分布式任务调度方法的流程示意图之二;
图3是本发明提供的分布式任务调度装置的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明的分布式任务调度方法、装置、电子设备及存储介质。
本发明提供一种分布式任务调度方法,应用于服务器集群。该分布式任务调度方法包括:
步骤110、基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册。
可以理解的是,开发工具包可以是JDK(Java Development Kit,Java开发工具包),待执行任务是需要执行的逻辑任务。服务注册信息包含有任务信息,以及执行该任务的服务器节点信息,例如服务器节点的IP(Internet Protocol Address,互联网协议地址)地址以及端口信息。
可以先将主动注册任务的逻辑代码封装成一个功能模块,即JDK,对待执行任务进行注解配置,注解配置的待执行任务就可以被该功能模块读取,从而实现待执行任务的主动注册。
将待执行任务进行注册,可以是在已封装的调度管理模块中将待执行任务进行注册。
调度管理模块依托于多线程、数据队列的并发能力实现高并发调度,支持集群式部署,通过任务版本号的方式实现CASCentral Authentication Service,中央认证服务器乐观锁的任务调度。
任务在服务启动时自动向调度管理模块注册任务信息,调度管理模块通过k8s(即:kubernetes)原生的监听能力,监听服务各节点变化,自动管理任务的分片节点信息,实现任务的自动注册和监听。
步骤120、对已注册的待执行任务进行触发,加入调度队列。
可以理解的是,加入调度队列,也即是加入调度管理模块中的调度队列。基于触发器对已注册的待执行任务进行触发,触发器是任务平台的触发组件,依据相应的触发策略,到点触发相关的任务添加到调度器中进行调度执行。
调度队列也即是任务调度队列,在调度队列中的任务,会根据队列的次序依次执行。调度队列已在调度管理模块中封装好,不需要人员再做额外的操作。
步骤130、基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
可以理解的是,调度器是任务调度平台的调度组件,依据相应的调度策略和分片信息,分片任务的到相应的执行器进行任务的调度执行。
执行器是每一个任务服务对应的服务器节点,比如任务1所在的服务部署了3个服务器节点,则任务1会有3个执行器。分布式的执行器实现定时任务的高可用调度。
任务的执行器遍布于各任务服务器节点中,可以充分发挥服务器各节点的性能,实现服务级别的异常隔离,各服务异常其不会相互影响,实现高可用。
调度器与调度管理模块是两个相互独立的功能模块,将调度器与调度管理模块拆分处理,相关逻辑不再耦合,调度器与调度管理模块之间通过RESTful(即:一种网络应用程序的设计风格和开发方式)接口进行交互。
调度器与调度管理模块之间的相关调用都是隐藏在各自的框架中的,在服务启动后,会自动触发注册任务到调度管理模块,相应的过程对任务开发者黑盒,开发者无需关心和编码实现,大大提高了开发效率。
调度器根据调度策略、分片策略选择相应的执行节点,也即是服务器节点进行分片调度,将待执行任务存放到执行器的执行队列,执行队列并发执行可以提高调度速度,避免远程调用耗时影响任务调度的速度。
任务在调用后通过执行线程进行任务执行,此处的执行支持并发执行,保证即使只有一个服务器节点,在这一个服务器节点,也可以实现分片并发调用的效果,提升任务的执行效率降低耗时。
在一些实施例中,对已注册的待执行任务进行触发,加入调度队列,包括:
基于第一线程和/或第二线程对已注册的待执行任务进行定时触发,加入调度队列。
其中,第一线程基于轮询方式获取已注册的待执行任务,并将已注册的待执行任务加入哈希队列;第二线程基于预设频率获取已注册的待执行任务。
可以理解的是,定时触发是通过两个常驻线程,即上述的第一线以及第二线程进行任务处理,一个线程以轮询的方式获取即将到点的任务,放到秒级的哈希队列中并根据目标调度策略更新下次调度时间;另一个线程每秒执行1次,获取当前时刻要触发的任务放入到调度队列中。
目标调度策略包括触发策略、过期策略、阻塞策略。
触发策略包括四种:第一种触发策略不会主动触发执行调度;第二种触发策略触发任务的Cron表达式;第三种触发策略是基于固定的时间间隔触发任务,时间单位是秒;第四种触发策略是基于固定延迟时间触发任务,时间单位是秒。
过期策略包括两种:第一种是如果任务过期未被调度,则忽略此次调度;第二种是任务过期未被调度,会立即触发执行一次。
阻塞策略包括两种:第一种是如果任务未执行完,而又到达了调度时间,此策略会继续触发执行任务;第二种是如果任务未执行完,而又到达了调度时间,此策略会忽略此次调度,不影响后续任务调度。
在一些实施例中,分布式任务调度方法还包括:
在基于执行器,执行完已注册的待执行任务后,将对应的任务执行结果发送至操作界面进行显示。
可以理解的是,将对应的任务执行结果发送至操作界面进行显示,具体是,将对应的任务执行结果回调至调度管理模块,以基于调度管理模块,将任务执行结果发送至操作界面进行显示。
任务执行结束后,会通过回调的方式通知调度管理模块任务的执行结果。具体地,任务回调是通过AOP(Aspect Oriented Programming,面向切面编程)的方式自动判断任务执行结果,无需用户关心回调逻辑,回调也是通过异步的方式,不影响业务逻辑。
基于调度管理模块,将任务执行结果发送至操作界面进行显示,可以是将任务执行结果发送至Web(World Wide Web,全球广域网)操作界面进行显示,提供了执行情况的报表统计和任务执行的进度展示,方便高效。
在一些实施例中,分布式任务调度方法还包括:
获取服务器节点信息,在服务器节点信息发生变化的情况下,基于新的服务器节点信息,对服务注册信息进行更新。
可以理解的是,服务器节点信息发生变化,可以是服务器的ip地址或者端口发生变化,由于待执行任务在注册时,是基于服务注册信息进行注册的,因此,在服务器节点信息发生变化时,需及时更新服务注册信息中的IP地址和端口。
在一些实施例中,分布式任务调度方法还包括:
在基于任务执行结果,确定已注册的待执行任务执行失败的情况下,获取对应失败任务的重复执行次数;
在重复执行次数未达到预设限制次数的情况下,重新执行失败任务。
可以理解的是,接受到回调的任务执行结果后,根据任务执行结果判断任务执行成功或失败,如果执行成功,则修改相关的执行日志和调度日志,完成此次调用。
在一些实施例中,重新执行失败任务,包括:
在确定已注册的待执行任务执行失败,并经过目标时长后,基于调度器,将失败任务加入执行器;
其中,目标时长的大小与重复执行次数正相关。
可以理解的是,根据任务执行结果判断任务执行失败,则执行器会判断任务的重试策略配置,如果重试次数还未达到限制,则会发起重试调度,基于调度器,将失败任务加入执行器,直至任务重试次数用完或执行成功。
重试策略包括两种:第一种是通过配置重试次数进行任务重试,任务失败后会立即进行重试,直至成功或重试次数完成,例如,最多配置5次。第二种是通过配置目标个数以内的间隔时间,例如5个以内的间隔时间,任务失败后会间隔的执行重试,直至成功或任务重试策略完成,间隔时间配置示例:5秒/10秒/30秒/1分钟/5分钟;即:初次任务执行失败后,过5秒进行第一次重试;如果第一次重试还失败,第一次重试结束后,经过10秒进行第二次重试;如果第二次重试还失败,第二次重试结束后30秒进行第三次,以此类推,直至任务重试次数用完或执行成功。
在一些实施例中,基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器,包括:
对服务器节点执行心跳探测;
基于调度器,将已注册的待执行任务,分片调度至心跳探测成功的服务器节点,加入执行器,进行分片调度。
可以理解的是,调度管理模块会通过心跳探测的方式,以预设的时间间隔进行任务节点的可达性检查,例如以10分钟作为时间间隔进行任务节点的可达性检查。如果对应服务器节点的心跳探测失败,则会暂停任务分发到该服务器节点,保证任务执行的可靠性。此后心跳探测还会继续检查该服务器节点,如果心跳探测恢复正常,就会恢复该服务器节点的可用性。
在一些实施例中,本发明提供的分布式任务调度方法流程如图2所示,调度管理模块与调度器以及执行器之间分工明确,实现代码松耦合。
综上所述,本发明提供的分布式任务调度方法,包括:基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册;对已注册的待执行任务进行触发,加入调度队列;基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
在本发明提供的分布式任务调度方法中,在读取了待执行任务以及服务注册信息,就可以将待执行任务进行注册,再将已注册的待执行任务进行触发,加入调度队列,等到需要执行这些任务时,再将调度队列中的任务分片调度,加入执行器。
该分布式任务调度方法,可以完全实现任务读取、注册、触发以及调度等工作,不需要人工进行手动调度。因此,本发明提供的分布式任务调度方法,可以解决现有技术中不支持分布式任务主动自动注册和发现的缺陷,实现自动注册和发现分布式任务,提高分布式任务调度效率。
而且,本发明通过集成JDK的方式,自动注册任务,实现代码松耦合,通过自动监听节点的变化,实时更新执行器信息,无需修改配置即可保证弹性处理。
任务调度通过多线程的方式实现,避免单线程因阻塞而引起任务调度延迟等问题;调度管理模块实现了集群式部署,达到了高可用的目的,并通过CAS乐观锁的方式避免了锁抢占的性能问题,提升了稳定性和执行效率。
下面对本发明提供的分布式任务调度装置进行描述,下文描述的分布式任务调度装置与上文描述的分布式任务调度方法可相互对应参照。
如图3所示,本发明提供的分布式任务调度装置300包括:注册模块310、触发模块320和调度模块330。
注册模块310用于基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册。
可以理解的是,待执行任务是需要执行的逻辑任务。服务注册信息包含有任务信息,以及执行该任务的服务器节点信息,例如服务器节点的IP地址以及端口信息。
可以先将主动注册任务的逻辑代码封装成一个功能模块,即JDK,对待执行任务进行注解配置,注解配置的待执行任务就可以被该功能模块读取,从而实现待执行任务的主动注册。
将待执行任务进行注册,可以是在已封装的调度管理模块中将待执行任务进行注册。
触发模块320用于对已注册的待执行任务进行触发,加入调度队列。
可以理解的是,加入调度队列,也即是加入调度管理模块中的调度队列。基于触发器对已注册的待执行任务进行触发,触发器是任务平台的触发组件,依据相应的触发策略,到点触发相关的任务添加到调度器中进行调度执行。
调度队列也即是任务调度队列,在调度队列中的任务,会根据队列的次序依次执行。调度队列已在调度管理模块中封装好,不需要人员再做额外的操作。
调度模块330用于基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
可以理解的是,调度器是任务调度平台的调度组件,依据相应的调度策略和分片信息,分片任务的到相应的执行器进行任务的调度执行。
执行器是每一个任务服务对应的服务器节点,比如任务1所在的服务部署了3个服务器节点,则任务1会有3个执行器。
调度器与调度管理模块是两个相互独立的功能模块,将调度器与调度管理模块拆分处理,相关逻辑不再耦合,调度器与调度管理模块之间通过RESTful接口进行交互。
调度器与调度管理模块之间的相关调用都是隐藏在各自的框架中的,在服务启动后,会自动触发注册任务到调度管理模块,相应的过程对任务开发者黑盒,开发者无需关心和编码实现,大大提高了开发效率。
调度器根据调度策略、分片策略选择相应的执行节点,也即是服务器节点进行分片调度,将待执行任务存放到执行器的执行队列,执行队列并发执行可以提高调度速度,避免远程调用耗时影响任务调度的速度。
任务在调用后通过执行线程进行任务执行,此处的执行支持并发执行,保证即使只有一个服务器节点,在这一个服务器节点,也可以实现分片并发调用的效果,提升任务的执行效率降低耗时。
在一些实施例中,触发模块320进一步用于基于第一线程和/或第二线程对已注册的待执行任务进行定时触发,加入调度队列。
其中,第一线程基于轮询方式获取已注册的待执行任务,并将已注册的待执行任务加入哈希队列;第二线程基于预设频率获取已注册的待执行任务。
可以理解的是,定时触发是通过两个常驻线程,即上述的第一线以及第二线程进行任务处理,一个线程以轮询的方式获取即将到点的任务,放到秒级的哈希队列中并根据目标调度策略更新下次调度时间;另一个线程每秒执行1次,获取当前时刻要触发的任务放入到调度队列中。
目标调度策略包括触发策略、过期策略、阻塞策略。
触发策略包括四种:第一种触发策略不会主动触发执行调度;第二种触发策略触发任务的Cron表达式;第三种触发策略是基于固定的时间间隔触发任务,时间单位是秒;第四种触发策略是基于固定延迟时间触发任务,时间单位是秒。
过期策略包括两种:第一种是如果任务过期未被调度,则忽略此次调度;第二种是任务过期未被调度,会立即触发执行一次。
阻塞策略包括两种:第一种是如果任务未执行完,而又到达了调度时间,此策略会继续触发执行任务;第二种是如果任务未执行完,而又到达了调度时间,此策略会忽略此次调度,不影响后续任务调度。
在一些实施例中,分布式任务调度装置300还包括:回调模块。
回调模块用于在基于执行器,执行完已注册的待执行任务后,将对应的任务执行结果发送至操作界面进行显示。
可以理解的是,将对应的任务执行结果发送至操作界面进行显示,具体是,将对应的任务执行结果回调至调度管理模块,以基于调度管理模块,将任务执行结果发送至操作界面进行显示。
任务执行结束后,会通过回调的方式通知调度管理模块任务的执行结果。具体地,任务回调是通过AOP(Aspect Oriented Programming,面向切面编程)的方式自动判断任务执行结果,无需用户关心回调逻辑,回调也是通过异步的方式,不影响业务逻辑。
基于调度管理模块,将任务执行结果发送至操作界面进行显示,可以是将任务执行结果发送至Web(World Wide Web,全球广域网)操作界面进行显示,提供了执行情况的报表统计和任务执行的进度展示,方便高效。
在一些实施例中,分布式任务调度装置300还包括:更新模块。
更新模块用于获取服务器节点信息,在服务器节点信息发生变化的情况下,基于新的服务器节点信息,对服务注册信息进行更新。
可以理解的是,服务器节点信息发生变化,可以是服务器的ip地址或者端口发生变化,由于待执行任务在注册时,是基于服务注册信息进行注册的,因此,在服务器节点信息发生变化时,需及时更新服务注册信息中的IP地址和端口。
在一些实施例中,分布式任务调度装置300还包括:获取模块和执行模块。
获取模块用于在基于任务执行结果,确定已注册的待执行任务执行失败的情况下,获取对应失败任务的重复执行次数。
执行模块用于在重复执行次数未达到预设限制次数的情况下,重新执行失败任务。
可以理解的是,接受到回调的任务执行结果后,根据任务执行结果判断任务执行成功或失败,如果执行成功,则修改相关的执行日志和调度日志,完成此次调用。
在一些实施例中,执行模块进一步用于在确定已注册的待执行任务执行失败,并经过目标时长后,基于调度器,将失败任务加入执行器。
其中,目标时长的大小与重复执行次数正相关。
可以理解的是,根据任务执行结果判断任务执行失败,则执行器会判断任务的重试策略配置,如果重试次数还未达到限制,则会发起重试调度,基于调度器,将失败任务加入执行器,直至任务重试次数用完或执行成功。
重试策略包括两种:第一种是通过配置重试次数进行任务重试,任务失败后会立即进行重试,直至成功或重试次数完成,例如,最多配置5次。第二种是通过配置目标个数以内的间隔时间,例如5个以内的间隔时间,任务失败后会间隔的执行重试,直至成功或任务重试策略完成,间隔时间配置示例:5秒/10秒/30秒/1分钟/5分钟;即:初次任务执行失败后,过5秒进行第一次重试;如果第一次重试还失败,第一次重试结束后,经过10秒进行第二次重试;如果第二次重试还失败,第二次重试结束后30秒进行第三次,以此类推,直至任务重试次数用完或执行成功。
在一些实施例中,调度模块330包括:探测单元和调度单元。
探测单元用于对服务器节点执行心跳探测。
调度单元用于基于调度器,将已注册的待执行任务,分片调度至心跳探测成功的服务器节点,加入执行器,进行分片调度。
可以理解的是,调度管理模块会通过心跳探测的方式,以预设的时间间隔进行任务节点的可达性检查,例如以10分钟作为时间间隔进行任务节点的可达性检查。如果对应服务器节点的心跳探测失败,则会暂停任务分发到该服务器节点,保证任务执行的可靠性。此后心跳探测还会继续检查该服务器节点,如果心跳探测恢复正常,就会恢复该服务器节点的可用性。
综上所述,本发明提供的分布式任务调度装置,包括:注册模块310、触发模块320和调度模块330。注册模块310用于基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册。触发模块320用于对已注册的待执行任务进行触发,加入调度队列。调度模块330用于基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
在本发明提供的分布式任务调度装置,在读取了待执行任务以及服务注册信息,就可以将待执行任务进行注册,再将已注册的待执行任务进行触发,加入调度队列,等到需要执行这些任务时,再将调度队列中的任务分片调度,加入执行器。
该分布式任务调度装置,可以完全实现任务读取、注册、触发以及调度等工作,不需要人工进行手动调度。因此,本发明提供的分布式任务调度方法,可以解决现有技术中不支持分布式任务主动自动注册和发现的缺陷,实现自动注册和发现分布式任务,提高分布式任务调度效率。
而且,本发明通过集成JDK的方式,自动注册任务,实现代码松耦合,通过自动监听节点的变化,实时更新执行器信息,无需修改配置即可保证弹性处理。
任务调度通过多线程的方式实现,避免单线程因阻塞而引起任务调度延迟等问题;调度管理模块实现了集群式部署,达到了高可用的目的,并通过CAS乐观锁的方式避免了锁抢占的性能问题,提升了稳定性和执行效率。
下面对本发明提供的电子设备、计算机程序产品及存储介质进行描述,下文描述的电子设备、计算机程序产品及存储介质与上文描述的分布式任务调度方法可相互对应参照。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行分布式任务调度方法,该方法包括:
步骤110、基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册;
步骤120、对已注册的待执行任务进行触发,加入调度队列;
步骤130、基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的分布式任务调度方法,该方法包括:
步骤110、基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册;
步骤120、对已注册的待执行任务进行触发,加入调度队列;
步骤130、基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的分布式任务调度方法,该方法包括:
步骤110、基于封装的开发工具包读取待执行任务以及服务注册信息,并基于服务注册信息,将待执行任务进行注册;
步骤120、对已注册的待执行任务进行触发,加入调度队列;
步骤130、基于调度器,将调度队列中已注册的待执行任务进行分片调度,加入执行器。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种分布式任务调度方法,其特征在于,包括:
基于封装的开发工具包读取待执行任务以及服务注册信息,并基于所述服务注册信息,将所述待执行任务进行注册;
对已注册的待执行任务进行触发,加入调度队列;
基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器。
2.根据权利要求1所述的分布式任务调度方法,其特征在于,所述对已注册的待执行任务进行触发,加入调度队列,包括:
基于第一线程和/或第二线程对所述已注册的待执行任务进行定时触发,加入所述调度队列;
其中,所述第一线程基于轮询方式获取所述已注册的待执行任务,并将所述已注册的待执行任务加入哈希队列;所述第二线程基于预设频率获取所述已注册的待执行任务。
3.根据权利要求1所述的分布式任务调度方法,其特征在于,还包括:
在基于所述执行器,执行完所述已注册的待执行任务后,将对应的任务执行结果发送至操作界面进行显示。
4.根据权利要求1所述的分布式任务调度方法,其特征在于,还包括:
获取服务器节点信息,在所述服务器节点信息发生变化的情况下,基于新的服务器节点信息,对所述服务注册信息进行更新。
5.根据权利要求3所述的分布式任务调度方法,其特征在于,还包括:
在基于所述任务执行结果,确定所述已注册的待执行任务执行失败的情况下,获取对应失败任务的重复执行次数;
在所述重复执行次数未达到预设限制次数的情况下,重新执行所述失败任务。
6.根据权利要求5所述的分布式任务调度方法,其特征在于,所述重新执行所述失败任务,包括:
在确定所述已注册的待执行任务执行失败,并经过目标时长后,基于所述调度器,将所述失败任务加入所述执行器;
其中,所述目标时长的大小与所述重复执行次数正相关。
7.根据权利要求1-6任一项所述的分布式任务调度方法,其特征在于,所述基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器,包括:
对服务器节点执行心跳探测;
基于所述调度器,将所述已注册的待执行任务,分片调度至心跳探测成功的服务器节点,加入所述执行器,进行分片调度。
8.一种分布式任务调度装置,其特征在于,包括:
注册模块,用于基于封装的开发工具包读取待执行任务以及服务注册信息,并基于所述服务注册信息,将所述待执行任务进行注册;
触发模块,用于对已注册的待执行任务进行触发,加入调度队列;
调度模块,用于基于调度器,将所述调度队列中已注册的待执行任务进行分片调度,加入执行器。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述分布式任务调度方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述分布式任务调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111256508.4A CN114090198A (zh) | 2021-10-27 | 2021-10-27 | 分布式任务调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111256508.4A CN114090198A (zh) | 2021-10-27 | 2021-10-27 | 分布式任务调度方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090198A true CN114090198A (zh) | 2022-02-25 |
Family
ID=80298156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111256508.4A Pending CN114090198A (zh) | 2021-10-27 | 2021-10-27 | 分布式任务调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090198A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115146982A (zh) * | 2022-07-15 | 2022-10-04 | 浙江欧菲克斯交通科技有限公司 | 一种移动可变交通信息牌智能调度控制***、方法和界面 |
CN117785431A (zh) * | 2024-02-27 | 2024-03-29 | 云粒智慧科技有限公司 | 任务调度分配方法、装置、电子设备及存储介质 |
CN118093214A (zh) * | 2024-04-26 | 2024-05-28 | 华芯智上半导体设备(上海)有限公司 | 一种搬运任务调度方法、装置、电子设备和存储介质 |
-
2021
- 2021-10-27 CN CN202111256508.4A patent/CN114090198A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115146982A (zh) * | 2022-07-15 | 2022-10-04 | 浙江欧菲克斯交通科技有限公司 | 一种移动可变交通信息牌智能调度控制***、方法和界面 |
CN117785431A (zh) * | 2024-02-27 | 2024-03-29 | 云粒智慧科技有限公司 | 任务调度分配方法、装置、电子设备及存储介质 |
CN117785431B (zh) * | 2024-02-27 | 2024-06-04 | 云粒智慧科技有限公司 | 任务调度分配方法、装置、电子设备及存储介质 |
CN118093214A (zh) * | 2024-04-26 | 2024-05-28 | 华芯智上半导体设备(上海)有限公司 | 一种搬运任务调度方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8762929B2 (en) | System and method for exclusion of inconsistent objects from lifecycle management processes | |
US8375244B2 (en) | Managing processing of a computing environment during failures of the environment | |
US9558459B2 (en) | Dynamic selection of actions in an information technology environment | |
US8682705B2 (en) | Information technology management based on computer dynamically adjusted discrete phases of event correlation | |
US8560889B2 (en) | Adding scalability and fault tolerance to generic finite state machine frameworks for use in automated incident management of cloud computing infrastructures | |
EP2008400B1 (en) | Method, system and computer program for the centralized system management on endpoints of a distributed data processing system | |
CN108804215B (zh) | 一种任务处理方法、装置以及电子设备 | |
CN107660289B (zh) | 自动网络控制 | |
US20090172674A1 (en) | Managing the computer collection of information in an information technology environment | |
CN112416581B (zh) | 定时任务的分布式调用*** | |
JPH10214199A (ja) | プロセスリスタート方法およびプロセスリスタートを実現するためのシステム | |
CN114090198A (zh) | 分布式任务调度方法、装置、电子设备及存储介质 | |
CN110895487B (zh) | 分布式任务调度*** | |
CN112631795A (zh) | 业务申请信息自动同步方法、装置、设备及存储介质 | |
CN110895483A (zh) | 任务恢复方法及装置 | |
CN110895486B (zh) | 分布式任务调度*** | |
CN106775620B (zh) | 一种定时方法及装置 | |
CN113157426B (zh) | 一种任务调度方法、***、设备及存储介质 | |
CN112131188B (zh) | 批量文件分发处理方法及装置 | |
CN110895485A (zh) | 任务调度*** | |
CN112825525B (zh) | 用于处理事务的方法和装置 | |
CN111176687A (zh) | 一种云主机客户端程序更新方法、装置、设备及存储介质 | |
CN115437766A (zh) | 一种任务处理方法和装置 | |
CN110188008B (zh) | 作业调度主备切换方法、装置、计算机设备及存储介质 | |
CN115543491A (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 |