分布式定时任务执行方法、装置、设备和计算机可读介质制造方法及图纸

技术编号:32022609 阅读:29 留言:0更新日期:2022-01-22 18:44
本公开的实施例公开了分布式定时任务执行方法、装置、电子设备和计算机可读介质。该方法的一具体实施方式包括:响应于到达定时任务的执行时间,通过缓存数据库尝试获取锁;响应于获取锁成功,将定时任务进行拆分,得到多个子任务;将多个子任务加入子任务队列,以及通知服务节点集群中的各个服务节点,以使各个服务节点从子任务队列中获取以及执行获取到的子任务。该实施方式通过缓存数据库实现分布式锁。锁。锁。

【技术实现步骤摘要】
分布式定时任务执行方法、装置、设备和计算机可读介质


[0001]本公开的实施例涉及计算机
,具体涉及分布式定时任务执行方法、装置、设备和计算机可读介质。

技术介绍

[0002]分布式定时任务可以把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署。相关的分布式定时任务的执行依赖于各种编程语言提供的定时器或者第三方分布式定时任务系统。
[0003]然而,当采用上述方式执行分布式定时任务时,经常会存在如下技术问题:
[0004]第一,各种编程语言提供的定时器,服务器节点集群中的各个节点均开启定时器,各个服务节点独立执行定时任务,造成定时任务重复执行。
[0005]第二,第三方分布式定时任务系统只支持特定语言(例如java语言),对于其他开发语言无法应用。

技术实现思路

[0006]本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。本公开的一些实施例提出了分布式定时任务执行方法、装置、设备和计算机可读介质,来解决以上
技术介绍
部分提到的技术问题中的一项或多项。
[0007]第一方面,本公开的一些实施例提供了一种分布式定时任务执行方法,该方法包括:响应于到达定时任务的执行时间,通过缓存数据库尝试获取锁;响应于获取锁成功,将定时任务进行拆分,得到多个子任务;将多个子任务加入子任务队列,以及通知服务节点集群中的各个节点,以使各个节点从子任务队列中获取以及执行获取到的子任务。
[0008]第二方面,本公开的一些实施例提供了一种分布式定时任务执行装置,装置包括:获取单元,被配置成响应于到达定时任务的执行时间,通过缓存数据库尝试获取锁;拆分单元,被配置成响应于获取锁成功,将定时任务进行拆分,得到多个子任务;通知单元,被配置成将多个子任务加入子任务队列,以及通知服务节点集群中的各个节点,以使各个节点从子任务队列中获取以及执行获取到的子任务。
[0009]第三方面,本公开的一些实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述第一方面任一实现方式所描述的方法。
[0010]第四方面,本公开的一些实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现上述第一方面任一实现方式所描述的方法。
[0011]本公开的上述各个实施例具有如下有益效果:本公开的一些实施例通过缓存数据库实现分布式锁,获得锁的服务节点充当调度节点,调度节点将任务进行拆分,进而各个节
点共同完成任务。在此过程中,一旦一个服务节点获取到锁,其余的服务节点无法再获取到锁,因此可以避免多个服务节点重复执行定时任务。除此之外,不需要依赖第三方的分布式定时任务系统,从而可以在多种开发语言,也避免了部署和维护第三方系统的使用成本。
附图说明
[0012]结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
[0013]图1是根据本公开的一些实施例的分布式定时任务执行方法的一个应用场景的示意图;
[0014]图2是根据本公开的分布式定时任务执行方法的一些实施例的流程图;
[0015]图3是根据本公开的分布式定时任务执行方法的又一些实施例的流程图;
[0016]图4是根据本公开的分布式定时任务执行方法的另一些实施例的流程图;
[0017]图5是根据本公开的分布式定时任务执行装置的一些实施例的结构示意图;
[0018]图6是适于用来实现本公开的一些实施例的电子设备的结构示意图。
具体实施方式
[0019]下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
[0020]另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
[0021]需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0022]需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0023]本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
[0024]下面将参考附图并结合实施例来详细说明本公开。
[0025]图1是本公开的一些实施例的文本生成方法的一个应用场景的示意图。
[0026]在图1的应用场景中,服务节点集群中包括服务节点1如图中标记102所示、服务节点2如图中标记103所示
……
服务节点N如图中标记104所示。在此基础上,可以通过缓存数据库101来实现分布式定时任务的执行。实践中,定时任务的执行时间可以是预先设定的,例如,每天下午三点。当到达定时任务的执行之间,服务节点集群中的各个服务节点都可以通过缓存数据库101尝试获取锁。若某一服务节点,例如服务节点1(如图中标记102所示)获取锁成功,此时,服务节点1成为调度节点,可以将定时任务行拆分,得到多个子任务。举例来说,定时任务可以是健康检查、监控数据收集、监控数据分析整理等等。根据定时任务的不同,可以通过各种方式进行拆分。例如,定时任务是对集群中的上万台机器进行性能指标
收集,此时,可以把对每一台机器的指标收集定义为一个子任务,也就是按照机器来拆分,进而得到多个子任务。
[0027]在此基础上,上述服务节点1可以将拆分得到的多个子任务加入子任务队列。实践中,子任务队列的实现可以通过缓存数据库101来实现,例如通过Redis的list数据结构来实现子任务队列。根据需要,也可以采用消息中间件来实现子任务队列,例如RabbitMQ、Kafka等等。然后,服务节点1可以通知服务节点集群的各个服务节点,以使各个服务节点从子任务队列中获取以及执行获取到的子任务。例如,对于Redis,可以通过redis提供的lpop命令,从list队列中每次取出一个子任务,执行完再次去redis队列中获取子任务,直到redis队列中所有子任务都执行完毕。
[0028]应该理解,图1中的服务节点的数目仅仅是示意性的。根据实现本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式定时任务执行方法,应用于服务节点集群中的任一服务节点,包括:响应于到达定时任务的执行时间,通过缓存数据库尝试获取锁;响应于获取锁成功,将所述定时任务进行拆分,得到多个子任务;将所述多个子任务加入子任务队列,以及通知所述服务节点集群中的各个服务节点,以使所述各个服务节点从子任务队列中获取以及执行获取到的子任务。2.根据权利要求1所述的方法,其中,所述通过缓存数据库尝试获取锁,包括:通过所述缓存数据库提供的命令尝试将字符串关联到键,以及为所述键设置到期时间。3.根据权利要求2所述的方法,其中,所述响应于获取锁成功,将所述定时任务进行拆分,得到多个子任务,包括:响应于成功将所述字符串关联到所述键,将所述定时任务进行拆分,得到多个子任务,在对所述定时任务进行拆分过程中,所述到期时间被定时延长。4.根据权利要求3所述的方法,其中,所述方法还包括:响应于获取到的子任务执行完毕,释放锁以及通知所述服务节点集群中其余的服务节点,以使所述其余的服务节点尝试获取锁。5.根据权利要求1所述的方法,其中,所述方法还包括:通过所述缓存数据库提供的命令从所述子任务队列中获取子任务,以及执行所获取...

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

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

1