[发明专利]一种分布式任务调度方法、系统、分布式装置和Redis数据库在审
申请号: | 201910006826.1 | 申请日: | 2019-01-04 |
公开(公告)号: | CN109857527A | 公开(公告)日: | 2019-06-07 |
发明(设计)人: | 廖宸宇 | 申请(专利权)人: | 四川虹美智能科技有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/52;G06F16/27 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 李世喆 |
地址: | 621050 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式锁 数据库 分布式装置 任务调度 新锁 定时业务 业务逻辑 回执 存储 释放 返回 应用 | ||
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:在所述分布式锁被释放时,删除所述分布式锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川虹美智能科技有限公司,未经四川虹美智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910006826.1/1.html,转载请声明来源钻瓜专利网。