提醒任务的运行方法及装置制造方法及图纸

技术编号:31224474 阅读:11 留言:0更新日期:2021-12-08 09:25
本发明专利技术提供了一种提醒任务的运行方法、装置、电子设备及计算机可读存储介质;应用于分布式系统,所述分布式系统包括多个服务器;方法包括:所述服务器接收被设定的多个提醒任务,并按照所接收的提醒任务的提醒时间所处的时间区间进行存储;将用于执行所述提醒任务的线程设置为阻塞状态,并尝试获取所述分布式系统中的分布式锁;当获取到所述分布式锁时,将处于所述阻塞状态的线程转换为可执行状态,并通过所述线程执行处于当前时间区间内的提醒任务,以发送与被执行的提醒任务相应的提醒消息;其中,所述当前时间区间为所述线程获取所述分布式锁时所处的时间区间。通过本发明专利技术,能够提供稳定的提醒服务。够提供稳定的提醒服务。够提供稳定的提醒服务。

【技术实现步骤摘要】
提醒任务的运行方法及装置


[0001]本专利技术涉及互联网
,尤其涉及一种提醒任务的运行方法、装置、电子设备及计算机可读存储介质。

技术介绍

[0002]随着互联网技术的发展,用户可以利用终端上安装的应用执行各种业务。例如,用户可以通过日历应用记载个人的工作安排,也可以发起多人参与的日程,如会议、团队活动等。同时,为了避免用户遗忘,很多业务都需要用到提醒服务,例如日程、会议、待办等业务。特别的,当业务数量较多时,提醒服务就显得尤为重要。
[0003]相关技术中,通常是通过单个服务器来执行提醒任务,然而,通过单个服务器执行提醒任务存在单点效应,当服务器发生故障时将导致提醒任务丢失,无法为用户提供稳定的提醒服务。

技术实现思路

[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]本专利技术实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本专利技术实施例提供的提醒任务的运行方法。
[0038]本专利技术实施例具有以下有益效果:
[0039]基于分布式系统包括的多个服务器通过各自的线程来执行提醒任务,并基于分布式锁对服务器执行提醒任务的线程进行状态控制,实现了提醒任务的高效有序执行;并且多个服务器实现了提醒服务的容灾性,可以提供稳定的提醒服务。
附图说明
[0040]图1是本专利技术实施例提供的提醒任务的运行系统的一个可选的架构示意图;
[0041]图2是本专利技术实施例提供的服务器的一个可选的结构示意图;
[0042]图3是本专利技术实施例提供的提醒任务的运行方法的一个可选的流程示意图;
[0043]图4是本专利技术实施例提供的提醒任务的运行方法的另一个可选的流程示意图;
[0044]图5是本专利技术实施例提供的用户针对日程设定的提醒任务的界面示意图;
[0045]图6是本专利技术实施例提供的用户针对会议设定的提醒任务的界面示意图;
[0046]图7是本专利技术实施例提供的用户针对待办设定的提醒任务的界面示意图;
[0047]图8是本专利技术实施例提供的基于分布式锁chubby提供提醒服务的架构示意图;
[0048]图9是本专利技术实施例提供的通过多个线程执行不同号段的提醒任务的流程示意图。
具体实施方式
[0049]为了使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提醒任务的运行方法,其特征在于,应用于分布式系统,所述分布式系统包括多个服务器;所述方法包括:所述服务器接收被设定的多个提醒任务,并按照所接收的提醒任务的提醒时间所处的时间区间进行存储;将用于执行所述提醒任务的线程设置为阻塞状态,并尝试获取所述分布式系统中的分布式锁;当获取到所述分布式锁时,将处于所述阻塞状态的线程转换为可执行状态,并通过所述线程执行处于当前时间区间内的提醒任务,以发送与被执行的提醒任务相应的提醒消息;其中,所述当前时间区间为所述线程获取所述分布式锁时所处的时间区间。2.根据权利要求1所述的方法,其特征在于,所述按照所接收的提醒任务的提醒时间所处的时间区间进行存储,包括:按照设定的时间粒度将每天划分为多个时间区间,并针对每个时间区间建立对应的索引表;在划分后的多个时间区间中,确定所接收的提醒任务的提醒时间所处的时间区间,并将所接收的提醒任务存储到所确定的时间区间对应的索引表中。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:针对所述索引表中任一时间区间内所存储的多个提醒任务,根据所述多个提醒任务的编号进行取模运算;按照设定的粒度将取模运算结果划分为多个号段,以根据所述多个提醒任务的编号将所述多个提醒任务划分到对应的号段中。4.根据权利要求3所述的方法,其特征在于,所述通过所述线程执行处于当前时间区间内的提醒任务,包括:根据所述当前时间区间内号段的数量,调整所述服务器中启动的线程的数量,以使每个线程读取一个号段中的提醒任务,并将所读取的提醒任务加入对应的循环队列中;针对多个所述循环队列中的任一循环队列,通过与所述任一循环队列对应的线程执行所述任一循环队列中的提醒任务。5.根据权利要求1所述的方法,其特征在于,所述通过所述线程执行处于当前时间区间内的提醒任务,包括:在所述分布式锁的有效期限内,通过所述线程执行处于当前时间区间内的提醒服务;当超出所述分布式锁的有效期限时释放所述分布式锁,并将处于所述可执行状态的线程重新转换为阻塞状态。6.根据权利要求...

【专利技术属性】
技术研发人员:高毅郑锦良
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1