[发明专利]应用系统多服务集群下定时任务调度方法有效
申请号: | 202211682914.1 | 申请日: | 2022-12-27 |
公开(公告)号: | CN115934287B | 公开(公告)日: | 2023-09-12 |
发明(设计)人: | 裴俊枫;王宗 | 申请(专利权)人: | 无锡锡银金科信息技术有限责任公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/52;G06F16/2455;G06F16/23;G06F16/27 |
代理公司: | 无锡市汇诚永信专利代理事务所(普通合伙) 32260 | 代理人: | 朱晓林 |
地址: | 214000 江苏省无锡市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用 系统 服务 集群 定时 任务 调度 方法 | ||
1.一种应用系统多服务集群下定时任务调度方法,其特征在于,所述方法包括:
接收指令创建任务,将任务对应数据存入数据库并同步到redis缓存中;
任务核心线程启动并完成数据同步后,查询所述redis缓存的任务列表,根据任务列表中各任务的状态信息更新可执行任务列表;其中,任务列表中包含有所有创建且未执行完毕的任务和对应状态信息,所述可执行任务列表中包含有任务核心线程确定的具备执行条件的任务;所述redis缓存还包含有任务列表对应的争抢锁列表,所述争抢锁列表包括所有服务对任务的争抢状态;所述状态信息至少包括每个任务的争抢锁id、任务id、任务参数、定时信息、执行类名、任务重试次数及最大重试次数、任务当前状态、前序任务列表和后续任务列表;所述前序任务列表和所述后续任务列表中包含有执行该任务需要的前序任务和后续任务;所述定时信息为触发该任务争抢机制的时间;更新所述可执行任务列表具体包括:
轮询所述redis缓存的任务列表,根据所述定时信息确定新触发任务,根据任务当前状态、争抢锁id及争抢状态、任务重试次数及最大重试次数确定可执行任务;
基于可执行任务和新触发任务更新所述可执行任务列表;其中,可执行任务为历史执行失败的任务,且执行次数小于最大重试次数,集群服务器包含若干服务,所述可执行任务列表中的任务对应争抢锁状态为未占用状态,任务当前状态为未执行状态;
更新所述可执行任务列表后,基于任务类型和任务参数对所述可执行任务列表中的所有任务进行归类,将存在关联条件的任务建立各自的所述前序任务列表及所述后续任务列表;
基于redis分布式机制获取所述可执行任务列表对应的任务锁争抢列表,通过争抢锁机制和任务的前序条件完成情况确定目标任务;具体包括:
核对所述可执行任务列表中各个候选任务对应前序任务的完成状态,并将前序任务未完成的候选任务滤除,获得中间任务列表;
基于redis分布式机制对所有中间任务执行多任务争抢,将争抢到的所述中间任务作为所述目标任务,同步更新所述目标任务的任务重试次数、执行信息时间、以及最晚完成时间;
当所述目标任务在最晚完成时间内未完成执行任务时,争抢锁自动失效;所述执行信息时间为目标服务争抢到锁的时间,且抢到锁后的争抢锁更新为已占用状态;其中,任务核心线程移交任务到本地线程池中执行后进入休眠状态,休眠完成后继续获取当前的所述中间任务列表;当所述中间任务列表不存在满足执行条件的任务时结束线程,否则继续根据所述中间任务列表执行争抢任务;
对所述目标任务创建子任务线程,并放到本地线程池中异步执行和同步所述redis缓存,子任务线程和任务核心线程分属不同线程池,任务核心线程是常驻线程池,用于调度和承担各个任务的实现,全局线程池用于子任务线程的创建和调度,具体包括:
对所述目标任务创建子任务线程,并在本地线程池中执行;
根据任务参数执行内容,并记录日志信息;
执行完成后根据结果更新所述redis缓存中的任务列表,用于任务核销;
当所述目标任务包含有所述后续任务列表时,读取并更新所述redis缓存中任务列表和所述可执行任务列表,继续通过争抢锁执行后续任务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡锡银金科信息技术有限责任公司,未经无锡锡银金科信息技术有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211682914.1/1.html,转载请声明来源钻瓜专利网。