任务处理方法、装置、电子设备和计算机可读存储介质与流程

文档序号:26711471发布日期:2021-09-22 19:17阅读:71来源:国知局
任务处理方法、装置、电子设备和计算机可读存储介质与流程

1.本技术涉及计算机应用技术领域,特别是涉及一种任务处理方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.随着业务服务器的增加和企业的发展,定时任务的数量也开始从几十飞速增长到上万,如何对定时任务进行统一管理和调度执行成为提高工作效率的一个重要因素。
3.目前大多数企业使用quartz架构的任务处理器来实现定时任务的统一管理和调度执行。但是, 基于quartz架构的任务处理器的节点在调度逻辑中,是以抢占任务悲观锁的形式进行任务资源抢占,即在同一任务表中的任务由抢占任务悲观锁成功的同一节点进行执行,这种任务资源调度模式导致节点负载悬殊过大,并且执行任务的节点由于任务过多容易导致宕机,从而造成死锁,任务调度处理服务容灾性低下,任务处理器工作效率低下,用户体验度低下。


技术实现要素:

4.本技术实施例提供一种任务处理方法、装置、电子设备和计算机可读存储介质,用于提高任务处理器容灾性和工作效率。
5.第一方面,本技术实施例提供一种任务处理方法,其特征在于,所述方法包括:获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。
6.在其中一个实施例中,所述基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,包括:循环扫描加载所述任务配置数据表,针对每一所述任务配置数据,判断所述任务配置数据是否包含任务实例;若不包含,则基于所述任务配置数据生成所述任务实例;对所述任务实例执行触发判断,若所述任务实例满足触发条件,确定所述任务实例为待定任务实例;将所述任务配置数据表的至少一个待定任务实例存储至预设的第一链表,得到待定任务实例表;对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,将所述至少一个待执行任务实例存储至预设的第二链表得到所述待执行任务实例表。
7.在其中一个实施例中,所述对所述任务实例执行触发判断,包括:从所述任务配置数据中获取任务周期和任务触发时间;获取所述任务周期单位,从所述任务触发时间中提取触发日期、触发小时数、触发分钟数;当所述周期单位为月,若所述触发日期小于等于当前日期、所述触发小时数小于等于当前小时数且所述触发分钟数小于等于当前分钟数,所
述任务实例满足所述触发条件;当所述周期单位为周,若所述触发星期数小于等于当前星期数、所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为日,若所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为小时,若所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件。
8.在其中一个实施例中,所述对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,包括:针对所述待定任务实例表中任意一个所述待定任务实例;提取所述待定任务实例的任务依赖关系,基于所述任务依赖关系判断所述待定任务实例是否存在父依赖任务;若存在所述父依赖任务,判断所述父依赖任务是否执行完成;若所述父依赖任务执行完成,或所述待定任务实例不存在父依赖任务,确定所述待定任务实例为待执行任务实例;轮询扫描所述待定任务实例表得到所述至少一个待执行任务实例。
9.在其中一个实施例中,所述基于所述平均负载值所述任务节点集中筛选至少一个任务竞争节点,包括:针对所述任务节点集中每一所述任务节点,基于所述平均负载值确定所述任务节点的性能等级,所述性能等级包括:第一等级、第二等级、第三等级和第四等级;基于所述性能等级对所述任务节点执行任务竞争节点判断操作,所述任务竞争节点判断操作包括:若所述性能等级为所述第一等级,则所述任务节点为所述任务竞争节点;若所述性能等级为所述第二等级,对所述任务节点设置第一定时器,所述第一定时器的时间为预设的第一倒计时值,当所述第一定时器的数值归零时,所述任务节点为所述任务竞争节点;若所述性能等级为所述第三等级,对所述节点设置第二定时器,所述第二定时器的时间为预设的第二倒计时值,当所述第二定时器的数值归零时,所述任务节点为所述任务竞争节点,其中,所述第二倒计时值大于所述第一倒计时值;若所述性能等级为所述第四等级,则所述任务节点为过载节点,终止对所述任务节点的任务竞争节点判断操作。
10.在其中一个实施例中,所述基于所述平均负载值确定所述任务节点的性能等级,包括:获取所述任务节点的节点cpu核心数量,基于所述节点cpu核心数量确定第一核心阈值、第二核心阈值和第三核心阈值,其中,所述第一核心阈值、所述第二核心阈值和所述第三核心阈值呈梯度依次增大;若所述平均负载值小于所述第一核心阈值,则确定所述任务节点的性能等级为第一等级;若所述平均负载值大于所述第一核心阈值,小于所述第二核心阈值,则确定所述任务节点的性能等级为第二等级;若所述平均负载值大于所述第二核心阈值,小于所述第三核心阈值,则确定所述任务节点的性能等级为第三等级;若所述平均负载值大于所述第三核心阈值,则确定所述任务节点的性能等级为第四等级。
11.在其中一个实施例中,所述控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行,包括:步骤s1、针对所述至少一个任务竞争节点的每一所述任务竞争节点,获取所述任务竞争节点的节点ip;步骤s2、遍历所述待执行任务实例表,获取第一待执行任务实例的预设字段的第一字段信息;步骤s3、基于所述节点ip对所述第一字段信息进行替换更新;步骤s4、若更新失败,执行步骤s5,若更新成功,执行步骤s6;步骤s5、获取第二执行任务实例的预设字段的第二字段信息,基于所述节点ip更新所述第二字段信息,执行步骤s4;步骤s6、终止对所述待执行任务实例表的遍历操作,确定所述任务竞争节点抢占所述第一待执行任务实例,提取所述第一待执行任务实例存储至可执行
任务实例表,控制所述任务竞争节点执行所述第一待执行任务。
12.第二方面,本技术实施例提供一种任务处理装置,所述装置包括:获取单元,用于获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算单元,用于计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;执行单元,用于控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行。
13.第三方面,本技术实施例提供一种电子设备,该电子设备包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本技术实施例第一方面所述的方法中所描述的部分或全部步骤的指令。
14.第四方面,本技术实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质用于存储计算机程序,其中,上述计算机程序被处理器执行,以实现如本技术实施例第一方面所述的方法中所描述的部分或全部步骤。
15.可以看出,在本技术实施例中,服务器获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。如此,可以通过节点的平均负载值筛选任务竞争节点进行待执行任务实例的抢占和执行,避免节点过载,从而避免由于节点过载导致的宕机和死锁,有利于提高任务节点的容灾性,从而提高任务处理器的容灾性和工作效率。
附图说明
16.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本技术实施例提供的一种任务处理方法的流程示意图;图2是本技术实施例提供的一种生成待执行任务实例表的方法的流程示意图;图3是本技术实施例提供的一种依赖关系判断方法的流程示意图;图4是本技术实施例提供的一种任务抢占执行方法的流程示意图;图5是本技术实施例提供的一种任务处理器的结构示意图;图6是本技术实施例提供的一种服务器600的结构示意图;图7是本技术实施例提供的一种任务处理装置的结构示意图。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
20.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
21.以下,对本技术中的部分用语进行解释说明,以便于本领域技术人员理解。
22.电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备(例如智能手表、智能手环、计步器等)、计算设备或通信连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,ue),移动台(mobile station,ms),终端设备(terminal device)等等。为方便描述,上面提到的设备统称为电子设备。
23.在一个实施例中,如图1所示,图1是本技术实施例提供的一种任务处理方法的流程示意图,该方法应用于服务器,具体包括:步骤101、获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;可选的,获取待执行任务表的任务配置数据表,该待执行任务表包括至少一个待执行定时任务,则该任务配置数据表中任意一个任务配置数据包括以下一个或多个:待执行任务周期、待执行任务触发时间、待执行任务实例、待执行任务依赖关系。
24.可选的,所述基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,如图2所示,图2是本技术实施例提供的一种生成待执行任务实例表的方法的流程示意图,包括:步骤201、循环扫描加载所述任务配置数据表;其中,所述循环扫描的扫描间隔时间可以为30s、40s、50s等等,在此不作限定。
25.可选的,循环扫描加载任务配置数据表时,每一次扫描从该任务配置数据表中提取至少一个任务配置数据。
26.步骤202、针对每一所述任务配置数据,判断所述任务配置数据是否包含任务实例;步骤203、若不包含,则基于所述任务配置数据生成所述任务实例;步骤204、对所述任务实例执行触发判断;可选的,所述对所述任务实例执行触发判断,包括:从所述任务配置数据中获取任
务周期和任务触发时间;获取所述任务周期单位,从所述任务触发时间中提取触发日期、触发小时数、触发分钟数;当所述周期单位为月,若所述触发日期小于等于当前日期、所述触发小时数小于等于当前小时数且所述触发分钟数小于等于当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为周,若所述触发星期数小于等于当前星期数、所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为日,若所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为小时,若所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件。
27.具体实施过程中,针对任务实例执行触发判断,即判断该任务实例是否为超时任务,当任务周期单位为月,即该任务为月循环任务,假设任务触发时间为每个月的25号15时50分,则基于当前的日期和时间,判断当前日期是否小于或等于25号、当前时间是否小于或等于15时、当前时间是否小于或等于50分,若当前的日期同时满足:当前日期小于或等于25号、当前时间小于或等于15时、当前时间小于或等于50分时,则任务实例满足触发条件;当任务周期单位为周,即该任务为周循环任务,假设任务触发时间为星期三15时50分,则基于当前的日期和时间,确定当前日期的星期数,判断当前星期数是否小于或等于星期三、当前时间是否小于或等于15时、当前时间是否小于或等于50分,若当前星期数小于或等于星期三、当前时间小于或等于15时、当前时间小于或等于50分,则任务实例满足触发条件;当任务周期单位为日,即该任务为日循环任务,假设任务触发时间为每日15时50分,则基于当前时间,判断当前时间是否小于或等于15时、当前分钟是否小于或等于50分,若当前时间小于或等于15时、当前时间小于或等于50分,则任务实例满足触发条件;当任务周期单位为小时,即该任务为小时循环任务,假设任务触发时间为每小时的第50分钟,则基于当前时间,判断当前分钟是否小于或等于50分,若当前时间小于或等于50分,则任务实例满足触发条件。
28.步骤205、若所述任务实例满足触发条件,确定所述任务实例为待定任务实例;步骤206、将所述任务配置数据表的至少一个待定任务实例存储至预设的第一链表,得到待定任务实例表;步骤207、对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,将所述至少一个待执行任务实例存储至预设的第二链表得到所述待执行任务实例表。
29.可选的,针对每一所述待执行任务实例,在将所述待执行任务实例存储至所述第二链表之前,获取所述第二链表中已存实例数量,判断所述已存实例数量是否小于所述第二链表的实例存放数量阈值,若所述已存实例数量小于所述实例存放数量阈值,将所述待执行任务实例存储至所述第二链表,若所述已存实例数量不小于所述实例存放数量阈值,停止执行所述步骤201的循环扫描加载所述任务配置数据表操作。
30.可以看出,如图2所示的方法,通过对任务配置数据的触发条件进行判断,将满足触发条件的任务实例存入第一链表,针对第一链表进行依赖关系判断,得到至少一个待执行任务实例,至少一个待执行任务实例构成第二链表,如此通过任务配置数据表就可以完成对待执行任务实例的筛选,从而实现分布式任务调度,提高任务处理器工作效率。
31.可选的,所述对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,可以表示为如图3所示的,图3是本技术实施例提供的一种依赖关系判断方法的流程示意图,包括:步骤301、针对所述待定任务实例表中任意一个所述待定任务实例,提取所述待定任务实例的任务依赖关系;其中,任务依赖关系是指,只有当前面一个或多个任务完成后,才能完成当前任务,或,只有当前任务完成后,才能完成后面一个或多个任务。
32.步骤302、基于所述任务依赖关系判断所述待定任务实例是否存在父依赖任务;其中,所述父依赖任务是指所述待定任务实例对应的任务的前置任务。
33.步骤303、若存在所述父依赖任务,判断所述父依赖任务是否执行完成;步骤304、若所述父依赖任务执行完成,或所述待定任务实例不存在父依赖任务,确定所述待定任务实例为待执行任务实例;步骤305、轮询扫描所述待定任务实例表得到所述至少一个待执行任务实例。
34.可以看出,如图3所示的方法,通过待定任务实例的的任务依赖关系确定是否满足执行条件,筛选得到待执行任务实例,从而缩短了任务执行等待时间。
35.步骤102、计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;可选的,在基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点之前,还包括:初始化任务节点集,依据预设的间隔阈值向任务节点集提交预设的消费实例服务,其中,间隔阈值可以包括:5s、10s等等,在此不作限定。
36.可选的,计算预设的任务节点集中每一任务节点的平均负载值,包括:在消费实例服务输入任务节点集后,针对每一任务节点,获取任务节点的当前节点负载信息,提取预设的平均负载计算规则,基于平均负载计算规则提取至少一个负载数据,基于预设负载数据对应的负载权重对所述至少一个负载数据进行计算,得到平均负载值。
37.具体实施过程中,假设平均负载计算规则为基于1分钟负载、5分钟负载和15分钟负载进行加权平均计算,假设时间为19:30时向任务节点集提交一个消费实例服务,则针对每一任务节点,则提取该任务节点在时间点19:31、19::35、19:45时的负载数据,记为:a1、a2、a3,获取预设的负载数据与负载权重的映射关系,即提取负载时间间隔与负载权重的映射关系,得到1分钟负载、5分钟负载和15分钟负载分别对应的负载权重a1、a2、a3,则负载数据a1、a2、a3分别对应负载权重a1、a2、a3;提取平均负载计算公式,假设此时平均负载的计算公式为加权平均,则该节点的平均负载值a’=(a1*a1+a2*a2+a3*a3)/(a1+a2+a3)。
38.可选的,所述基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点,包括:针对所述任务节点集中每一所述任务节点,基于所述平均负载值确定所述任务节点的性能等级,所述性能等级包括:第一等级、第二等级、第三等级和第四等级;基于所述性能等级对所述任务节点执行任务竞争节点判断操作,所述任务竞争节点判断操作包括:若所述性能等级为所述第一等级,则所述任务节点为所述任务竞争节点;若所述性能等级为所述第二等级,对所述任务节点设置第一定时器,所述第一定时器的时间为预设的第一倒计时值,当所述第一定时器的数值归零时,所述任务节点为所述任务竞争节点;若所述性能等级为所述第三等级,对所述节点设置第二定时器,所述第二定时器的时间为预设的第二
倒计时值,当所述第二定时器的数值归零时,所述任务节点为所述任务竞争节点,其中,所述第二倒计时值大于所述第一倒计时值;若所述性能等级为所述第四等级,则所述任务节点为过载节点,终止对所述任务节点的任务竞争节点判断操作。
39.具体实施过程中,针对任意一个任务节点,假设该任务节点的性能等级为第一等级,即该任务节点当前处于优秀状态,确定该任务节点加入任务竞争节点,任务竞争节点直接参与待执行任务实例表中待执行任务实例的竞争;假设该任务节点的性能等级为第二等级,即该任务节点当前处于良好状态,设置第一定时器,假设此时第一定时器的第一倒计时值为3min,则第一定时器的时间归零后,该任务节点确定为任务竞争节点;假设该任务节点的性能等级为第三等级,即该任务节点当前处于一般状态,设置第二定时器,第二定时器的第二倒计时值要大于第一倒计时值,当第一定时器的第一倒计时值为3min时,第二倒计时值要大于3min,假设此时第二倒计时值为5min,则第二定时器的时间归零后,该任务节点确定为任务竞争节点;假设该任务节点的性能等级为第四等级,即该任务节点当前处于负载状态,处于负载状态的任务节点不参与待执行任务实例竞争,终止对该任务节点的任务竞争节点判断操作。
40.可选的,所述基于所述平均负载值确定所述任务节点的性能等级,包括:获取所述任务节点的节点cpu核心数量,基于所述节点cpu核心数量确定第一核心阈值、第二核心阈值和第三核心阈值,其中,所述第一核心阈值、所述第二核心阈值和所述第三核心阈值呈梯度依次增大;若所述平均负载值小于所述第一核心阈值,则确定所述任务节点的性能等级为第一等级;若所述平均负载值大于所述第一核心阈值,小于所述第二核心阈值,则确定所述任务节点的性能等级为第二等级;若所述平均负载值大于所述第二核心阈值,小于所述第三核心阈值,则确定所述任务节点的性能等级为第三等级;若所述平均负载值大于所述第三核心阈值,则确定所述任务节点的性能等级为第四等级。
41.可选的,基于所述节点cpu核心数量确定第一核心阈值、第二核心阈值和第三核心阈值,即节点cpu核心数量基于预设的第一比例、第二比例和第三比例分别计算生成第一核心阈值、第二核心阈值和第三核心阈值,其中,第一核心阈值、第二核心阈值和第三核心阈值呈梯度依次增大,即第一比例、第二比例和第三比例呈梯度依次增大。
42.具体实施过程中,假设节点cpu核心数量为a,第一比例为0.6,第二比例为0.9,则第三比例为1.2,第一比例、第二比例和第三比例成梯度依次增大,基于节点cpu核心数量计算第一核心阈值为0.6a、第二核心阈值为0.9a、第三核心阈值为1.2a。
43.如此,可以通过计算任务节点的平均负载值,基于平均负载值确定任务节点的性能等级,再依据性能等级筛选任务竞争节点,可以筛选掉过载的节点,避免过载状态的节点参与待执行任务实例竞争导致宕机和死锁,同时,基于节点cpu核心数量设置梯度式阈值,再通过梯度式阈值对任务节点的性能等级进行划分,保证任务节点集中各节点负载均衡,有利于提高任务处理器稳定性,提高工作效率。
44.步骤103、控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。
45.可选的,所述控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行,如图4所示,图4是本技术实施例提供的一种待执行任务实例抢占执行方法的流程示意图,包括:
步骤401、针对所述至少一个任务竞争节点的每一所述任务竞争节点,获取所述任务竞争节点的节点ip;步骤402、遍历所述待执行任务实例表,获取第一待执行任务实例的预设字段的第一字段信息;其中,所述预设字段可以包括但不限于mark字段。
46.步骤403、基于所述节点ip对所述第一字段信息进行替换更新;可选的,对第一字段信息执行update更新操作,update更新操作用于将第一字段信息替换为该节点ip,若替换成功,则更新成功,若替换失败,则更新失败。
47.步骤404、判断是否更新成功,若更新失败,执行步骤405,若更新成功,执行步骤406;步骤405、获取第二执行任务实例的预设字段的第二字段信息,基于所述节点ip更新所述第二字段信息,执行步骤404;可选的,对第二字段信息执行update更新操作,update更新操作用于将第二字段信息替换为该节点ip,若替换成功,则更新成功,若替换失败,则更新失败。
48.步骤406、终止对所述待执行任务实例表的遍历操作,确定所述任务竞争节点抢占所述第一待执行任务实例,提取所述第一待执行任务实例存储至可执行任务实例表,控制所述任务竞争节点执行所述第一待执行任务。
49.可选的,该任务竞争节点执行第一待执行任务实例结束后,记录该第一待执行任务的执行数据,其中,执行数据包括但不限于:第一待执行任务的任务执行时间、任务竞争节点的节点ip、执行过程中任务竞争节点的节点负载情况等等,基于执行数据生成任务执行日志,将该任务执行日志发送至预设地址,同时返回任务竞争节点的节点资源至任务节点集。
50.如此,任务竞争节点对待执行任务实例表中的待执行任务进行抢占,任务调度过程以乐观锁替换悲观锁,避免死锁情况,从而提高任务管理器的容灾能力,有利于提高任务处理器的稳定性。
51.可以看出,在本技术实施例中,服务器获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。如此,可以通过节点的平均负载值筛选任务竞争节点进行待执行任务实例的抢占和执行,避免节点过载,从而避免由于节点过载导致的宕机和死锁,有利于提高任务节点的容灾性,从而提高任务处理器的容灾性和工作效率。
52.应该理解的是,虽然图1

