[发明专利]一种基于非关系型数据库的控制定时器执行的方法有效
申请号: | 201510917191.2 | 申请日: | 2015-12-10 |
公开(公告)号: | CN105573841B | 公开(公告)日: | 2019-06-04 |
发明(设计)人: | 马顺风 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 宋焰琴 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 关系 数据库 控制 定时器 执行 方法 | ||
本发明提供了一种基于非关系型数据库的控制定时器执行的方法,首先建立一个非关系型数据库,然后为各定时器配置标识符,当各定时器接收到执行指令时,判断所述非关系型数据库中是否已经存在该定时器的标识符,若存在,则令该定时器不执行;否则,将该定时器的标识符写入所述非关系型数据库,并令该定时器执行。本发明在避免定时器单点的同时,能防止多个定时器在某一时间段内同时执行,节省了资源,在数据库异常时进行了相应的配置,使得定时器不会因为数据库失效而无法运行。
技术领域
本发明涉及计算机软件领域,尤其涉及一种基于非关系型数据库的控制定时器执行的方法。
背景技术
目前大多数系统都会用到定时器(worker),定时器的作用是在设定的时间间隔到期时自动触发应用实例,以执行一些业务操作。在大型的java系统(例如购物网站)中,通常会设有多个服务器,每个服务器均包括多个应用实例,并且每个服务器包括应用实例相同,每个应用实例对应一个定时器,例如,若设有10台服务器,每台服务器均包括100个应用实例,针对其中一个应用实例A,由于其在10台服务器中均存在,那么就对应设有10个相同的定时器,如果10个相同的定时器都执行,那相对应的应用实例A会在10台服务器上都运行,进行相同的业务操作,这无疑造成了资源的浪费。
现有技术是采用spring通过依赖数据库来防止多定时器同时执行,因为要依赖数据库,所以就涉及到建表等繁琐操作,并且不能给出数据库挂掉后定时器如何工作的解决方案。
另外一种是将所有的定时器均设于一台服务器中,专门用于触发其他服务器中的应用实例,此方案的缺点是会造成定时器单点,即一旦定时器所处的服务器出现异常导致定时器无法执行,其他服务器中的应用实例也均无法运行。
发明内容
(一)要解决的技术问题
本发明的目的在于,提供一种基于非关系型数据库的控制定时器执行的方法,可以防止多个定时器同时执行,同时解决定时器单点的问题。
(二)技术方案
本发明提供一种基于非关系型数据库的控制定时器执行的方法,包括:
S1,建立一个非关系型数据库;
S2,为各定时器配置标识符,其中,相同的定时器所配置的标识符相同,相同的定时器是指用于触发同一应用实例的定时器;
S3,当各定时器接收到执行指令时,判断非关系型数据库中是否已经存在该定时器的标识符,若存在,则令该定时器不执行;否则,将该定时器的标识符写入非关系型数据库,并令该定时器执行。
(三)有益效果
本发明通过为定时器配置标识符,并通过标识符在非关系型数据库进行判定,以获取定时器的“执行权限”,并在数据库中设置标识符的删除时间,避免定时器单点,并能防止多个定时器在某一时间段内同时执行,节省了资源;另外,本发明在数据库异常时进行了相应的配置,使得定时器不会因为数据库失效而无法运行。
附图说明
图1是本发明实施例提供的基于redis数据库的控制定时器执行的方法的流程图。
图2是本发明实施例提供的定时器与redis数据库的结构示意图。
图3是本发明实施例提供的redis数据库中主从节点的示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510917191.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于应用偏好度的消息接收方法
- 下一篇:一种音频播放应用的操作方法及装置