CN109857527A - 一种分布式任务调度方法、系统、分布式装置和Redis数据库 - Google Patents
一种分布式任务调度方法、系统、分布式装置和Redis数据库 Download PDFInfo
- Publication number
- CN109857527A CN109857527A CN201910006826.1A CN201910006826A CN109857527A CN 109857527 A CN109857527 A CN 109857527A CN 201910006826 A CN201910006826 A CN 201910006826A CN 109857527 A CN109857527 A CN 109857527A
- Authority
- CN
- China
- Prior art keywords
- distributed
- lock
- order
- distributed lock
- executing
- 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.)
- Withdrawn
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种分布式任务调度方法、系统、分布式装置和Redis数据库,应用于分布式装置的方法,包括:存储至少一个定时任务、对应的执行时间和对应Setnx命令,针对每一个定时任务,确定当前时间是否与对应的执行时间相对应,如果是,执行S2;S2:将对应的Setnx命令发送给Redis数据库;S3:确定是否接收到Redis数据库返回的表征获取到分布式锁的第一回执结果,如果是,执行S6,否则执行S4;S4:确定分布式锁是否失效,如果是,执行S5;S5:从Redis数据库获取新锁,将新锁作为分布式锁,执行S6;S6:执行定时业务的业务逻辑,并在执行完毕时,释放分布式锁。本方案能够避免定时任务无法正常执行。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种分布式任务调度方法、系统、分布式装置和Redis数据库。
背景技术
在企业应用中,我们经常会遇到定时任务(或任务调度)的需求。比如排班提醒、每天凌晨进行数据库维护等。一般的项目主要会通过基于Zookeeper的分布式锁来实现的定时任务集群完成定时任务。
目前,通过基于Zookeeper的分布式锁来实现的定时任务集群,主要通过在各个服务器配置相同的定时任务,同时执行。等待执行时间点时,各服务器会在Zookeeper上相同目录下添加一个临时节点,最后再由临时节点中序号最小的服务器获得定时任务执行权,其他服务器则放弃本次执行权限。
但是,当获取到任务执行权的服务器出现异常而无法执行定时任务时,其他服务器无法第一时间获得该服务器的状态,从而导致定时任务无法正常执行。
发明内容
本发明实施例提供了一种分布式任务调度方法、系统、分布式装置和Redis数据库,能够避免定时任务无法正常执行。
第一方面,本发明实施例提供了一种分布式任务调度方法,应用于分布式装置,预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令,还包括:
S1:针对每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2;
S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
S3:确定是否接收到所述Redis数据库根据所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;
S4:确定所述分布式锁是否失效,如果是,执行S5;
S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;
S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
优选地,
所述S4,包括:
按照预设的检测周期,向所述Redis数据库发送所述Setnx命令中的锁名,其中,所述锁名与所述分布式锁相对应;
确定是否接收到所述Redis数据库根据所述锁名返回的第一反馈值,其中,所述第一反馈值表征所述分布式锁失效;
如果是,调用所述Redis数据库的Getset命令;
根据所述Getset命令,执行所述S5。
优选地,
所述根据所述Getset命令,执行所述S5,包括:
确定是否接收到所述Redis数据库根据所述Getset命令返回的第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁;
如果是,将所述新锁作为分布式锁,S6;
否则,执行所述按照预设的检测周期,向所述Redis数据库发送所述分布式锁的锁名。
优选地,
所述S1中的所述确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2,包括:
按照预设的执行周期,确定当前时间是否与所述定时任务对应的所述执行时间相同,如果是,执行S2。
优选地,
当确定获取到所述分布式锁时,
在所述S6之前,进一步包括:
调用所述Redis数据库的Expire命令,并执行所述S6;
在所述业务逻辑执行完毕时,
在所述释放所述分布式锁之前,进一步包括:
确定所述分布式锁是否被所述Expire命令释放;
如果否,调用所述Redis数据库的Del命令,释放所述分布式锁。
第二方面,本发明实施例提供了一种分布式任务调度方法,应用于Redis数据库,包括:
D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
D2:确定所述分布式装置是否第一个发来所述Setnx命令,如果是,执行D3,否则,执行D4;
D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁,执行D5;
D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁,执行D5;
D5:确定所述分布式锁是否失效,如果是,执行D6,否则,执行D8;
D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;
D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;
D8:在所述分布式锁被释放时,删除所述分布式锁。
优选地,
在所述存储所述Setnx命令对应的分布式锁之后,在所述D5之前,进一步包括:
存储所述分布式锁对应的过期超时时间和锁名;
生成与所述过期超时时间和所述锁名相对应的Expire命令;
生成与所述锁名相对应的Del命令;
所述D5,包括:
确定所述Expire命令是否释放所述分布式锁,如果是,执行D6,否则,执行D8;
所述D8,包括:
在所述Del命令被调用时,删除所述分布式锁。
优选地,
在所述D2之后,在所述确定所述Expire命令是否释放所述分布式锁之前,进一步包括:
在接收到所述分布式装置发来的所述锁名时,执行所述确定所述Expire命令是否释放所述分布式锁;
如果是,向所述分布式装置返回第一反馈值,并执行D6,其中,所述第一反馈值表征所述分布式锁失效;
否则,向所述分布式装置返回第二反馈值,并执行所述在所述Del命令被调用时,删除所述分布式锁,其中,所述第二反馈值表征所述分布式锁未失效。
优选地,
在所述D6之后,在所述D7之前,进一步包括:
T1:更新所述过期超时时间,生成与更新后的所述过期超时时间和所述锁名相对应的Getset命令;
T2:在所述Getset命令被所述分布式装置调用时,确定所述分布式装置是否第一调用所述Getset命令,如果是,执行T3,否则,执行T4;
T3:向所述分布式装置返回第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁,执行D7;
T4:向所述分布式装置返回第二获取结果,其中,所述第二获取结果表征未获取到所述新锁,返回T1。
第三方面,本发明实施例提供了一种分布式装置,包括:
调度装置存储模块,用于执行:预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令;
调度装置监控模块,用于执行:S1:针对所述调度装置存储模块存储的每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
调度装置执行模块,用于执行:S3:确定是否接收到所述Redis数据库根据所述调度装置监控模块发送的所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;S4:确定所述分布式锁是否失效,如果是,执行S5;S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
第四方面,本发明实施例提供了一种Redis数据库,包括:
数据库处理模块,用于执行:D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
数据库监控模块,用于执行:D2:确定所述分布式装置是否第一个发来所述数据库处理模块存储的所述Setnx命令,如果是,执行D3,否则,执行D4;D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁;D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁;
数据库管理模块,用于执行:D5:确定所述数据库处理模块存储的所述分布式锁是否失效,如果是,执行D6,否则,执行D8;D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;D8:在所述分布式锁被释放时,删除所述分布式锁。
第五方面,本发明实施例提供了一种分布式任务调度系统,包括:至少两个第三方面所述的分布式装置和第四方面所述的Redis数据库。
本发明实施例提供了一种分布式任务调度方法,在应用于分布式装置的方法中,分布式装置在确定需要执行定时任务时,可以将定时任务对应的Setnx命令发送给外部的Redis数据库,以使与其他分布式装置竞争获取定时任务对应的分布式锁,当确定获取到分布式锁时,可以确定获取到定时任务的执行权,因此可以执行定时任务对应的业务逻辑,并在业务逻辑执行完毕时释放分布式锁,以完成业务调度,而当未获取到分布式锁时,可以监控未获取到的分布式锁是否过期,当确定未获取到的分布式锁过期时,说明获取到该分布式锁的分布式装置出现异常,因此可以获取对应的新锁,并完成定时任务的业务逻辑,以避免定时任务无法正常执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种分布式任务调度方法的流程图;
图2是本发明一实施例提供的另一种分布式任务调度方法的流程图;
图3是本发明一实施例提供的一种分布式装置的结构示意图;
图4是本发明一实施例提供的一种Redis数据库的结构示意图;
图5是本发明一实施例提供的一种分布式任务调度系统的结构示意图;
图6是本发明一实施例提供的另一种分布式任务调度系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种分布式任务调度方法,应用于分布式装置,包括:
S0:预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令;
S1:针对每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2;
S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
S3:确定是否接收到所述Redis数据库根据所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;
S4:确定所述分布式锁是否失效,如果是,执行S5;
S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;
S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
本发明实施例提供了一种分布式任务调度方法,在应用于分布式装置的方法中,分布式装置在确定需要执行定时任务时,可以将定时任务对应的Setnx命令发送给外部的Redis数据库,以使与其他分布式装置竞争获取定时任务对应的分布式锁,当确定获取到分布式锁时,可以确定获取到定时任务的执行权,因此可以执行定时任务对应的业务逻辑,并在业务逻辑执行完毕时释放分布式锁,以完成业务调度,而当未获取到分布式锁时,可以监控未获取到的分布式锁是否过期,当确定未获取到的分布式锁过期时,说明获取到该分布式锁的分布式装置出现异常,因此可以获取对应的新锁,并完成定时任务的业务逻辑,以避免定时任务无法正常执行。
在本发明一实施例中,所述S4,包括:
按照预设的检测周期,向所述Redis数据库发送所述Setnx命令中的锁名,其中,所述锁名与所述分布式锁相对应;
确定是否接收到所述Redis数据库根据所述锁名返回的第一反馈值,其中,所述第一反馈值表征所述分布式锁失效;
如果是,调用所述Redis数据库的Getset命令;
根据所述Getset命令,执行所述S5。
在本发明实施例中,分布式装置在未获取到定时任务的执行权时,可以按照检测周期向Redis数据库发送未获取到的分布式锁对应的锁名,以使监控未获取到的分布式锁是否过期失效,当且仅当在未获取到的分布式锁失效时,调用外部的Redis数据库的Getset命令,以使获取对应的新锁,完成定时任务的业务逻辑,完成业务调度。
在本发明一实施例中,所述根据所述Getset命令,执行所述S5,包括:
确定是否接收到所述Redis数据库根据所述Getset命令返回的第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁;
如果是,将所述新锁作为分布式锁,S6;
否则,执行所述按照预设的检测周期,向所述Redis数据库发送所述分布式锁的锁名。
在本发明实施例中,通过调用外部的Redis数据库的Getset命令,以使外部的Redis数据库返回表征获取到新锁的第一获取结果,或着返回表征未获取到新锁的第二获取结果,通过确定是否接收到第一获取结果,可以确定是否获取到分布式锁对应的新锁,以使确定是否获取到定时任务的执行权,当获取到新锁时,则可以执行定时任务对应的业务逻辑,以完成业务调度,而当未获取到定时任务的执行权时,即未获取到新锁时,可以按照预设的检测周期,例如5s、30s、或者1min,以使监控未获取到的分布式锁是否过期失效。
为了避免定时任务被延迟执行,在本发明一实施例中,所述S1中的所述确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2,包括:
按照预设的执行周期,确定当前时间是否与所述定时任务对应的所述执行时间相同,如果是,执行S2。
在本发明实施例中,按照执行周期,例如10s、30s或1min,确定当前时间是否为定时任务对应的执行时间,可以对定时任务的执行时间进行监控,以避免错过定时任务的执行时间导致定时任务被延误。
在本发明一实施例中,当确定获取到所述分布式锁时,
在所述S6之前,进一步包括:
调用所述Redis数据库的Expire命令,并执行所述S6;
在所述业务逻辑执行完毕时,
在所述释放所述分布式锁之前,进一步包括:
确定所述分布式锁是否被所述Expire命令释放;
如果否,调用所述Redis数据库的Del命令,释放所述分布式锁。
在本发明实施例中,在获取到定时任务的执行权时,还需要调用外部的Redis数据库的Expire命令,以使通过Expire命令设置定时任务对应的过期超时时间,对定时任务的执行情况进行监控,当定时任务执行完毕时,可以确定获取到的分布式锁是否被Expire命令释放,如果分布式锁被释放则说明当前时间大于定时任务对应的过期超时时间,而当分布式锁未被释放时,说明当前时间不大于定时任务对应的过期超时时间,因此可以调用外部的Redis数据库的Del命令释放分布式锁,以完成定时任务的业务调度。
如图2所示,本发明实施例提供了一种分布式任务调度方法,应用于Redis数据库,包括:
D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
D2:确定所述分布式装置是否第一个发来所述Setnx命令,如果是,执行D3,否则,执行D4;
D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁,执行D5;
D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁,执行D5;
D5:确定所述分布式锁是否失效,如果是,执行D6,否则,执行D8;
D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;
D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;
D8:在所述分布式锁被释放时,删除所述分布式锁。
本发明实施例提供了一种分布式任务调度方法,在应用于Redis数据库的方法中,Redis数据库在接收到任一分布式装置发来的Setnx命令时,需要先确定该分布式装置是否为第一个发来Setnx命令的装置,如果是,则该分布式装置可以获取到定时任务的执行权,即获取到分布式锁,因此可以向该分布式装置返回表征获取到分布式锁的第一回执结果,以使其完成定时任务的业务逻辑,完成业务调度;而当该分布式装置未获取到分布式锁时,需要向其发送表征未获取到分布式锁的第二回执结果,以使其对未获取到的分布式锁的有效性进行监控;通过对分布式锁的有效性进行监控,可以确定获取到分布式锁的分布式装置是否出现异常,当且仅当在获取到分布式锁的分布式装置出现异常时,删除该分布式锁,并生成对应的新锁,以使其他分布式装置利用新锁完成定时任务的业务逻辑,以避免定时任务的无法正常执行。
在本发明一实施例中,在所述存储所述Setnx命令对应的分布式锁之后,在所述D5之前,进一步包括:
存储所述分布式锁对应的过期超时时间和锁名;
生成与所述过期超时时间和所述锁名相对应的Expire命令;
生成与所述锁名相对应的Del命令;
所述D5,包括:
确定所述Expire命令是否释放所述分布式锁,如果是,执行D6,否则,执行D8;
所述D8,包括:
在所述Del命令被调用时,删除所述分布式锁。
在本发明实施例中,通过存储Setnx命令对应的过期超时时间和锁名,以使生成对应的Expire命令及对应的Del命令,以使外部的分布式装置通过调用Expire命令对分布式锁的有效性进行监控,以使在分布式锁有效且定时任务执行完毕时,利用Del命令释放分布式锁,完成业务调度。
在本发明一实施例中,在所述D2之后,在所述确定所述Expire命令是否释放所述分布式锁之前,进一步包括:
在接收到所述分布式装置发来的所述锁名时,执行所述确定所述Expire命令是否释放所述分布式锁;
如果是,向所述分布式装置返回第一反馈值,并执行D6,其中,所述第一反馈值表征所述分布式锁失效;
否则,向所述分布式装置返回第二反馈值,并执行所述在所述Del命令被调用时,删除所述分布式锁,其中,所述第二反馈值表征所述分布式锁未失效。
在本发明实施例中,在接收到分布式装置发来的锁名时,说明该分布式装置向获取分布式锁,因此可以先确定已存在的分布式锁是否被Expire命令释放,即确定已存在的分布式锁是否失效过期,当且仅当在分布式锁被释放时,向分布式装置返回表征分布式锁失效的第一反馈值,以使分布式装置即时获取对应的新锁。
在本发明一实施例中,在所述D6之后,在所述D7之前,进一步包括:
T1:更新所述过期超时时间,生成与更新后的所述过期超时时间和所述锁名相对应的Getset命令;
T2:在所述Getset命令被所述分布式装置调用时,确定所述分布式装置是否第一调用所述Getset命令,如果是,执行T3,否则,执行T4;
T3:向所述分布式装置返回第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁,执行D7;
T4:向所述分布式装置返回第二获取结果,其中,所述第二获取结果表征未获取到所述新锁,返回T1。
在本发明实施例中,在生成新锁后,可以更新存储的过期超时时间,以使生成对应的Getset命令,例如,生成Getset(lockKey,currentTimeMillis+lockTime),以使分布式装置调用该Getset命令,获取新生成的新锁,以使利用新锁完成定时任务的业务逻辑。
如图3所示,本发明实施例提供了一种分布式装置,包括:
调度装置存储模块301,用于执行:预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令;
调度装置监控模块302,用于执行:S1:针对所述调度装置存储模块存储301的每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
调度装置执行模块303,用于执行:S3:确定是否接收到所述Redis数据库根据所述调度装置监控模块302发送的所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;S4:确定所述分布式锁是否失效,如果是,执行S5;S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
在本发明实施例中,调度装置监控模块在确定需要执行定时任务时,可以将调度装置存储模块存储的定时任务对应的Setnx命令发送给外部的Redis数据库,以使与其他分布式装置竞争获取定时任务对应的分布式锁,当调度装置执行模块确定获取到分布式锁时,可以确定获取到定时任务的执行权,因此可以执行定时任务对应的业务逻辑,并在业务逻辑执行完毕时释放分布式锁,以完成业务调度,而当未获取到分布式锁时,可以监控未获取到的分布式锁是否过期,当确定未获取到的分布式锁过期时,说明获取到该分布式锁的分布式装置出现异常,因此可以获取对应的新锁,并完成定时任务的业务逻辑,以避免定时任务无法正常执行。
在本发明一实施例中,所述调度装置执行模块,用于按照预设的检测周期,向所述Redis数据库发送所述Setnx命令中的锁名,其中,所述锁名与所述分布式锁相对应;确定是否接收到所述Redis数据库根据所述锁名返回的第一反馈值,其中,所述第一反馈值表征所述分布式锁失效;如果是,调用所述Redis数据库的Getset命令;根据所述Getset命令,执行所述S5。
在本发明一实施例中,所述调度装置执行模块,用于确定是否接收到所述Redis数据库根据所述Getset命令返回的第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁;如果是,将所述新锁作为分布式锁,S6;否则,执行所述按照预设的检测周期,向所述Redis数据库发送所述分布式锁的锁名。
在本发明一实施例中,所述调度装置监控模块,用于按照预设的执行周期,确定当前时间是否与所述定时任务对应的所述执行时间相同,如果是,执行S2。
在本发明一实施例中,调度装置执行模块,进一步用于调用所述Redis数据库的Expire命令,并执行所述S6;确定所述分布式锁是否被所述Expire命令释放;如果否,调用所述Redis数据库的Del命令,释放所述分布式锁。
如图4所示,本发明实施例提供了一种Redis数据库,包括:
数据库处理模块401,用于执行:D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
数据库监控模块402,用于执行:D2:确定所述分布式装置是否第一个发来所述数据库处理模块401存储的所述Setnx命令,如果是,执行D3,否则,执行D4;D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁;D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁;
数据库管理模块403,用于执行:D5:确定所述数据库处理模块401存储的所述分布式锁是否失效,如果是,执行D6,否则,执行D8;D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;D8:在所述分布式锁被释放时,删除所述分布式锁。
在本发明实施例中,数据库监控模块在数据库处理模块接收到任一分布式装置发来的Setnx命令时,需要先确定该分布式装置是否为第一个发来Setnx命令的装置,如果是,则该分布式装置可以获取到定时任务的执行权,即获取到分布式锁,因此可以向该分布式装置返回表征获取到分布式锁的第一回执结果,以使其完成定时任务的业务逻辑,完成业务调度;而当该分布式装置未获取到分布式锁时,需要向其发送表征未获取到分布式锁的第二回执结果,以使其对未获取到的分布式锁的有效性进行监控;通过数据库管理模块对分布式锁的有效性进行监控,可以确定获取到分布式锁的分布式装置是否出现异常,当且仅当在获取到分布式锁的分布式装置出现异常时,删除该分布式锁,并生成对应的新锁,以使其他分布式装置利用新锁完成定时任务的业务逻辑,以避免定时任务的无法正常执行。
在本发明一实施例中,所述数据库处理模块,进一步用于存储所述分布式锁对应的过期超时时间和锁名;
所述数据库管理模块,进一步用于生成与所述数据库存储模块存储的所述过期超时时间和所述锁名相对应的Expire命令;生成与所述锁名相对应的Del命令;确定所述Expire命令是否释放所述分布式锁,如果是,执行D6,否则,在所述Del命令被调用时,删除所述分布式锁。
在本发明一实施例中,所述数据库管理模块,进一步用于在接收到所述分布式装置发来的所述锁名时,执行所述确定所述Expire命令是否释放所述分布式锁;如果是,向所述分布式装置返回第一反馈值,并执行D6,其中,所述第一反馈值表征所述分布式锁失效;否则,向所述分布式装置返回第二反馈值,并执行所述在所述Del命令被调用时,删除所述分布式锁,其中,所述第二反馈值表征所述分布式锁未失效。
在本发明一实施例中,所述数据库管理模块,进一步用于执行:
T1:更新所述过期超时时间,生成与更新后的所述过期超时时间和所述锁名相对应的Getset命令;
T2:在所述Getset命令被所述分布式装置调用时,确定所述分布式装置是否第一调用所述Getset命令,如果是,执行T3,否则,执行T4;
T3:向所述分布式装置返回第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁,执行D7;
T4:向所述分布式装置返回第二获取结果,其中,所述第二获取结果表征未获取到所述新锁,返回T1。
如图5所示,本发明实施例提供了一种分布式任务调度系统,包括:至少两个图3所述的分布式装置501和图4所述的Redis数据库502。
在本发明实施例中,分布式装置在确定需要执行定时任务时,可以将定时任务对应的Setnx命令发送给Redis数据库,以使与其他分布式装置竞争获取定时任务对应的分布式锁,Redis数据库根据任务调度装置发来Setnx命令的顺序,确定分布式装置是否获取到对应的分布式锁,并返回对应的第一回执结果或第二回执结果,以使分布式装置确定是否获取到分布式锁;分布式装置当确定获取到分布式锁时,可以确定获取到定时任务的执行权,因此可以执行定时任务对应的业务逻辑,并在业务逻辑执行完毕时释放分布式锁,以使Redis数据库删除分布式锁,完成业务调度,而当分布式装置未获取到分布式锁时,可以监控未获取到的分布式锁是否过期,当确定未获取到的分布式锁过期时,说明获取到该分布式锁的分布式装置出现异常,因此可以从Redis数据库获取对应的新锁,并完成定时任务的业务逻辑,以避免定时任务无法正常执行。
综上可见,本发明实施例提供了一种分布式任务调度系统,让一个定时任务分配到多台分布式调度装置中并行执行,可以使得所有的定时任务能够被不重复、不遗漏的快速处理,并且能够保证部分分布式调度装置出现异常后,定时任务依然能正常执行,达到定时任务的分布式集群执行的高可用性,可以完全解决单点故障及任务重复执行的问题,保证分布式任务调度系统的稳定。
为了更加清楚的说明本发明的技术方案及优点,下面以定时任务X、分布式装置Z601和Redis数据库K602为例,对如何完成定时业务的业务调度进行详细说明,如图6所示,具体包括:
分布式装置Z601,用于预先存储定时任务X、定时任务X对应的执行时间和Setnx命令,按照预设的执行周期,确定当前时间是否与执行时间相同;如果是,将Setnx命令发送给Redis数据库K602。
具体地,在分布式装置Z601确定当前时间与定时任务X对应的执行时间相同时,可以向Redis数据库K602发送对应Setnx命令,例如,向Redis数据库K602发送Setnx(lockKey,currentTimeMillis+lockTime),以竞争定时任务X的执行权,其中,lockKey为分布式锁对应的锁名,currentTimeMillis为当前时间,lockTime为过期超时时间。
Redis数据库K602,用于在接收到分布式装置Z601发来的Setnx命令时,存储Setnx命令对应的分布式锁,存储分布式锁对应的过期超时时间和锁名;生成与过期超时时间和锁名相对应的Expire命令;生成与锁名相对应的Del命令;确定分布式装置Z601是否第一个发来Setnx命令,如果是,向分布式装置Z601返回第一回执结果,否则,向分布式装置Z601返回第二回执结果;其中,第一回执结果表征获取到分布式锁,第二回执结果表征未获取到分布式锁。
具体地,Redis数据库K602在接收到Setnx命令,Setnx命令中的锁名、锁名对应的分布式锁和过期超时时间,其中,分布式锁与过期超时时间和锁名一一对应;并生成Expire命令,例如Expire(lockKey,lockTime),以便于分布式装置Z601获取到分布式锁时调用,以监控分布式锁是否过期失效,并生成Del命令,例如Del(lockKey),以使Z获取到分布式锁在分布式锁未过期失效完成定时任务的业务逻辑时,调用Del(lockKey)释放分布式锁。通过确定分布式装置Z601是否为第一个发来Setnx命令,可以确定分布式装置Z601是否具有指定定时任务X的执行权,即是否能够获取到分布式锁,当且仅当在分布式装置Z601第一个发来Setnx命令时,向其返回表征获取到分布式锁的第一回执结果,以使分布式装置Z601完成定时任务X的业务逻辑。
分布式装置Z601,用于执行:
G1:确定是否接收到Redis数据库K602根据Setnx命令返回的第一回执结果,如果是,执行G7,否则,执行G2,其中,第一回执结果表征获取到Setnx命令对应的分布式锁;
具体地,分布式装置Z601在接收到Redis数据库K602根据Setnx命令返回的第一回执结果时,说明已获取到定时任务X的执行权,因此可以调用Redis数据库的Expire命令,以使通过Expire命令监控分布式锁是否过期失效。
G2:按照预设的检测周期,向Redis数据库K602发送Setnx命令中的锁名,其中,锁名与分布式锁相对应;
具体地,分布式装置Z601当未接收到Redis数据库返回的第一回执结果时,可以确定分布式锁已被其他分布式装置获取,因此可以按照检测周期,例如1min,向Redis数据库K602发送Setnx命令中的锁名,例如,向Redis数据库K602发送get(lockKey),以使利用锁名监控对应的分布式锁是否过期失效,以使在其他分布式装置宕机后,能够继续执行定时任务X,达到定时任务的分布式集群执行的高可用性,可以完全解决单点故障及任务重复执行的问题,保证系统稳定。
G3:确定是否接收到Redis数据库K602根据锁名返回的第一反馈值,其中,第一反馈值表征分布式锁失效;
具体地,分布式装置Z601在发送锁名后,可以确定是否接收到Redis数据库K602返回的表征分布式锁失效的第一反馈值,如果是,则说明获取到分布式锁的分布式装置出现异常,定时任务未被执行完毕,因此可以向Redis数据库申请获取新锁,即调用Redis数据库K602的Getset命令,以竞争定制任务的执行权。
G4:如果是,调用Redis数据库K602的Getset命令;
G5:确定是否接收到Redis数据库K602根据Getset命令返回的,表征获取到对应的新锁的第一获取结果,如果是,执行G6,否则,返回G2;
具体地,分布式装置Z601在调用Getset命令后,Redis数据库K602会返回对应的获取结果,例如,返回表征获取到新锁的第一获取结果或返回表征未获取到新锁的第二获取结果,分布式装置Z601通过确定是否接收到第一获取结果,即可确定是否获取到新锁,以确定是否获取到定时任务的执行权。
G6:将新锁作为分布式锁,执行G7;
G7:调用Redis数据库K602的Expire命令,执行定时业务X对应的业务逻辑;
具体地,分布式装置Z601在获取到新锁时,可以调用Redis数据库K602的Expire命令,以通过Expire命令对定时任务的执行情况进行监控。
举例来说,分布式装置Z601调用Redis数据库K602的Expire(lockKey,lockTime)命令。
G8:在业务逻辑执行完毕时,确定分布式锁是否被Expire命令释放;
具体地,分布式装置Z601在执行完定时任务X的业务逻辑时,需要先确定分布式锁是否已被Expire命令释放,以确定当前时间是否大于Expire命令中的超时过期时间,进而确定分布式锁是否过期失效,当且仅当在分布式锁未被Expire命令释放时,调用Del命令释放分布式锁,以使Redis数据库删除存储的分布式锁,完成定时任务X的业务调度。
G9:如果否,调用Redis数据库K602的Del命令,释放分布式锁。
Redis数据库K602,用于执行:
K1:在接收到分布式装置Z601发来的锁名时,确定Expire命令是否释放分布式锁,如果是,执行K2,否则,执行K8;
具体地,Redis数据库K602在接收到发来的存储的锁名时,例如,Redis数据库K602在接收到get(lockKye)时,可以先确定Expire命令是否释放分布式锁,以使确定分布式锁是否过期失效,即确定获取到分布式锁的分布式装置是否出现异常,当分布式锁未被释放时,可以向分布式装置Z601返回表征分布式锁未失效的第二反馈值,以使分布式装置Z601继续对已存在的分布式锁进行监控。而当分布式锁被释放时,可以确定获取到分布式锁的分布式装置出现异常,因此可以向分布式装置Z601返回,表征分布式锁失效的第一反馈值,以使分布式装置Z601竞争分布式锁对应的新锁。
K2:向分布式装置Z601返回第一反馈值,其中,第一反馈值表征分布式锁失效;删除分布式锁,生成并存储分布式锁对应的新锁,执行K3;
具体地,在确定分布式锁过期失效时,需要删除分布式锁,并生成对应的新锁,以使利用新锁完成定时任务X的业务调度。
K3:更新过期超时时间,生成与更新后的过期超时时间和锁名相对应的Getset命令,执行K4;
具体地,在生成新锁后,需要设置新锁对应的过期超时时间,即更新存储的过期超时时间,生成Getset(lockKey,currenTimeMillis+lockTime)命令,以使确定第一个调用Getset命令的分布式装置,可以获得新锁,即获得定时任务X的执行权。
K4:在Getset命令被分布式装置Z601调用时,确定分布式装置Z601是否第一调用Getset命令,如果是,执行K5,否则,执行K6;
K5:向分布式装置Z601返回第一获取结果,其中,第一获取结果表征获取到分布式锁对应的新锁,执行K7;
K6:向分布式装置Z601返回第二获取结果,其中,第二获取结果表征未获取到新锁,返回T1;
具体地,Redis数据库K602当确定分布式装置Z601不是第一个调用Getset命令时,需要向分布式装置Z601返回,表征未获取到新锁的第二获取结果,以使分布式装置Z601继续对新锁的有效性进行监控,以使在新锁过期失效时,竞争定时任务X的执行权。
K7:在新锁被获取时,将新锁作为分布式锁,返回K1;
K8:向分布式装置Z601返回第二反馈值,在Del命令被调用时,删除分布式锁,其中,第二反馈值表征分布式锁未失效。
图6中还示出了分布式装置B和分布式装置C,分布式装置B603和分布式装置C604执行与分布式装置Z601相同的操作,Redis数据库K执行分布式装置B和分布式装置C的操作,与执行分布式装置Z601的操作相同。
本发明各个实施例至少具有如下有益效果:
1、本发明实施例提供了一种分布式任务调度方法,在应用于分布式装置的方法中,分布式装置在确定需要执行定时任务时,可以将定时任务对应的Setnx命令发送给外部的Redis数据库,以使与其他分布式装置竞争获取定时任务对应的分布式锁,当确定获取到分布式锁时,可以确定获取到定时任务的执行权,因此可以执行定时任务对应的业务逻辑,并在业务逻辑执行完毕时释放分布式锁,以完成业务调度,而当未获取到分布式锁时,可以监控未获取到的分布式锁是否过期,当确定未获取到的分布式锁过期时,说明获取到该分布式锁的分布式装置出现异常,因此可以获取对应的新锁,并完成定时任务的业务逻辑,以避免定时任务无法正常执行。
2、在本发明一实施例中,分布式装置在未获取到定时任务的执行权时,可以按照检测周期向Redis数据库发送未获取到的分布式锁对应的锁名,以使监控未获取到的分布式锁是否过期失效,当且仅当在未获取到的分布式锁失效时,调用外部的Redis数据库的Getset命令,以使获取对应的新锁,完成定时任务的业务逻辑,完成业务调度。
3、在本发明一实施例中,按照执行周期确定当前时间是否为定时任务对应的执行时间,可以对定时任务的执行时间进行监控,以避免错过定时任务的执行时间,导致定时任务被延误。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种分布式任务调度方法,其特征在于,应用于分布式装置,预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令,还包括:
S1:针对每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2;
S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
S3:确定是否接收到所述Redis数据库根据所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;
S4:确定所述分布式锁是否失效,如果是,执行S5;
S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;
S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
2.根据权利要求1所述的分布式任务调度方法,其特征在于,
所述S4,包括:
按照预设的检测周期,向所述Redis数据库发送所述Setnx命令中的锁名,其中,所述锁名与所述分布式锁相对应;
确定是否接收到所述Redis数据库根据所述锁名返回的第一反馈值,其中,所述第一反馈值表征所述分布式锁失效;
如果是,调用所述Redis数据库的Getset命令;
根据所述Getset命令,执行所述S5。
3.根据权利要求2所述的分布式任务调度方法,其特征在于,
所述根据所述Getset命令,执行所述S5,包括:
确定是否接收到所述Redis数据库根据所述Getset命令返回的第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁;
如果是,将所述新锁作为分布式锁,S6;
否则,执行所述按照预设的检测周期,向所述Redis数据库发送所述分布式锁的锁名。
4.根据权利要求1至3中任一所述的分布式任务调度方法,其特征在于,
所述S1中的所述确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,执行S2,包括:
按照预设的执行周期,确定当前时间是否与所述定时任务对应的所述执行时间相同,如果是,执行S2;
和/或,
当确定获取到所述分布式锁时,
在所述S6之前,进一步包括:
调用所述Redis数据库的Expire命令,并执行所述S6;
在所述业务逻辑执行完毕时,
在所述释放所述分布式锁之前,进一步包括:
确定所述分布式锁是否被所述Expire命令释放;
如果否,调用所述Redis数据库的Del命令,释放所述分布式锁。
5.一种分布式任务调度方法,其特征在于,应用于Redis数据库,包括:
D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
D2:确定所述分布式装置是否第一个发来所述Setnx命令,如果是,执行D3,否则,执行D4;
D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁,执行D5;
D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁,执行D5;
D5:确定所述分布式锁是否失效,如果是,执行D6,否则,执行D8;
D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;
D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;
D8:在所述分布式锁被释放时,删除所述分布式锁。
6.根据权利要求5所述的分布式任务调度方法,其特征在于,
在所述存储所述Setnx命令对应的分布式锁之后,在所述D5之前,进一步包括:
存储所述分布式锁对应的过期超时时间和锁名;
生成与所述过期超时时间和所述锁名相对应的Expire命令;
生成与所述锁名相对应的Del命令;
所述D5,包括:
确定所述Expire命令是否释放所述分布式锁,如果是,执行D6,否则,执行D8;
所述D8,包括:
在所述Del命令被调用时,删除所述分布式锁。
7.根据权利要求6所述的分布式任务调度方法,其特征在于,
在所述D2之后,在所述确定所述Expire命令是否释放所述分布式锁之前,进一步包括:
在接收到所述分布式装置发来的所述锁名时,执行所述确定所述Expire命令是否释放所述分布式锁;
如果是,向所述分布式装置返回第一反馈值,并执行D6,其中,所述第一反馈值表征所述分布式锁失效;
否则,向所述分布式装置返回第二反馈值,并执行所述在所述Del命令被调用时,删除所述分布式锁,其中,所述第二反馈值表征所述分布式锁未失效;
和/或,
在所述D6之后,在所述D7之前,进一步包括:
T1:更新所述过期超时时间,生成与更新后的所述过期超时时间和所述锁名相对应的Getset命令;
T2:在所述Getset命令被所述分布式装置调用时,确定所述分布式装置是否第一调用所述Getset命令,如果是,执行T3,否则,执行T4;
T3:向所述分布式装置返回第一获取结果,其中,所述第一获取结果表征获取到所述分布式锁对应的新锁,执行D7;
T4:向所述分布式装置返回第二获取结果,其中,所述第二获取结果表征未获取到所述新锁,返回T1。
8.一种分布式装置,其特征在于,包括:
调度装置存储模块,用于执行:预先存储预设的至少一个定时任务、每一个所述定时任务对应的执行时间和Setnx命令;
调度装置监控模块,用于执行:S1:针对所述调度装置存储模块存储的每一个所述定时任务,确定当前时间是否与所述定时任务对应的所述执行时间相对应,如果是,S2:将所述定时任务对应的所述Setnx命令发送给外部的Redis数据库;
调度装置执行模块,用于执行:S3:确定是否接收到所述Redis数据库根据所述调度装置监控模块发送的所述Setnx命令返回的第一回执结果,如果是,执行S6,否则,执行S4,其中,所述第一回执结果表征获取到所述Setnx命令对应的分布式锁;S4:确定所述分布式锁是否失效,如果是,执行S5;S5:从所述Redis数据库获取所述分布式锁对应的新锁,并将所述新锁作为分布式锁,执行S6;S6:执行所述定时业务对应的业务逻辑,并在所述业务逻辑执行完毕时,释放所述分布式锁。
9.一种Redis数据库,其特征在于,包括:
数据库处理模块,用于执行:D1:针对每一个所述分布式装置,接收分布式装置发来的Setnx命令,存储所述Setnx命令对应的分布式锁;
数据库监控模块,用于执行:D2:确定所述分布式装置是否第一个发来所述数据库处理模块存储的所述Setnx命令,如果是,执行D3,否则,执行D4;D3:向所述分布式装置返回第一回执结果,其中,所述第一回执结果表征获取到所述分布式锁;D4:向所述分布式装置返回第二回执结果,其中,所述第二回执结果表征未获取到所述分布式锁;
数据库管理模块,用于执行:D5:确定所述数据库处理模块存储的所述分布式锁是否失效,如果是,执行D6,否则,执行D8;D6:删除所述分布式锁,生成并存储所述分布式锁对应的新锁,执行D7;D7:在所述新锁被获取时,将所述新锁作为分布式锁,返回D5;D8:在所述分布式锁被释放时,删除所述分布式锁。
10.一种分布式任务调度系统,其特征在于,包括:至少两个权利要求8所述的分布式装置和权利要求9所述的Redis数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910006826.1A CN109857527A (zh) | 2019-01-04 | 2019-01-04 | 一种分布式任务调度方法、系统、分布式装置和Redis数据库 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910006826.1A CN109857527A (zh) | 2019-01-04 | 2019-01-04 | 一种分布式任务调度方法、系统、分布式装置和Redis数据库 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109857527A true CN109857527A (zh) | 2019-06-07 |
Family
ID=66893951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910006826.1A Withdrawn CN109857527A (zh) | 2019-01-04 | 2019-01-04 | 一种分布式任务调度方法、系统、分布式装置和Redis数据库 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857527A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413388A (zh) * | 2019-07-05 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 基于业务系统的多任务处理方法、装置、设备及存储介质 |
CN111026807A (zh) * | 2019-11-25 | 2020-04-17 | 深圳壹账通智能科技有限公司 | 分布式锁的同步方法、装置、计算机设备及可读存储介质 |
CN111177164A (zh) * | 2019-12-17 | 2020-05-19 | 陕西天行健车联网信息技术有限公司 | 一种基于定时任务框架的车辆实时信息调度方法 |
CN111737020A (zh) * | 2020-06-24 | 2020-10-02 | 广联达科技股份有限公司 | 分布式集群的并发处理方法及装置 |
CN111813509A (zh) * | 2020-06-09 | 2020-10-23 | 四川虹美智能科技有限公司 | 分布式集群管理方法、装置、存储介质和计算可读介质 |
CN112035235A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安人寿保险股份有限公司 | 任务调度方法、系统、设备及存储介质 |
CN112256443A (zh) * | 2020-10-14 | 2021-01-22 | 杭州当虹科技股份有限公司 | 一种基于redis的动态集群锁系统 |
CN112954008A (zh) * | 2021-01-26 | 2021-06-11 | 网宿科技股份有限公司 | 一种分布式任务处理方法、装置、电子设备及存储介质 |
CN113032131A (zh) * | 2021-05-26 | 2021-06-25 | 天津中新智冠信息技术有限公司 | 基于Redis的分布式定时调度系统和方法 |
CN113282580A (zh) * | 2021-04-28 | 2021-08-20 | 青岛海尔科技有限公司 | 用于执行定时任务的方法、存储介质及服务器 |
CN113961330A (zh) * | 2021-11-04 | 2022-01-21 | 京东科技信息技术有限公司 | 分布式定时任务执行方法、装置、设备和计算机可读介质 |
CN115061821A (zh) * | 2022-06-29 | 2022-09-16 | 苏州浪潮智能科技有限公司 | 一种执行命令的方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700943A (zh) * | 2015-12-31 | 2016-06-22 | 上海百事通信息技术股份有限公司 | 分布式任务调度方法及系统 |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
CN107832159A (zh) * | 2017-11-10 | 2018-03-23 | 郑州云海信息技术有限公司 | 管理分布式锁的方法和计算机可读存储介质 |
US20180232259A1 (en) * | 2017-02-15 | 2018-08-16 | Ca, Inc. | Distributed processing of mixed serial and concurrent workloads |
-
2019
- 2019-01-04 CN CN201910006826.1A patent/CN109857527A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700943A (zh) * | 2015-12-31 | 2016-06-22 | 上海百事通信息技术股份有限公司 | 分布式任务调度方法及系统 |
CN107818018A (zh) * | 2016-09-14 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 分布式锁的控制方法和装置 |
US20180232259A1 (en) * | 2017-02-15 | 2018-08-16 | Ca, Inc. | Distributed processing of mixed serial and concurrent workloads |
CN107832159A (zh) * | 2017-11-10 | 2018-03-23 | 郑州云海信息技术有限公司 | 管理分布式锁的方法和计算机可读存储介质 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413388A (zh) * | 2019-07-05 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 基于业务系统的多任务处理方法、装置、设备及存储介质 |
CN111026807A (zh) * | 2019-11-25 | 2020-04-17 | 深圳壹账通智能科技有限公司 | 分布式锁的同步方法、装置、计算机设备及可读存储介质 |
CN111177164A (zh) * | 2019-12-17 | 2020-05-19 | 陕西天行健车联网信息技术有限公司 | 一种基于定时任务框架的车辆实时信息调度方法 |
CN111177164B (zh) * | 2019-12-17 | 2023-08-01 | 陕西天行健车联网信息技术有限公司 | 一种基于定时任务框架的车辆实时信息调度方法 |
CN111813509A (zh) * | 2020-06-09 | 2020-10-23 | 四川虹美智能科技有限公司 | 分布式集群管理方法、装置、存储介质和计算可读介质 |
CN111737020A (zh) * | 2020-06-24 | 2020-10-02 | 广联达科技股份有限公司 | 分布式集群的并发处理方法及装置 |
CN112035235A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安人寿保险股份有限公司 | 任务调度方法、系统、设备及存储介质 |
CN112256443A (zh) * | 2020-10-14 | 2021-01-22 | 杭州当虹科技股份有限公司 | 一种基于redis的动态集群锁系统 |
CN112256443B (zh) * | 2020-10-14 | 2024-02-06 | 杭州当虹科技股份有限公司 | 一种基于redis的动态集群锁系统 |
CN112954008B (zh) * | 2021-01-26 | 2022-11-04 | 网宿科技股份有限公司 | 一种分布式任务处理方法、装置、电子设备及存储介质 |
CN112954008A (zh) * | 2021-01-26 | 2021-06-11 | 网宿科技股份有限公司 | 一种分布式任务处理方法、装置、电子设备及存储介质 |
CN113282580A (zh) * | 2021-04-28 | 2021-08-20 | 青岛海尔科技有限公司 | 用于执行定时任务的方法、存储介质及服务器 |
CN113032131A (zh) * | 2021-05-26 | 2021-06-25 | 天津中新智冠信息技术有限公司 | 基于Redis的分布式定时调度系统和方法 |
CN113961330A (zh) * | 2021-11-04 | 2022-01-21 | 京东科技信息技术有限公司 | 分布式定时任务执行方法、装置、设备和计算机可读介质 |
CN115061821A (zh) * | 2022-06-29 | 2022-09-16 | 苏州浪潮智能科技有限公司 | 一种执行命令的方法、装置、设备及介质 |
CN115061821B (zh) * | 2022-06-29 | 2024-10-18 | 苏州浪潮智能科技有限公司 | 一种执行命令的方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857527A (zh) | 一种分布式任务调度方法、系统、分布式装置和Redis数据库 | |
CN105100259B (zh) | 一种分布式定时任务执行方法和系统 | |
CN106406993B (zh) | 一种定时任务管理方法和系统 | |
CN104601696B (zh) | 服务处理方法、服务调用系统、装置和系统 | |
CN111708627B (zh) | 基于分布式调度框架的任务调度方法以及装置 | |
US7805482B2 (en) | Method of correlating events in data packet streams | |
CN108563502B (zh) | 一种任务调度方法和装置 | |
CN109582466A (zh) | 一种定时任务执行方法、分布式服务器集群及电子设备 | |
US11119911B2 (en) | Garbage collection method and device | |
CN108287756A (zh) | 一种处理任务的方法及装置 | |
CN105260203B (zh) | 一种基于模型的Hadoop部署以及配置方法 | |
CN110019138B (zh) | 一种基于Zabbix的传输表空间自动迁移方法和系统 | |
CN109992624A (zh) | 一种区块链Block chain的同步存储方法、装置及计算机设备 | |
CN105989163A (zh) | 数据实时处理方法及系统 | |
CN107203429A (zh) | 一种基于分布式锁加载分布式任务的方法以及装置 | |
CN108345617A (zh) | 一种数据同步方法、装置以及电子设备 | |
CN112905339A (zh) | 任务调度执行方法、装置及系统 | |
CN110597695A (zh) | 报警方法、装置、计算机设备和可读存储介质 | |
CN115525406A (zh) | 一种分布式异步任务调度系统 | |
CN109976883A (zh) | 一种任务的处理方法及其系统 | |
CN110225077A (zh) | 变更供应数据的同步方法、装置、计算机设备及计算机存储介质 | |
CN109389363A (zh) | 一种基于作业调度的电话查岗方法及装置 | |
CN112449061B (zh) | 外呼任务分配方法、装置、计算机设备及可读存储介质 | |
CN112905386A (zh) | 一种基于生命周期的表数据备份清理方法及装置 | |
CN112783892A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190607 |