定时任务处理方法、装置、计算机设备和可读存储介质制造方法及图纸

技术编号:38910040 阅读:30 留言:0更新日期:2023-09-25 09:27
本申请提供了一种定时任务处理方法、装置、计算机设备和可读存储介质,涉及数据处理及数字医疗技术领域。该方法包括:启动多级时间轮,确定时间轮的时间槽位对应的定时任务;其中多级时间轮包括至少两个时间轮,每个时间轮上包括多个时间槽位,前一级时间轮的一圈对应于后一级时间轮的一个时间槽位;将定时任务提交至业务线程池,以使业务线程池将定时任务分发至执行器执行。本申请采用多级时间轮进行定时任务的处理,将不同延时时间的任务加载到了不同级别的时间轮上,每一级时间轮的时间槽位较少,节省了空间,并且多级时间轮中只需要低级时间轮频繁转动,而高级时间轮转动频率低,从而不会存在大量空转,避免浪费cpu资源,提高了处理效率。提高了处理效率。提高了处理效率。

【技术实现步骤摘要】
定时任务处理方法、装置、计算机设备和可读存储介质


[0001]本申请涉及数据处理及数字医疗
,尤其是涉及到一种定时任务处理方法、装置、计算机设备和可读存储介质。

技术介绍

[0002]在数字医疗或金融科技等业务开发过程中,需要在某个时间段之后触发某个事件,例如,用户取消订单24小时内若商家未同意则自动退款、优惠券的有效期提醒等。通常应用以下方案进行处理:
[0003](1)轮询的方式:以固定时间间隔扫描全量数据,并执行即将超时的定时任务;(2)消息队列的方式:例如rocket mq的延迟消息,将定时任务需要延迟的时间作为mq发送者的延迟时间,延迟时间到期时,执行定时任务。但是,上述方案存在以下几个问题:(1)轮询时间无法确定,定时任务很难精确卡到延迟时间点,消息队列只有固定的一些延迟时间,也无法精确卡到定时任务的延迟时间点;(2)轮询峰值时,会对数据库造成很大压力。
[0004]为此,相关技术中设置单级时间轮存储定时任务,如图1所示,能够实现定时任务的处理,从而避免上述问题。但是,单级时间轮,时间刻度太多会导致存储空间迅速膨胀,浪费存储空间,并且时间刻度太多会导致指针移动的绝大多数都没有任务可以执行,效率低下。

技术实现思路