4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1

4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地
执行。
53.请参阅图5,图5是本技术实施例提供的一种任务处理器的结构示意图,应用于服务器,该任务处理器用于执行上述图1

图4所描述的方法,该任务处理器包括:zookeeper服务、调度模块、mysql数据库以及任务节点集,其中,调度模块包含调度节点1和调度节点2,任务节点集包括至少一个任务节点。在获取待执行任务表的任务配置数据表之前,通过zookeeper服务进行调度节点1和调度节点2的切换,调度节点2作为调度节点1的备用节点,当调度节点1出现问题时,任务处理器通过zoopeeker服务将当前使用的调度节点1切换为调度节点2,此时调度节点2执行任务调度工作。调度模块基主要用于获取待执行任务表的任务配置数据表,基于任务配置数据表筛选符合触发条件和执行条件的至少一个待执行任务实例,将至少一个待执行任务实例存储至mysql数据表中的待执行任务实例表,任务处理器中的任务节点集包括至少一个任务节点,任务节点集主要用于计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点,控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。
54.如图6所示,图6是本技术实施例提供的一种电子设备600的结构示意图,如图所示,所述电子设备600包括:应用处理器610、存储器620、通信接口630、以及一个或多个程序621,其中,所述一个或多个程序621被存储在上述存储器620中,并且被配置由上述应用处理器610执行,所述一个或多个程序621包括用于执行以下步骤的指令:获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。
55.可以看出,在本技术实施例中,服务器获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。如此,可以通过节点的平均负载值筛选任务竞争节点进行待执行任务实例的抢占和执行,避免节点过载,从而避免由于节点过载导致的宕机和死锁,有利于提高任务节点的容灾性,从而提高任务处理器的容灾性和工作效率。
56.在一可能的示例中,所述基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述一个或多个程序还用于执行以下步骤的指令:循环扫描加载所述任务配置数据表,针对每一所述任务配置数据,判断所述任务配置数据是否包含任务实例;若不包含,则基于所述任务配置数据生成所述任务实例;对所述任务实例执行触发判断,若所述任务实例满足触发条件,确定所述任务实例为待定任务实例;将所述任务配置数据表的至少一个待定任务实例存储至预设的第一链表,得到待定任务实例表;对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,将所述至少一个待执行任务实例
存储至预设的第二链表得到所述待执行任务实例表。
57.在一可能的示例中,所述对所述任务实例执行触发判断,所述一个或多个程序还用于执行以下步骤的指令:从所述任务配置数据中获取任务周期和任务触发时间;获取所述任务周期单位,从所述任务触发时间中提取触发日期、触发小时数、触发分钟数;当所述周期单位为月,若所述触发日期小于等于当前日期、所述触发小时数小于等于当前小时数且所述触发分钟数小于等于当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为周,若所述触发星期数小于等于当前星期数、所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为日,若所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为小时,若所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件。
58.在一可能的示例中,所述对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,所述一个或多个程序还用于执行以下步骤的指令:针对所述待定任务实例表中任意一个所述待定任务实例;提取所述待定任务实例的任务依赖关系,基于所述任务依赖关系判断所述待定任务实例是否存在父依赖任务;若存在所述父依赖任务,判断所述父依赖任务是否执行完成;若所述父依赖任务执行完成,或所述待定任务实例不存在父依赖任务,确定所述待定任务实例为待执行任务实例;轮询扫描所述待定任务实例表得到所述至少一个待执行任务实例。
59.在一可能的示例中,所述基于所述平均负载值所述任务节点集中筛选至少一个任务竞争节点,所述一个或多个程序还用于执行以下步骤的指令:针对所述任务节点集中每一所述任务节点,基于所述平均负载值确定所述任务节点的性能等级,所述性能等级包括:第一等级、第二等级、第三等级和第四等级;基于所述性能等级对所述任务节点执行任务竞争节点判断操作,所述任务竞争节点判断操作包括:若所述性能等级为所述第一等级,则所述任务节点为所述任务竞争节点;若所述性能等级为所述第二等级,对所述任务节点设置第一定时器,所述第一定时器的时间为预设的第一倒计时值,当所述第一定时器的数值归零时,所述任务节点为所述任务竞争节点;若所述性能等级为所述第三等级,对所述节点设置第二定时器,所述第二定时器的时间为预设的第二倒计时值,当所述第二定时器的数值归零时,所述任务节点为所述任务竞争节点,其中,所述第二倒计时值大于所述第一倒计时值;若所述性能等级为所述第四等级,则所述任务节点为过载节点,终止对所述任务节点的任务竞争节点判断操作。
60.在一可能的示例中,所述基于所述平均负载值确定所述任务节点的性能等级,所述一个或多个程序还用于执行以下步骤的指令:获取所述任务节点的节点cpu核心数量,基于所述节点cpu核心数量确定第一核心阈值、第二核心阈值和第三核心阈值,其中,所述第一核心阈值、所述第二核心阈值和所述第三核心阈值呈梯度依次增大;若所述平均负载值小于所述第一核心阈值,则确定所述任务节点的性能等级为第一等级;若所述平均负载值大于所述第一核心阈值,小于所述第二核心阈值,则确定所述任务节点的性能等级为第二等级;若所述平均负载值大于所述第二核心阈值,小于所述第三核心阈值,则确定所述任务节点的性能等级为第三等级;若所述平均负载值大于所述第三核心阈值,则确定所述任务节点的性能等级为第四等级。
61.在一可能的示例中,所述控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行,所述一个或多个程序还用于执行以下步骤的指令:步骤s1、针对所述至少一个任务竞争节点的每一所述任务竞争节点,获取所述任务竞争节点的节点ip;步骤s2、遍历所述待执行任务实例表,获取第一待执行任务实例的预设字段的第一字段信息;步骤s3、基于所述节点ip对所述第一字段信息进行替换更新;步骤s4、若更新失败,执行步骤s5,若更新成功,执行步骤s6;步骤s5、获取第二执行任务实例的预设字段的第二字段信息,基于所述节点ip更新所述第二字段信息,执行步骤s4;步骤s6、终止对所述待执行任务实例表的遍历操作,确定所述任务竞争节点抢占所述第一待执行任务实例,提取所述第一待执行任务实例存储至可执行任务实例表,控制所述任务竞争节点执行所述第一待执行任务。
62.上述主要从方法侧执行过程的角度对本技术实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
63.本技术实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个控制单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本技术实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
64.请参阅图7,图7是本技术实施例提供的一种任务处理装置的结构示意图,如图所示,本任务处理装置包括获取单元701、计算单元702和执行单元703,其中:获取单元701,用于获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算单元702,用于计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;执行单元703,用于控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行。
65.可以看出,在本技术实施例中,服务器获取待执行任务表的任务配置数据表,基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述待执行任务实例表包括至少一个待执行任务实例;计算预设的任务节点集中每一任务节点的平均负载值,基于所述平均负载值从所述任务节点集中筛选至少一个任务竞争节点;控制所述至少一个任务竞争节点对所述待执行任务实例表中的所述待执行任务实例进行抢占并执行。如此,可以通过节点的平均负载值筛选任务竞争节点进行待执行任务实例的抢占和执行,避免节点过载,从而避免由于节点过载导致的宕机和死锁,有利于提高任务节点的容灾性,从而提高任务处理器的容灾性和工作效率。
66.在一可能的示例中,所述基于所述任务配置数据表生成所述待执行任务表的待执行任务实例表,所述获取单元701,具体用于:循环扫描加载所述任务配置数据表,针对每一所述任务配置数据,判断所述任务配置数据是否包含任务实例;若不包含,则基于所述任务配置数据生成所述任务实例;对所述任务实例执行触发判断,若所述任务实例满足触发条件,确定所述任务实例为待定任务实例;将所述任务配置数据表的至少一个待定任务实例存储至预设的第一链表,得到待定任务实例表;对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,将所述至少一个待执行任务实例存储至预设的第二链表得到所述待执行任务实例表。
67.在一可能的示例中,所述对所述任务实例执行触发判断,所述获取单元701,具体用于:从所述任务配置数据中获取任务周期和任务触发时间;获取所述任务周期单位,从所述任务触发时间中提取触发日期、触发小时数、触发分钟数;当所述周期单位为月,若所述触发日期小于等于当前日期、所述触发小时数小于等于当前小时数且所述触发分钟数小于等于当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为周,若所述触发星期数小于等于当前星期数、所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为日,若所述触发小时数小于等于所述当前小时数且所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件;当所述周期单位为小时,若所述触发分钟数小于等于所述当前分钟数,所述任务实例满足所述触发条件。
68.在一可能的示例中,所述对所述待定任务实例表执行依赖关系判断操作得到至少一个待执行任务实例,所述获取单元701,具体用于:针对所述待定任务实例表中任意一个所述待定任务实例;提取所述待定任务实例的任务依赖关系,基于所述任务依赖关系判断所述待定任务实例是否存在父依赖任务;若存在所述父依赖任务,判断所述父依赖任务是否执行完成;若所述父依赖任务执行完成,或所述待定任务实例不存在父依赖任务,确定所述待定任务实例为待执行任务实例;轮询扫描所述待定任务实例表得到所述至少一个待执行任务实例。
69.在一可能的示例中,所述基于所述平均负载值所述任务节点集中筛选至少一个任务竞争节点,所述计算单元702,具体用于:针对所述任务节点集中每一所述任务节点,基于所述平均负载值确定所述任务节点的性能等级,所述性能等级包括:第一等级、第二等级、第三等级和第四等级;基于所述性能等级对所述任务节点执行任务竞争节点判断操作,所述任务竞争节点判断操作包括:若所述性能等级为所述第一等级,则所述任务节点为所述任务竞争节点;若所述性能等级为所述第二等级,对所述任务节点设置第一定时器,所述第一定时器的时间为预设的第一倒计时值,当所述第一定时器的数值归零时,所述任务节点为所述任务竞争节点;若所述性能等级为所述第三等级,对所述节点设置第二定时器,所述第二定时器的时间为预设的第二倒计时值,当所述第二定时器的数值归零时,所述任务节点为所述任务竞争节点,其中,所述第二倒计时值大于所述第一倒计时值;若所述性能等级为所述第四等级,则所述任务节点为过载节点,终止对所述任务节点的任务竞争节点判断操作。
70.在一可能的示例中,所述基于所述平均负载值确定所述任务节点的性能等级,所述计算单元702,具体用于:获取所述任务节点的节点cpu核心数量,基于所述节点cpu核心
数量确定第一核心阈值、第二核心阈值和第三核心阈值,其中,所述第一核心阈值、所述第二核心阈值和所述第三核心阈值呈梯度依次增大;若所述平均负载值小于所述第一核心阈值,则确定所述任务节点的性能等级为第一等级;若所述平均负载值大于所述第一核心阈值,小于所述第二核心阈值,则确定所述任务节点的性能等级为第二等级;若所述平均负载值大于所述第二核心阈值,小于所述第三核心阈值,则确定所述任务节点的性能等级为第三等级;若所述平均负载值大于所述第三核心阈值,则确定所述任务节点的性能等级为第四等级。
71.在一可能的示例中,所述控制所述至少一个任务竞争节点对所述待执行任务实例表中的待执行任务实例进行抢占并执行,所述执行单元703,具体用于:步骤s1、针对所述至少一个任务竞争节点的每一所述任务竞争节点,获取所述任务竞争节点的节点ip;步骤s2、遍历所述待执行任务实例表,获取第一待执行任务实例的预设字段的第一字段信息;步骤s3、基于所述节点ip对所述第一字段信息进行替换更新;步骤s4、若更新失败,执行步骤s5,若更新成功,执行步骤s6;步骤s5、获取第二执行任务实例的预设字段的第二字段信息,基于所述节点ip更新所述第二字段信息,执行步骤s4;步骤s6、终止对所述待执行任务实例表的遍历操作,确定所述任务竞争节点抢占所述第一待执行任务实例,提取所述第一待执行任务实例存储至可执行任务实例表,控制所述任务竞争节点执行所述第一待执行任务。
72.本技术实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
73.本技术实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
74.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
75.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
76.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
77.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目
的。
78.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
79.上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
80.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read

only memory ,简称:rom)、随机存取器(英文:random access memory,简称:ram)、磁盘或光盘等。
81.以上对本技术实施例进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1