本发明涉及信息通讯,具体为一种基于消息队列的分布式任务调度方法。
背景技术:
1、传统的任务调度引擎虽然可以实现任务的下发与执行,但存在一些缺陷。首先,它缺乏故障转移能力,当节点发生故障或资源不足等故障时,无法将任务转移到其他节点上继续执行,导致任务中断和系统可用性下降。其次,传统调度引擎过度依赖数据传输渠道,当节点与调度程序之间的通信出现短暂中断时,整个调度系统可能陷入瘫痪状态,无法正常进行任务调度和执行。此外,当数据传输恢复后,由于中断期间的数据不一致,需要大量人力投入来解决数据一致性问题,增加了额外的复杂性和成本。
2、在实际生产环境中,系统的可靠性至关重要,难以容忍单一节点故障和传输中断所带来的经济损失。因此,迫切需要一种具备故障转移能力的调度系统,能够在节点故障时将任务转移到同一节点组下的其他可用节点上进行执行,并在传输渠道中断后自动修复异常数据,以确保系统的高可用性和数据一致性。
3、针对这一问题,创造一种新的调度方法是非常关键的。
技术实现思路
1、针对现有技术的不足,本发明提供了一种基于消息队列的分布式任务调度方法,有效解决传统调度引擎所存在的故障转移和数据传输依赖的问题,提供高可靠性和高可用性的任务调度服务,从而降低系统故障和数据不一致所带来的风险和损失。
2、为实现以上目的,本发明通过以下技术方案予以实现:
3、一种基于消息队列的分布式任务调度方法,
4、s1 api网关的输出端通过任务执行引擎与消息队列相连接,消息队列获取需执行的任务,结合自身实时负载,判断是否接收并执行任务;可根据待执行任务数量、任务执行耗时等多个维度,增减任务执行引擎的数量;
5、s2根据任务配置情况,将任务发送至不同的节点组,由节点组下的节点执行任务;
6、s3任务执行同时,同时执行任务回传程序,节点主动回传节点状态心跳、任务执行情况,以实现任务执行的监控和异常处理;
7、s4任务回传程序显示任务结果处理,并接收和处理任务执行结果,对结果的数据进行整理和对外部系统的传输;
8、s5任务回传程序连接节点状态管理程序,接收和处理节点状态心跳及任务执行情况,更新引擎中的任务状态,以便任务调度引擎判断。
9、优选的,所述节点搭载的任务执行引擎通过消息队列获取需要执行的任务,并根据自身实时负载情况判断是否接收并执行任务,当接收消息队列中新的任务,所述任务执行引擎实时判断自身的硬件资源负载,包括cpu占用率、可用内存、可用磁盘资源和网络占用率,并结合手动设置的任务执行上限,自动选择接收任务或忽略任务。
10、优选的,所述s1任务执行引擎选择接收执行任务时,执行完成任务消息的消费并根据任务配置创建对应的任务;当其选择忽略执行任务时,仅完成任务消息的消费,不在节点组执行引擎中创建任何任务。
11、优选的,所述s1任务调度引擎根据任务配置将任务发送至不同的节点组,由节点组下的节点执行任务;所述任务调度引擎以任务所需执行的节点组名称作为routing key,并将任务发送至消息队列的交换机中,交换机根据rout ing key将任务转发至不同节点组对应的消息队列。
12、优先的,所述s1任务调度引擎,根据消息队列中堆积的任务数量、任务执行耗时、已经完成任务与未完成任务的比例等多维度,可增减节点组内,任务执行引擎的数量。
13、优选的,所述s1任务调度引擎动态获取各节点组任务队列中的消息数量,并根据剩余消息数量及节点数量定时发布未被执行的任务或需要重新执行的异常任务。
14、优选的,所述s3任务回传程序负责节点主动回传节点状态心跳以及任务执行情况,以实现任务执行的监控和异常处理;当任务执行引擎创建对应的任务时,其向任务调度引擎回传对应消息,告知任务已被接收并开始执行。
15、优选的,所述s3任务回传程序定时查询任务状态,并将任务状态回传给节点状态处理程序,用于更新任务执行情况;所述任务回传程序还定时回传节点状态,包括任务执行引擎版本、当前任务数量、允许的任务上限和资源占用情况,以心跳包的形式回传至节点状态处理程序。
16、优选的,所述s4中接收和处理任务执行结果,对结果的数据进行整理和对外部系统传输,监听消息队列中的任务执行结果,将结果存储到本地的json文件、数据库,提供对外的调度程序,可将任务执行结果传输至其他的外部系统,任务执行结果处理程序基于消息队列实现可伸缩部署,根据任务数量,动态调整任务结果处理程序的数量和规模。
17、优选的,所述s5节点状态管理程序接收并处理节点状态心跳及任务执行情况,更新引擎中的任务状态,以便任务调度引擎判断。接收任务节点回传的任务执行情况,根据对应的情况,更新任务状态,为任务调度引擎定时重发任务时,提供判断依据,避免重复发送正在执行的任务。
18、有益效果
19、本发明提供了一种基于消息队列的分布式任务调度方法,具备以下有益效果:
20、首先,具备节点故障转移能力,当节点发生故障时,系统能够自动将任务转移到其他可用节点上进行执行,从而保证任务的连续性和系统的稳定性。通过节点状态管理程序监测节点的心跳数据和任务执行情况,系统可以及时检测到节点故障,并将待执行的任务重新分配到可用节点上,避免任务中断和数据丢失。
21、其次,具备节点的弹性伸缩能力,当任务数量增多时,系统可增减任务执行节点的数量,充分利用现有的硬件资源,以实现任务执行的效率最大化。
22、再次,减少对数据传输渠道的依赖,系统通过采用可靠的通信机制,如心跳检测、故障检测和状态同步,以确保节点与调度程序之间的连接稳定性。通过定时回传节点状态和任务状态数据,系统可以减少对数据传输渠道的依赖。即使在数据传输中断的情况下,系统依然可以依靠已经回传的数据和状态信息来恢复任务执行和节点管理的连续性。
23、最后,当数据传输中断后,系统应具备自动修正异常数据的能力,在数据传输中断后,能够自动检测和修复异常数据,保证数据的一致性和准确性,减少人工干预的需求。通过任务执行引擎定时查询任务状态并重复回传任务情况,系统增加了传输的冗余,即使在传输渠道短暂中断后,系统仍然可以在恢复连接后重新回传期间未能及时同步的任务数据,确保任务执行的完整性和准确性。
24、综上,本发明所述的一种基于消息队列的分布式任务调度方法,通过创新性的设计和技术实现,这种新型调度系统实现了根据节点负载情况实时分配任务,根据任务数量实时增减节点数,多节点设计保障任务的稳定执行和结果的有效回传,能够有效解决传统调度引擎所存在的故障转移和数据传输依赖的问题,提供高可靠性和高可用性的任务调度服务,从而降低系统故障和数据不一致所带来的风险和损失,在复杂的业务场景下提供高效、可靠的任务调度和处理能力,为任务执行和业务流程的顺利进行提供有力支持。
1.一种基于消息队列的分布式任务调度方法,其特征在于:
2.如权利要求1所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述节点搭载的任务执行引擎通过消息队列获取需要执行的任务,并根据自身实时负载情况判断是否接收并执行任务,当接收消息队列中新的任务,所述任务执行引擎实时判断自身的硬件资源负载,包括cpu占用率、可用内存、可用磁盘资源和网络占用率,并结合手动设置的任务执行上限,自动选择接收任务或忽略任务。
3.如权利要求2所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s1任务执行引擎选择接收执行任务时,执行完成任务消息的消费并根据任务配置创建对应的任务;当其选择忽略执行任务时,仅完成任务消息的消费,不在节点组执行引擎中创建任何任务。
4.如权利要求1所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s1任务调度引擎根据任务配置将任务发送至不同的节点组,由节点组下的节点执行任务;所述任务调度引擎以任务所需执行的节点组名称作为routing key,并将任务发送至消息队列的交换机中,交换机根据routing key将任务转发至不同节点组对应的消息队列。
5.如权利要求4所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s1任务调度引擎动态获取各节点组任务队列中的消息数量,并根据剩余消息数量及节点数量定时发布未被执行的任务或需要重新执行的异常任务。
6.如权利要求1所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s3任务回传程序负责节点主动回传节点状态心跳以及任务执行情况,以实现任务执行的监控和异常处理;当任务执行引擎创建对应的任务时,其向任务调度引擎回传对应消息,告知任务已被接收并开始执行。
7.如权利要求6所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s3任务回传程序定时查询任务状态,并将任务状态回传给节点状态处理程序,用于更新任务执行情况;所述任务回传程序还定时回传节点状态,包括任务执行引擎版本、当前任务数量、允许的任务上限和资源占用情况,以心跳包的形式回传至节点状态处理程序。
8.如权利要求1所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s4中接收和处理任务执行结果,对结果的数据进行整理和对外部系统传输,监听消息队列中的任务执行结果,将结果存储到本地的j son文件、数据库,提供对外的调度程序,可将任务执行结果传输至其他的外部系统,任务执行结果处理程序基于消息队列实现可伸缩部署,根据任务数量,动态调整任务结果处理程序的数量和规模。
9.如权利要求1所述的一种基于消息队列的分布式任务调度方法,其特征在于:所述s5节点状态管理程序接收并处理节点状态心跳及任务执行情况,更新引擎中的任务状态,以便任务调度引擎判断。接收任务节点回传的任务执行情况,根据对应的情况,更新任务状态,为任务调度引擎定时重发任务时,提供判断依据,避免重复发送正在执行的任务。