CN113032131A - 基于Redis的分布式定时调度系统和方法 - Google Patents

基于Redis的分布式定时调度系统和方法 Download PDF

Info

Publication number
CN113032131A
CN113032131A CN202110574672.3A CN202110574672A CN113032131A CN 113032131 A CN113032131 A CN 113032131A CN 202110574672 A CN202110574672 A CN 202110574672A CN 113032131 A CN113032131 A CN 113032131A
Authority
CN
China
Prior art keywords
task
scheduling
node
timing
timing task
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.)
Granted
Application number
CN202110574672.3A
Other languages
English (en)
Other versions
CN113032131B (zh
Inventor
李太友
宋晨
李文泽
赵健军
郭昊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Zhongxin Zhiguan Information Technology Co ltd
Original Assignee
Tianjin Zhongxin Zhiguan Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Zhongxin Zhiguan Information Technology Co ltd filed Critical Tianjin Zhongxin Zhiguan Information Technology Co ltd
Priority to CN202110574672.3A priority Critical patent/CN113032131B/zh
Publication of CN113032131A publication Critical patent/CN113032131A/zh
Application granted granted Critical
Publication of CN113032131B publication Critical patent/CN113032131B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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

Description

基于Redis的分布式定时调度系统和方法
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种基于Redis的分布式定时调度系统和方法。
背景技术
定时任务调度是一种按照指定时间策略周期性执行任务的应用业务系统或模块,是应用软件中一个常见的模块,用于处理需重复并周期性调用的任务,定时任务调度一般被用于数据同步、交易对账、异常处理等场景中。为了保证高可用和高容错性,大规模的云平台或者服务器集群通常采用分布式架构,因此分布式定时任务调度应运而生。
现有分布式定时任务调度工具很多都具有性能瓶颈,效率低下,比如知名的分布式调度工具Quartz,乐观情况下每秒的调度大概在300笔左右,其依赖数据库及数据库锁,只能满足少批量的任务调度,难以支撑高并发的调度。
发明内容
本发明提供一种基于Redis的分布式定时调度系统和方法,避免了对数据库的频繁读写以及加解数据库锁的操作过程,提高了定时任务的调度效率。
一方面,本发明实施例提供了一种基于Redis的分布式定时调度系统,包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,
每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;
若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
下一个任务续约线程持续进行定时任务调度主节点续约操作;
定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;
定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。
另一方面,本发明实施例还提供了一种基于Redis的分布式定时调度方法,由本发明实施例任一所述的基于Redis的分布式定时调度系统执行,包括:
每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;
若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
下一个任务续约线程持续进行定时任务调度主节点续约操作;
定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向任务执行节点发送调度请求,以执行任务执行节点调度任务;
任务执行节点接收调度请求,并执行相应的任务执行操作。
本发明实施例的技术方案提供一种基于Redis的分布式定时调度系统,该系统包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作,上述通过抢占Redis中的预设关键字确定定时任务调度主节点,并执行任务调度操作,使得定时任务的调度不再依赖数据库及数据库锁,减少了数据库的频繁读写以及加解锁的操作,通过持续续约的方式实现主备调度节点的无缝切换,能够减少CPU损耗,提高了定时任务的调度效率。
附图说明
为了更加清楚地说明本发明示例性实施例的技术方案,下面对描述实施例中所需要用到的附图做一简单介绍。显然,所介绍的附图只是本发明所要描述的一部分实施例的附图,而不是全部的附图,对于本领域普通技术人员,在不付出创造性劳动的前提下,还可以根据这些附图得到其他的附图。
图1A是本发明实施例一提供的一种基于Redis的分布式定时调度系统的结构示意图;
图1B是本发明实施例一提供的一种任务续约线程执行续约操作的流程示意图;
图2是本发明实施例二提供的一种基于Redis的分布式定时调度方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1A为本发明实施例一提供的一种基于Redis的分布式定时调度系统的结构示意图,该分布式定时调度系统包括至少两个定时任务调度节点110、定时任务执行节点120和定时任务调度策略配置模块130,每个定时任务调度节点110包括任务抢占线程111和任务续约线程112,其中,
每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;
若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
下一个任务续约线程持续进行定时任务调度主节点续约操作;
定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;
定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。
其中,定时任务调度节点为在分布式定时调度系统的调度中心中执行调度任务的节点,其中,调度中心优选可以是分布式服务器。每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,任务抢占线程用于持续执行预设关键字的抢占操作,上述预设关键字为在Redis中预先设置的关键字。本实施例中通过抢占预设关键字可以确定定时任务调度主节点,若任务抢占线程抢占到预设关键字,相应的,与该任务抢占线程对应的定时任务调度节点则被设置为定时任务调度主节点,若任务抢占线程未抢占到预设关键字,则针对对应的定时任务调度节点不执行任何操作。任务续约线程用于在任务抢占线程抢占到预设关键字,将对应的定时任务调度节点设置为定时任务调度主节点之后,持续进行定时任务调度主节点的续约操作,若续约成功,则对应的定时任务调度节点在下一次调度时仍为定时任务调度主节点,若续约失败,则对应的定时任务调度节点不再是定时任务调度主节点。本实施例的技术方案能够在当前执行调度任务的定时任务调度节点出现异常时,自动切换到其他定时任务调度节点,能够保证调度任务的正常执行。
定时任务执行节点为在接收到调用请求后,执行定时任务的节点,定时任务执行节点一般为客户端。在定时任务执行节点中,优选可以设置有定时任务的时间表达式,定时任务的具体执行方法以及定时任务的返回结果等参数,在上述参数设置完成后,优选可以将定时任务执行节点以及相应的IP注册到调度中心,调度中心接收到相应的定时任务后,将定时任务存储到内存中,以便后续定时任务调度节点进行调度。定时任务调度策略配置模块用于供用户配置任务调度策略,其中,任务调度策略配置有调度任务的方法、调度任务的时间、调度任务的类型、调度任务的超时时间以及调度任务失败后的应对策略等,任务调度策略用于指导定时任务调度主节点如何进行任务调度。
下面以具体示例对本实施例中的基于Redis的分布式定时调度系统的工作流程进行详细说明:
在基于Redis的分布式定时调度系统中具有三个定时任务调度节点,分别是定时任务调度节点1、定时任务调度节点2和定时任务调度节点3,以及定时任务执行节点和定时任务调度策略配置模块,其中,定时任务调度节点1包括任务抢占线程1和任务续约线程1,定时任务调度节点2包括任务抢占线程2和任务续约线程2,定时任务调度节点3包括任务抢占线程3和任务续约线程3。
在执行定时任务调度的过程中,任务抢占线程1、任务抢占线程2和任务抢占线程3都持续执行预设关键字抢占操作,若任务抢占线程1抢占到预设关键字,则任务抢占线程1将定时任务调度节点1设置为定时任务调度主节点,定时任务调度节点1根据定时任务调度度策略配置模块提供的定时任务调度策略,向相应的定时任务执行节点发送调度请求,相应的定时任务执行节点接收到调度请求后,执行相应的定时任务执行操作。
在任务抢占线程1将定时任务调度节点1设置为定时任务调度主节点后,任务续约线程1持续进行定时任务调度节点1为定时任务调度主节点的续约操作,若续约成功,则定时任务调度节点1根据定时任务调度度策略配置模块提供的定时任务调度策略,继续向相应的定时任务执行节点发送调度请求,直至续约失败(例如定时任务调度节点1异常,则续约失败),定时任务调度节点1不再是定时任务调度主节点。
此时,如果任务抢占线程3抢占到预设关键字,则任务抢占线程3将定时任务调度节点3设置为定时任务调度主节点,定时任务调度节点3根据定时任务调度度策略配置模块提供的定时任务调度策略,向相应的定时任务执行节点发送调度请求,相应的定时任务执行节点接收到调度请求后,执行相应的定时任务执行操作。
在任务抢占线程3将定时任务调度节点3设置为定时任务调度主节点后,任务续约线程3持续进行定时任务调度节点3为定时任务调度主节点的续约操作,若续约成功,则定时任务调度节点3根据定时任务调度度策略配置模块提供的定时任务调度策略,继续向相应的定时任务执行节点发送调度请求,直至续约失败,定时任务调度节点3不再是定时任务调度主节点。
可以理解的是,在任务续约线程1续约失败之后,还可以是任务抢占线程2抢占到预设关键字,任务抢占线程2将定时任务调度节点2设置为定时任务调度主节点,并执行相应的后续操作。本实施例中的基于Redis的分布式定时调度系统循环迭代上述过程,直至定时任务调度策略中的所有任务调度完成。
在一个优选实施例中,每个任务抢占线程抢占预设关键字,包括每个任务抢占线程利用redis setnx指令抢占预设关键字。
本实施例的技术方案提供一种基于Redis的分布式定时调度系统,该系统包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作,上述通过抢占Redis中的预设关键字确定定时任务调度主节点,并执行任务调度操作,使得定时任务的调度不再依赖数据库及数据库锁,减少了数据库的频繁读写以及加解锁的操作,通过持续续约的方式实现主备调度节点的无缝切换,能够减少CPU损耗,提高了定时任务的调度效率。
在上述各实施例的基础上,进一步的,若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点,包括:
若当前任务抢占线程抢占预设关键字,则所述当前任务抢占线程将所述预设关键字的名称设置为定时任务调度主节点,将预设关键字的VALUE设置为当前定时任务调度节点。
示例性的,当前任务抢占线程抢占到预设关键字后,优选可以将预设关键字的名称设置为“masterkey”,即将关键字的名称设置为定时任务调度主节点,可以将预设关键字的VALUE设置为当前定时任务调度节点,以上述具体示例为例,当前定时任务调度节点为定时任务调度节点1,则预设关键字的VALUE可以设置为定时任务调度节点1,即(预设关键字KEY,VALUE)=(masterkey,定时任务调度节点1)。
可以理解的是,下一个任务抢占线程在抢占到预设关键字之后,优选也可以重复上述步骤,完成预设关键字名称和VALUE的设置。
在上述各实施例的基础上,对任务续约线程执行续约操作进行进一步的优化。图1B为本发明实施例一提供的一种任务续约线程执行续约操作的流程示意图,如图1B所示,所述当前任务续约线程持续进行定时任务调度主节点续约操作,包括:
所述当前任务续约线程持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若是,则确定定时任务调度主节点在当前续约有效期内是否已加载定时任务;若否,则持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若已加载,则进行下一次定时任务调度主节点续约操作;
若未加载,则加载定时任务,之后进行下一次定时任务调度主节点续约操作;
下一次定时任务调度主节点续约操作成功后,所述当前任务续约线程继续执行持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点的操作。本实施例中当前任务续约线程循环迭代上述过程,直至续约失败。
在上述各实施例的基础上,进一步的,所述定时任务调度节点还包括增量线程,所述增量线程用于删除或增加调度任务。
优选的,当定时任务调度节点为定时任务调度主节点且当前进程为任务调度进程时,相应的增量线程执行删除或增加内存中的调度任务的操作。示例性的,当监测到定时任务调度节点为定时任务调度主节点后,增量进程将相应的定时任务加载到内存中,当监测到定时任务调度节点续约失败后,增量进程将相应的定时任务在内存中删除。
在上述各实施例的基础上,进一步的,所述当前任务续约线程还用于:
若下一次定时任务调度主节点续约操作失败,则利用增量线程删除已加载的定时任务,并继续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点。
在上述各实施例的基础上,进一步的,所述系统还包括:
所述增量线程用于将定时任务加载到内存中,以便定时任务调度主节点在当前续约有效期内加载定时任务。
在上述各实施例的基础上,进一步的,定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务,包括:
定时任务调度主节点在内存中根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务。上述任务调度过程基于内存而不是基于数据库实现,大大提高了任务调度的效率,同时可以实现高可用。
在上述各实施例的基础上,进一步的,所述任务执行节点接收调度请求,并执行相应的任务执行操作,包括:
所述任务执行节点接收调度请求,根据预设定时任务执行逻辑执行相应的任务执行操作,得到任务执行结果;所述任务执行节点将任务执行结果存储至任务执行日志中。将任务执行结果存储在任务执行日志而不是存储在数据库中,能够方便任务执行结果的查找。
实施例二
图2为本发明实施例二提供的一种基于Redis的分布式定时调度方法的流程示意图,本实施例适用于需要对定时任务进行调度的情况,该方法由本发明实施例提供的基于Redis的分布式定时调度系统执行。如图2所示,该方法具体包括如下步骤:
S210、每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
S220、若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
S230、当前任务续约线程持续进行定时任务调节主节点续约操作;
S240、若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
S250、下一个任务续约线程持续进行定时任务调度主节点续约操作;
S260、定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向任务执行节点发送调度请求,以执行任务执行节点调度任务;
S270、任务执行节点接收调度请求,并执行相应的任务执行操作。
本实施例的技术方案提供一种基于Redis的分布式定时调度方法,该方法包括:每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;当前任务续约线程持续进行定时任务调节主节点续约操作;若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;下一个任务续约线程持续进行定时任务调度主节点续约操作;定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;定时任务执行节点接收调度请求,并执行相应的定时任务执行操作,上述通过抢占Redis中的预设关键字确定定时任务调度主节点,并执行任务调度操作,使得定时任务的调度不再依赖数据库及数据库锁,减少了数据库的频繁读写以及加解锁的操作,通过持续续约的方式实现主备调度节点的无缝切换,能够减少CPU损耗,提高了定时任务的调度效率。
在上述各实施例的基础上,进一步的,每个任务抢占线程抢占预设关键字,包括:
每个任务抢占线程利用redis setnx指令抢占预设关键字。
在上述各实施例的基础上,进一步的,若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点,包括:
若当前任务抢占线程抢占预设关键字,则所述当前任务抢占线程将所述预设关键字的名称设置为定时任务调度主节点,将预设关键字的VALUE设置为当前定时任务调度节点。
在上述各实施例的基础上,进一步的,所述当前任务续约线程持续进行定时任务调度主节点续约操作,包括:
所述当前任务续约线程持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若是,则确定定时任务调度主节点在当前续约有效期内是否已加载定时任务;若否,则持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若已加载,则进行下一次定时任务调度主节点续约操作;
若未加载,则加载定时任务,之后进行下一次定时任务调度主节点续约操作;
下一次定时任务调度主节点续约操作成功后,所述当前任务续约线程继续执行持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点的操作。
在上述各实施例的基础上,进一步的,所述定时任务调度节点还包括增量线程,所述增量线程用于删除或增加调度任务。
在上述各实施例的基础上,进一步的,所述当前任务续约线程还用于:
若下一次定时任务调度主节点续约操作失败,则利用增量线程删除已加载的定时任务,并继续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点。
在上述各实施例的基础上,进一步的,所述方法还包括:
所述增量线程用于将定时任务加载到内存中,以便定时任务调度主节点在当前续约有效期内加载定时任务。
在上述各实施例的基础上,进一步的,定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务,包括:
定时任务调度主节点在内存中根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务。
在上述各实施例的基础上,进一步的,所述任务执行节点接收调度请求,并执行相应的任务执行操作,包括:
所述任务执行节点接收调度请求,根据预设定时任务执行逻辑执行相应的任务执行操作,得到任务执行结果:
所述任务执行节点将任务执行结果存储至任务执行日志中。
本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种基于Redis的分布式定时调度系统,其特征在于,包括至少两个定时任务调度节点、定时任务执行节点和定时任务调度策略配置模块,每个定时任务调度节点包括任务抢占线程和任务续约线程,其中,
每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;
若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
下一个任务续约线程持续进行定时任务调度主节点续约操作;
定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务;
定时任务执行节点接收调度请求,并执行相应的定时任务执行操作。
2.根据权利要求1所述的系统,其特征在于,每个任务抢占线程抢占预设关键字,包括:
每个任务抢占线程利用redis setnx指令抢占预设关键字。
3.根据权利要求1或2所述的系统,其特征在于,若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点,包括:
若当前任务抢占线程抢占预设关键字,则所述当前任务抢占线程将所述预设关键字的名称设置为定时任务调度主节点,将预设关键字的VALUE设置为当前定时任务调度节点。
4.根据权利要求3所述的系统,其特征在于,所述当前任务续约线程持续进行定时任务调度主节点续约操作,包括:
所述当前任务续约线程持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若是,则确定定时任务调度主节点在当前续约有效期内是否已加载定时任务;若否,则持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点;
若已加载,则进行下一次定时任务调度主节点续约操作;
若未加载,则加载定时任务,之后进行下一次定时任务调度主节点续约操作;
下一次定时任务调度主节点续约操作成功后,所述当前任务续约线程继续执行持续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点的操作。
5.根据权利要求4所述的系统,其特征在于,所述定时任务调度节点还包括增量线程,所述增量线程用于删除或增加调度任务。
6.根据权利要求5所述的系统,其特征在于,所述当前任务续约线程还用于:
若下一次定时任务调度主节点续约操作失败,则利用增量线程删除已加载的定时任务,并继续监听当前定时任务调度主节点的VALUE是否为当前定时任务调度节点。
7.根据权利要求6所述的系统,其特征在于,还包括:
所述增量线程用于将定时任务加载到内存中,以便定时任务调度主节点在当前续约有效期内加载定时任务。
8.根据权利要求1或2所述的系统,其特征在于,定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务,包括:
定时任务调度主节点在内存中根据任务调度策略配置模块预先配置的任务调度策略,向定时任务执行节点发送调度请求,以执行定时任务执行节点的调度任务。
9.根据权利要求1或2所述的系统,其特征在于,所述任务执行节点接收调度请求,并执行相应的任务执行操作,包括:
所述任务执行节点接收调度请求,根据预设定时任务执行逻辑执行相应的任务执行操作,得到任务执行结果:
所述任务执行节点将任务执行结果存储至任务执行日志中。
10.一种基于Redis的分布式定时调度方法,其特征在于,由权利要求1-9任一所述的基于Redis的分布式定时调度系统执行,包括:
每个任务抢占线程持续执行预设关键字抢占操作,所述预设关键字用于确定定时任务调度主节点;
若当前任务抢占线程抢占预设关键字,则当前任务抢占线程将当前定时任务调度节点设置为定时任务调度主节点;
当前任务续约线程持续进行定时任务调节主节点续约操作;
若续约操作执行失败,则下一个任务抢占线程将下一个定时任务调度节点设置为定时任务调度主节点,所述下一个任务抢占线程为下一次抢占预设关键字对应的线程;
下一个任务续约线程持续进行定时任务调度主节点续约操作;
定时任务调度主节点根据任务调度策略配置模块预先配置的任务调度策略,向任务执行节点发送调度请求,以执行任务执行节点调度任务;
任务执行节点接收调度请求,并执行相应的任务执行操作。
CN202110574672.3A 2021-05-26 2021-05-26 基于Redis的分布式定时调度系统和方法 Active CN113032131B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110574672.3A CN113032131B (zh) 2021-05-26 2021-05-26 基于Redis的分布式定时调度系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110574672.3A CN113032131B (zh) 2021-05-26 2021-05-26 基于Redis的分布式定时调度系统和方法

Publications (2)

Publication Number Publication Date
CN113032131A true CN113032131A (zh) 2021-06-25
CN113032131B CN113032131B (zh) 2021-08-31

Family

ID=76456196

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110574672.3A Active CN113032131B (zh) 2021-05-26 2021-05-26 基于Redis的分布式定时调度系统和方法

Country Status (1)

Country Link
CN (1) CN113032131B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9083770B1 (en) * 2013-11-26 2015-07-14 Snapchat, Inc. Method and system for integrating real time communication features in applications
CN106201694A (zh) * 2016-07-13 2016-12-07 北京农信互联科技有限公司 一种分布式系统下执行定时任务的配置方法及系统
CN106790694A (zh) * 2017-02-21 2017-05-31 广州爱九游信息技术有限公司 分布式系统及分布式系统中目标对象的调度方法
CN107665144A (zh) * 2016-07-29 2018-02-06 北京京东尚科信息技术有限公司 分布式任务的均衡调度中心、方法、系统和装置
CN108282531A (zh) * 2018-01-24 2018-07-13 深圳市欧辰技术有限公司 一种基于分布式系统的唯一性id生成方法
CN109558234A (zh) * 2018-11-30 2019-04-02 中国联合网络通信集团有限公司 一种定时任务调度方法和装置
CN109697112A (zh) * 2018-12-24 2019-04-30 广东亿迅科技有限公司 分布式集约化一站式作业系统和实现方法
CN109857527A (zh) * 2019-01-04 2019-06-07 四川虹美智能科技有限公司 一种分布式任务调度方法、系统、分布式装置和Redis数据库
CN111813513A (zh) * 2020-06-24 2020-10-23 中国平安人寿保险股份有限公司 基于分布式的实时任务调度方法、装置、设备及介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9083770B1 (en) * 2013-11-26 2015-07-14 Snapchat, Inc. Method and system for integrating real time communication features in applications
CN106201694A (zh) * 2016-07-13 2016-12-07 北京农信互联科技有限公司 一种分布式系统下执行定时任务的配置方法及系统
CN107665144A (zh) * 2016-07-29 2018-02-06 北京京东尚科信息技术有限公司 分布式任务的均衡调度中心、方法、系统和装置
CN106790694A (zh) * 2017-02-21 2017-05-31 广州爱九游信息技术有限公司 分布式系统及分布式系统中目标对象的调度方法
CN108282531A (zh) * 2018-01-24 2018-07-13 深圳市欧辰技术有限公司 一种基于分布式系统的唯一性id生成方法
CN109558234A (zh) * 2018-11-30 2019-04-02 中国联合网络通信集团有限公司 一种定时任务调度方法和装置
CN109697112A (zh) * 2018-12-24 2019-04-30 广东亿迅科技有限公司 分布式集约化一站式作业系统和实现方法
CN109857527A (zh) * 2019-01-04 2019-06-07 四川虹美智能科技有限公司 一种分布式任务调度方法、系统、分布式装置和Redis数据库
CN111813513A (zh) * 2020-06-24 2020-10-23 中国平安人寿保险股份有限公司 基于分布式的实时任务调度方法、装置、设备及介质

Also Published As

Publication number Publication date
CN113032131B (zh) 2021-08-31

Similar Documents

Publication Publication Date Title
CN107016480B (zh) 任务调度方法、装置及系统
Koren et al. MOCA: A multiprocessor on-line competitive algorithm for real-time system scheduling
CN112099958A (zh) 分布式多任务管理方法、装置、计算机设备及存储介质
US6820263B1 (en) Methods and system for time management in a shared memory parallel processor computing environment
CN111209084B (zh) 一种faas分布式计算方法和装置
CN110611707A (zh) 一种任务调度的方法及装置
CN112667383B (zh) 一种任务执行及调度方法、系统、装置、计算设备及介质
CN111190732A (zh) 定时任务处理系统及方法、存储介质和电子设备
CN111258726A (zh) 任务调度方法和装置
CN115756783A (zh) 跨子系统的空间任务依赖调度方法与系统
CN111913793A (zh) 分布式任务调度方法、装置、节点设备和系统
CN111736809A (zh) 分布式机器人集群网络管理框架及其实现方法
CN109725916B (zh) 流处理的拓扑结构更新系统和方法
CN113032131B (zh) 基于Redis的分布式定时调度系统和方法
CN111352930A (zh) 一种模板数据处理方法、装置、服务器和存储介质
CN111625414A (zh) 一种数据转换整合软件的自动调度监控系统实现方法
CN110750362A (zh) 生物信息的分析方法、装置和存储介质
CN115357395A (zh) 故障设备任务转移方法及系统、电子设备和存储介质
US11797291B2 (en) Software update management device and software update management method
CN113010290A (zh) 一种任务管理方法、装置、设备及存储介质
CN112650573B (zh) 一种任务调度方法和装置
CN113204434B (zh) 基于k8s的计划任务执行方法、装置及计算机设备
CN117519937A (zh) 多阶段任务调度方法、装置、设备及存储介质
CN115357413A (zh) 一种使规则引擎实例进行水平扩展的控制系统
CN111984377A (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
GR01 Patent grant
GR01 Patent grant