[0005]有鉴于此,本申请提供了一种定时任务处理方法、装置、计算机设备和可读存储介质,实现了将不同延时时间的任务加载到了不同级别的时间轮上,节省了空间,避免了不必要的空转,提高了处理效率。
[0006]第一方面,本申请实施例提供了一种定时任务处理方法,其特征在于,包括:
[0007]启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务;其中,多级时间轮包括至少两个所述时间轮,每个所述时间轮上包括多个时间槽位,前一级时间轮的一圈对应于后一级时间轮的一个时间槽位;
[0008]将所述定时任务提交至业务线程池,以使所述业务线程池将所述定时任务分发至执行器执行。
[0009]根据本申请实施例的上述定时任务处理方法,还可以具有以下附加技术特征:
[0010]在上述技术方案中,可选地,在所述启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务之前,还包括:
[0011]获取时间轮参数,并根据所述时间轮参数设置多级时间轮;
[0012]获取任务参数,根据所述任务参数设置定时任务,并设置每个所述时间轮对应的用于存储定时任务的第一搜索引擎单元;
[0013]为所述时间轮添加所述定时任务以及所述定时任务对应的搜索标识;
[0014]其中,所述第一搜索引擎单元中存储有多个任务集合,每个所述任务集合包括至
少一个所述定时任务,每个所述任务集合具有一个所述搜索标识,所述搜索标识包括时间轮ID和时间槽位ID,所述搜索标识用于指示时间轮的时间槽位。
[0015]在上述任一技术方案中,可选地,所述时间轮参数包括以下至少一项:时间轮数量、每个所述时间轮的启动等级、每个所述时间轮的时间槽位数量、时间槽位对应的时间间隔、执行定时任务的业务线程池。
[0016]在上述任一技术方案中,可选地,所述为所述时间轮添加所述定时任务,包括:
[0017]将所述定时任务的延迟时间与前一级时间轮的时间上限进行比较;
[0018]若所述延迟时间未超过所述前一级时间轮的时间上限,则将所述定时任务添加到所述前一级时间轮;
[0019]若所述延迟时间超过所述前一级时间轮的时间上限,则将所述定时任务添加到后一级时间轮中。
[0020]在上述任一技术方案中,可选地,针对任一所述时间轮,所述启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务,包括:
[0021]启动所述时间轮,以使所述时间轮的指针开始转动;
[0022]在所述时间轮的指针转动的过程中,确定所述指针所指向的时间槽位;
[0023]若所述时间槽位对应有定时任务,则确定与所述时间轮的时间轮ID、所述时间槽位的时间槽位ID相同的目标搜索标识,并在所述第一搜索引擎单元中获取所述目标搜索标识对应的任务集合中的定时任务。
[0024]在上述任一技术方案中,可选地,该方法还包括:
[0025]设置第二搜索引擎单元,所述第二搜索引擎单元用于存储每个所述时间轮当前的状态;
[0026]其中,所述时间轮的状态包括以下至少一项:时间轮ID、时间槽位数量、时间槽位对应的时间间隔、指针已经经过的时间槽位、指针指向。
[0027]在上述任一技术方案中,可选地,在所述将所述定时任务提交至业务线程池之后,还包括:
[0028]在所述第一搜索引擎单元中将所述定时任务删除。
[0029]第二方面,本申请实施例提供了一种定时任务处理装置,包括:
[0030]时间轮启动模块,用于启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务;其中,多级时间轮包括至少两个所述时间轮,每个所述时间轮上包括多个时间槽位,前一级时间轮的一圈对应于后一级时间轮的一个时间槽位;
[0031]任务提交模块,用于将所述定时任务提交至业务线程池,以使所述业务线程池将所述定时任务分发至执行器执行。
[0032]第三方面,本申请实施例提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
[0033]第四方面,本申请实施例提供了一种可读存储介质,该可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
[0034]第五方面,本申请实施例提供了一种芯片,该芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如第一方面的方法。
[0035]第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面的方法。
[0036]在本申请实施例中,采用多级时间轮进行定时任务的处理,多级时间轮将不同延时时间的任务加载到了不同级别的时间轮上,每一级时间轮的时间槽位较少,节省了空间,并且多级时间轮中只需要低级时间轮频繁转动,而高级时间轮转动频率低,从而不会存在大量空转,避免浪费cpu资源,提高了处理效率。
[0037]上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
[0038]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0039]图1示出了相关技术中的基于单级时间轮的定时任务处理逻辑示意图;
[0040]图2示出了本申请实施例的定时任务处理方法的流程示意图之一;
[0041]图3示出了本申请实施例的定时任务处理本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种定时任务处理方法,其特征在于,包括:启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务;其中,多级时间轮包括至少两个所述时间轮,每个所述时间轮上包括多个时间槽位,前一级时间轮的一圈对应于后一级时间轮的一个时间槽位;将所述定时任务提交至业务线程池,以使所述业务线程池将所述定时任务分发至执行器执行。2.根据权利要求1所述的方法,其特征在于,在所述启动多级时间轮,确定所述时间轮的时间槽位对应的定时任务之前,还包括:获取时间轮参数,并根据所述时间轮参数设置多级时间轮;获取任务参数,根据所述任务参数设置定时任务,并设置每个所述时间轮对应的用于存储定时任务的第一搜索引擎单元;为所述时间轮添加所述定时任务以及所述定时任务对应的搜索标识;其中,所述第一搜索引擎单元中存储有多个任务集合,每个所述任务集合包括至少一个所述定时任务,每个所述任务集合具有一个所述搜索标识,所述搜索标识包括时间轮ID和时间槽位ID,所述搜索标识用于指示时间轮的时间槽位。3.根据权利要求2所述的方法,其特征在于,所述时间轮参数包括以下至少一项:时间轮数量、每个所述时间轮的启动等级、每个所述时间轮的时间槽位数量、时间槽位对应的时间间隔、执行定时任务的业务线程池。4.根据权利要求2所述的方法,其特征在于,所述为所述时间轮添加所述定时任务,包括:将所述定时任务的延迟时间与前一级时间轮的时间上限进行比较;若所述延迟时间未超过所述前一级时间轮的时间上限,则将所述定时任务添加到所述前一级时间轮;若所述延迟时间超过所述前一级时间轮的时间上限,则将所述定时任务添加到后一级时间轮中。5.根据权利要求2所述的方法,其特征在于,针对任一所述时间轮,所述启动多级时间轮,确...

【专利技术属性】
技术研发人员:曾劲伟
申请(专利权)人:康键信息技术深圳有限公司
类型:发明
国别省市:

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

1