基于Redis的分布式定时调度系统和方法技术方案

技术编号:29024265 阅读:25 留言:0更新日期:2021-06-26 05:25
本发明专利技术实施例公开了一种基于Redis的分布式定时调度系统和方法,该系统中,若当前任务抢占线程抢占预设关键字,则当前定时任务调度节点为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个定时任务调度节点为定时任务调度主节点,下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点向定时任务执行节点发送调度请求;定时任务执行节点接收调度请求,执行相应的定时任务执行操作,本发明专利技术实施例的技术方案使得定时任务的调度不再依赖数据库及数据库锁,减少了数据库的频繁读写以及加解锁的操作,实现主备调度节点的无缝切换,提高了定时任务的调度效率。率。率。

【技术实现步骤摘要】
基于Redis的分布式定时调度系统和方法


[0001]本专利技术实施例涉及计算机
,尤其涉及一种基于Redis的分布式定时调度系统和方法。

技术介绍

[0002]定时任务调度是一种按照指定时间策略周期性执行任务的应用业务系统或模块,是应用软件中一个常见的模块,用于处理需重复并周期性调用的任务,定时任务调度一般被用于数据同步、交易对账、异常处理等场景中。为了保证高可用和高容错性,大规模的云平台或者服务器集群通常采用分布式架构,因此分布式定时任务调度应运而生。
[0003]现有分布式定时任务调度工具很多都具有性能瓶颈,效率低下,比如知名的分布式调度工具Quartz,乐观情况下每秒的调度大概在300笔左右,其依赖数据库及数据库锁,只能满足少批量的任务调度,难以支撑高并发的调度。

技术实现思路

[0004]本专利技术提供一种基于Redis的分布式定时调度系统和方法,避免了对数据库的频繁读写以及加解数据库锁的操作过程,提高了定时任务的调度效率。
[0005]一方面,本专利技术实施例提供了一种基于Redis的分布式定时调度系统,包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。
[0006]另一方面,本专利技术实施例还提供了一种基于Redis的分布式定时调度方法,由本专利技术实施例任一所述的基于Redis的分布式定时调度系统执行,包括:每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向任务执行节点发送调度请求,以执行任务执行节点调度任务;任务执行节点接收调度请求,并执行相应的任务执行操作。
[0007]本专利技术实施例的技术方案提供一种基于Redis的分布式定时调度系统,该系统包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作,上述通过抢占Redis中的预设关键字确定定时任务调度主节点,并执行任务调度操作,使得定时任务的调度不再依赖数据库及数据库锁,减少了数据库的频繁读写以及加解锁的操作,通过持续续约的方式实现主备调度节点的无缝切换,能够减少CPU损耗,提高了定时任务的调度效率。
附图说明
[0008]为了更加清楚地说明本专利技术示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本专利技术所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。
[0009]图1A是本专利技术实施例一提供的一种基于Redis的分布式定时调度系统的结构示意图;图1B是本专利技术实施例一提供的一种任务续约线程执行续约操作的流程示意图;图2是本专利技术实施例二提供的一种基于Redis的分布式定时调度方法的流程示意图。
具体实施方式
[0010]下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。
[0011]实施例一图1A为本专利技术实施例一提供的一种基于Redis的分布式定时调度系统的结构示意
图,该分布式定时调度系统包括至少两个定时任务调度节点110、定时任务执行节点120和定时任务调度策略配置模块130,每个定时任务调度节点110包括任务抢占线程111和任务续约线程112,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。
[0012]其中,定时任务调度节点为在分布式定时调度系统的调度中心中执行调度任务的节点,其中,调度中心优选可以是分布式服务器。每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,任务抢占线程用于持续执行预设关键字的抢占操作,上述预设关键字为在Redis中预先设置的关键字。本实施例中通过抢占预设关键字可以确定定时任务调度主节点,若任务抢占线程抢占到预设关键字,相应的,与该任务抢占线程对应的定时任务调度节点则被设置为定时任务调度主节点,若任务抢占线程未抢占到预设关键字,则针对对应的定时任务调度节点不执行任何操作。任务续约线程用于在任务抢占线程抢占到预设关键字,将对应的定时任务调度节点设置为定时本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Redis的分布式定时调度系统,其特征在于,包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。2.根据权利要求1所述的系统,其特征在于,每个任务抢占线程抢占预设关键字,包括:每个任务抢占线程利用redis setnx指令抢占预设关键字。3.根据权利要求1或2所述的系统,其特征在于,若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点,包括:若当前任务抢占线程抢占预设关键字,则所述当前任务抢占线程将所述预设关键字的名称设置为定时任务调度主节点,将预设关键字的VALUE设置为当前定时任务调度节点。4.根据权利要求3所述的系统,其特征在于,所述当前任务续约线程持续进行定时任务调度主节点续约操作,包括:所述当前任务续约线程持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;若是,则确定定时任务调度主节点在当前续约有效期内是否已加载定时任务;若否,则持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;若已加载,则进行下一次定时任务调度主节点续约操作;若未加载,则加载定时任务,之后进行下一次定时任务调度主节点续约操作;下一次定时任务调度主节点续约操作成功后,所述当前任务续约线程继续执行持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点...

【专利技术属性】
技术研发人员:李太友宋晨李文泽赵健军郭昊
申请(专利权)人:天津中新智冠信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1