确定分布式延迟任务的方法和装置、电子设备和存储介质制造方法及图纸

技术编号:37259906 阅读:13 留言:0更新日期:2023-04-20 23:34
本申请提供了一种确定分布式延迟任务的方法和装置、电子设备和存储介质,其中,该方法包括:从目标数据集合中获取满足预设条件的目标时间戳;在后续实际时间达到目标时间戳时,根据目标时间戳得到对应的目标标识信息,其中,目标时间戳为当前时间与延迟时长之和,延迟时长为延迟执行目标延迟任务的时长,目标标识信息用于表征目标延迟任务;根据目标标识信息获取保存目标延迟任务的目标载体;根据目标载体,执行目标延迟任务。通过本申请,解决了相关技术中存在的延迟任务解决方案适用面窄、需额外引入中间件开发成本较高的问题。额外引入中间件开发成本较高的问题。额外引入中间件开发成本较高的问题。

【技术实现步骤摘要】
确定分布式延迟任务的方法和装置、电子设备和存储介质


[0001]本申请涉及计算机
,尤其涉及一种确定分布式延迟任务的方法和装置、电子设备和存储介质。

技术介绍

[0002]在日常开发项目中经常会遇到如下的需求:创建订单30分钟未支付,订单自动取消;订单支付成功后,1分钟后给用户发送短信,提醒用户评价等需求。这时就需要开发人员针对上述的延迟任务需求设计相应的延迟任务解决方案。
[0003]现有的解决方案大致有以下四个:数据库轮询、JDK(Java Development Kit,java软件开发工具包)延迟队列、Redis(Remote Dictionary Server,开源数据库)监听失效值、RocketMQ消息中间件延迟消息。其中,这四个解决方案均存在缺点:数据库轮询:通过一个线程定时的扫描数据库,筛选出来符合时间的数据并做相应的业务逻辑,但是不适用数据量大的情况下。JDK延迟队列:采用JDK自带的DelayQueue来实现,但是消息队列的信息都存放在内存中,一旦服务器重启,则数据全部消失、无法进行集群扩展。Redis监听失效值:基于Reids的方案,实现MessageListener接口,缺点是客户端断开后重连会导致所有事件丢失,且高并发场景下,存在大量的失效值场景会导致失效时间存在延迟。RocketMQ延迟消息:基于RocketMQ设置消息的等级,发送延迟消息,缺点是需要引入额外的消息队列,增加项目的维护复杂度。
[0004]因此,当前急需一种适合中小体量的项目,节省开发成本,且不需要引入额外的中间件的延迟任务设计方案。

技术实现思路

