处理定时任务的方法、系统、电子设备和计算机可读介质技术方案

技术编号:19542858 阅读:26 留言:0更新日期:2018-11-24 20:27
本发明专利技术提供一种处理定时任务的方法、系统、电子设备和计算机可读介质,其不需要扫描MySQL表中的每条数据,而是利用Redis数据库的包括key、score、value的Zset优先级队列来实现对定时任务的处理,每次只需要扫描队列的第一个位置的数据。而且将Server端和Worker端分离,使它们异步执行,从而提高了定时任务处理的可靠性、成功率和伸缩性。该方法包括:工程worker按照预设频率扫描已添加到Redis的优先级队列中的定时任务,将符合预设执行条件的定时任务通过消息队列发送至服务器,以供服务器执行所述定时任务。

Methods, Systems, Electronic Equipment and Computer Readable Media for Timing Tasks

The invention provides a method, system, electronic equipment and computer readable medium for processing timing tasks, which does not need to scan every data in MySQL table, but uses Zset priority queue of key, score and value in Redis database to realize the processing of timing tasks, and only needs to scan the first queue at a time. Location data. Moreover, the server end and the Worker end are separated to make them execute asynchronously, which improves the reliability, success rate and scalability of the timing task processing. The method includes: the project worker scans the timed tasks added to Redis's priority queue according to the preset frequency, and sends the timed tasks that meet the preset execution conditions to the server through the message queue for the server to perform the timed tasks.

【技术实现步骤摘要】
处理定时任务的方法、系统、电子设备和计算机可读介质
本专利技术涉及计算机领域,具体地涉及处理定时任务的方法、系统、电子设备和计算机可读介质。
技术介绍
在现有技术中,处理定时任务通过定时地扫描MySQL表来进行,在该方法中,需要扫描出MySQL表中的每条数据,判断时间戳,所以该方法的效率非常低;而且通过定时worker不断查询数据库,对MySQL的压力也大,可用性不高;此外,现有技术中,Server端和Worker端同步执行,这对处理定时任务的效率来说也存在不利的影响。
技术实现思路
有鉴于此,本专利技术实施例提供一种处理定时任务的方法、系统、电子设备和计算机可读介质,其不需要扫描MySQL表中的每条数据,而是利用Redis数据库的包括key、score、value的Zset优先级队列来实现对定时任务的处理,每次只需要扫描队列的第一个位置的数据。而且将Server端(服务器端)和Worker端分离,使它们异步执行,从而提高了定时任务处理的可靠性、成功率和伸缩性。根据本专利技术实施例的一个方面,提供一种基于优先级队列处理定时任务的方法。本专利技术实施例的一种处理定时任务的方法包括:工程wo本文档来自技高网...

【技术保护点】
1.一种处理定时任务的方法,其特征在于,包括:工程worker按照预设频率扫描已添加到Redis的优先级队列中的定时任务,将符合预设执行条件的定时任务通过消息队列发送至服务器,以供服务器执行所述定时任务。

【技术特征摘要】
1.一种处理定时任务的方法,其特征在于,包括:工程worker按照预设频率扫描已添加到Redis的优先级队列中的定时任务,将符合预设执行条件的定时任务通过消息队列发送至服务器,以供服务器执行所述定时任务。2.根据权利要求1所述的方法,其特征在于,所述优先级队列为基于Redis的Zset有序集合,定时任务以key、value以及score的形式、依据score排序有序地存储在所述优先级队列中,其中,以定时任务队列类型作为key、以定时任务的具体内容作为value,以定时任务的时间戳作为score。3.根据权利要求1所述的方法,其特征在于,将符合预设执行条件的定时任务通过消息队列发送至服务器包括:扫描所述优先级队列,判断位于队列首位的定时任务的时间戳是否已早于当前时间,若早于,则将所述优先级队列中所有早于当前时间的定时任务通过消息队列发送至服务器,否则不予发送。4.根据权利要求1所述的方法,其特征在于,在将符合预设执行条件的定时任务通过消息队列发送至服务器之后,所述方法还包括:将所述优先级队列中已通过消息队列发送至服务器的符合预设执行条件的定时任务进行删除。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述已添加到Redis的优先级队列中的定时任务,在添加到所述优先级队列中的同时,一并存入MySQL中。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述已添加到Redis的优先级队列中的定时任务,在添加到所述优先级队列中的同时,一并在Redis中为各定时任务设置预设重试阈值,以便当所述定时任务重试处理的次数超过预设重试阈值之后,将所述定时任务从优先级队列中永久删除。7.根据权利要求1所述的方法,其特征在于,所述方法中,服务器分布式、负载均衡地执行所述定时任务。8.一种处理定时任务的方法,其特征在于,包括:服务器接收工程worker通过消息队列发送来的符合预设执行条件的定时任务,其中,所述定时任务利用基于Redis的优先级队列进行存储;执行所述定时任务。9.根据权利要求8所述的方法,其特征在于,所述优先级队列为基于Redis的Zset有序集合,定时任务以key、value以及score的形式、依据score排序有序地存储在所述优先级队列中,其中,以定时任务队列类型作为key、以定时任务的具体内容作为value,以定时任务的时间戳作为score。10.根据权利要求8所述的方法,其特征在于,工程worker通过消息队列发送来的符合预设执行条件的定...

【专利技术属性】
技术研发人员:唐德荣
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1