[0005]本申请提供了一种确定分布式延迟任务的方法和装置、电子设备和存储介质,以至少解决相关技术中存在延迟任务解决方案适用面窄、需额外引入中间件开发成本较高的问题。
[0006]根据本申请实施例的一个方面,提供了一种确定分布式延迟任务的方法,该方法包括:
[0007]从目标数据集合中获取满足预设条件的目标时间戳;
[0008]在后续实际时间达到所述目标时间戳时,根据所述目标时间戳得到对应的目标标识信息,其中,所述目标时间戳为当前时间与延迟时长之和,所述延迟时长为延迟执行目标延迟任务的时长,所述目标标识信息用于表征所述目标延迟任务;
[0009]根据所述目标标识信息获取保存所述目标延迟任务的目标载体;
[0010]根据所述目标载体,执行所述目标延迟任务。
[0011]根据本申请实施例的另一个方面,还提供了一种确定分布式延迟任务的装置,该装置包括:
[0012]第一获取模块,用于从目标数据集合中获取满足预设条件的目标时间戳;
[0013]第一得到模块,用于在后续实际时间达到所述目标时间戳时,根据所述目标时间戳得到对应的目标标识信息,其中,所述目标时间戳为当前时间与延迟时长之和,所述延迟时长为延迟执行目标延迟任务的时长,所述目标标识信息用于表征所述目标延迟任务;
[0014]第二获取模块,用于根据所述目标标识信息获取保存所述目标延迟任务的目标载体;
[0015]第一执行模块,用于根据所述目标载体,执行所述目标延迟任务。
[0016]可选地,该装置还包括:
[0017]第三获取模块,用于在所述从目标数据集合中获取满足预设条件的目标时间戳之前,获取多个延迟任务以及每个所述延迟任务对应的延迟时长;
[0018]相加模块,用于将所述当前时间与每个所述延迟时长进行相加,得到多个待执行的时间戳;
[0019]排序模块,用于按照预设顺序对所述时间戳进行排序,并按照排序结果将每个所述延迟任务对应的标识信息进行排序,得到所述目标数据集合;
[0020]遍历模块,用于遍历所述目标数据集合。
[0021]可选地,该装置还包括:
[0022]建立模块,用于在所述根据所述目标标识信息获取保存所述目标延迟任务的目标载体之前,将所述标识信息与保存所述延迟任务的载体之间建立键值对关系;
[0023]查询模块,用于根据所述键值对关系查询与所述目标标识信息对应的所述目标载体。
[0024]可选地,标载体内存储有目标函数方法,第一执行模块包括:
[0025]获取单元,用于根据所述目标载体获取可调用所述目标延迟任务的所述目标函数方法;
[0026]执行单元,用于调用所述目标函数方法,执行所述目标延迟任务。
[0027]可选地,该装置还包括:
[0028]第二执行模块,用于在遍历所述目标数据集合之前,对所述目标数据集合执行加锁操作;
[0029]第三执行模块,用于在根据所述目标标识信息获取保存所述目标延迟任务的目标载体之后,对所述目标数据集合执行解锁操作。
[0030]可选地,该装置还包括:
[0031]移除模块,用于在根据所述目标标识信息获取保存所述目标延迟任务的目标载体之后,对与所述目标标识信息关联的所述目标载体、所述目标时间戳以及所述目标标识信息进行移除。
[0032]可选地,所述目标载体内存储有目标业务数据,该装置还包括:
[0033]发送模块,用于在所述执行所述目标延迟任务之后,发送与所述目标延迟任务对应的所述目标业务数据,其中,所述目标业务数据为在调用所述目标函数方法时需填写的数据。
[0034]根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计
算机程序来执行上述任一实施例中的方法步骤。
[0035]根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
[0036]在本申请实施例中,通过从目标数据集合中获取满足预设条件的目标时间戳;在后续实际时间达到目标时间戳时,根据目标时间戳得到对应的目标标识信息,其中,目标时间戳为当前时间与延迟时长之和,延迟时长为延迟执行目标延迟任务的时长,目标标识信息用于表征目标延迟任务;根据目标标识信息获取保存目标延迟任务的目标载体;根据目标载体,执行目标延迟任务。由于本申请实施例设置了时间戳与标识信息,标识信息与载体之间的关系,在后续实际时间达到目标时间戳时,根据对应的目标标识信息获取保存目标延迟任务的目标载体,再基于目标载体确定目标延迟任务,这时不需要引入额外的中间件即可执行相应的目标延迟任务,同时本申请提出的确定分布式延迟任务的方法通用性好,只需要设置好时间戳与标识信息,标识信息与载体之间的关系即可执行任意的延迟任务,从而节省研发成本,进而解决了相关技术中存在的延迟任务解决方案适用面窄、需额外引入中间件开发成本较高的问题。
附图说明
[0037]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种确定分布式延迟任务的方法,其特征在于,所述方法包括:从目标数据集合中获取满足预设条件的目标时间戳;在后续实际时间达到所述目标时间戳时,根据所述目标时间戳得到对应的目标标识信息,其中,所述目标时间戳为当前时间与延迟时长之和,所述延迟时长为延迟执行目标延迟任务的时长,所述目标标识信息用于表征所述目标延迟任务;根据所述目标标识信息获取保存所述目标延迟任务的目标载体;根据所述目标载体,执行所述目标延迟任务。2.根据权利要求1所述的方法,其特征在于,在所述从目标数据集合中获取满足预设条件的目标时间戳之前,所述方法还包括:获取多个延迟任务以及每个所述延迟任务对应的延迟时长;将所述当前时间与每个所述延迟时长进行相加,得到多个待执行的时间戳;按照预设顺序对所述时间戳进行排序,并按照排序结果将每个所述延迟任务对应的标识信息进行排序,得到所述目标数据集合;遍历所述目标数据集合。3.根据权利要求2所述的方法,其特征在于,在所述根据所述目标标识信息获取保存所述目标延迟任务的目标载体之前,所述方法还包括:将所述标识信息与保存所述延迟任务的载体之间建立键值对关系;根据所述键值对关系查询与所述目标标识信息对应的所述目标载体。4.根据权利要求1所述的方法,其特征在于,所述目标载体内存储有目标函数方法,所述根据所述目标载体,执行所述目标延迟任务,包括:根据所述目标载体获取可调用所述目标延迟任务的所述目标函数方法;调用所述目标函数方法,执行所述目标延迟任务。5.根据权利要求2所述的方法,其特征在于,方法还包括:在遍历所述目标数据集合之前,对所述目标数据集合执行加锁操作;在根据所述目标标识信息获取保存所述目标延迟任务的目标载体...

【专利技术属性】
技术研发人员:于云
申请(专利权)人:北京自如信息科技有限公司
类型:发明
国别省市:

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

1