定时任务的执行方法及其装置、电子设备与流程

文档序号:33497586发布日期:2023-03-17 21:22阅读:41来源:国知局
定时任务的执行方法及其装置、电子设备与流程

1.本发明涉及数据处理技术领域,具体而言,涉及一种定时任务的执行方法及其装置、电子设备。


背景技术:

2.实际应用中,设定好的定时任务往往需要进行动态调整。相关技术中,往往采用xxl-job框架和elastic-job框架解决定时任务的动态调整问题。其中,
3.xxl-job框架是一个开源的分布式定时任务框架,其调度中心和执行器是相互分离,分开部署的,两者通过http(hyper text transfer protocol,即超文本传输协议)协议进行通信。调度中心负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块。执行模块(执行器)负责接收调度中心的执行请求、终止请求和日志请求等,任务模块专注于任务的执行等操作。
4.elastic-job框架是去中心化的任务调度框架,并引入了分片的概念,即将一个任务划分成多个分片,然后由多个执行的机器分别领取这些分片来执行。当多个节点运行时,会先选择一个主节点,当到达执行时间后,每个实例开始执行任务,主节点负责分片的划分,其它节点等待划分完成,主节点将划分后的结果存放到zookeeper(是一个分布式的,开放源码的分布式应用程序协调服务)中,然后每个节点再从zookeeper中获取划分好的分片项,将分片信息作为参数,传入到本地的任务函数中,从而执行任务。
5.然而,虽然基于xxl-job框架和elastic-job框架的方案都能够解决定时任务的动态调整,但是以上两种方案中无论是调度中心对定时任务的调度还是主节点对任务的分片,都是任务分配程序对任务的分配处理,任务分配的逻辑较为复杂,无法保证分配的合理性。
6.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

7.本发明实施例提供了一种定时任务的执行方法及其装置、电子设备,以至少解决相关技术中任务分配的逻辑较为复杂,无法保证分配的合理性的技术问题。
8.根据本发明实施例的一个方面,提供了一种定时任务的执行方法,包括:接收发布端发布的任务调整请求,其中,所述任务调整请求用于调整定时任务,所述任务调整请求携带有任务信息,所述任务信息至少包括:任务标识、执行时间、调整类型;基于所述调整类型,调整预设分布式服务的预设目录中与所述任务标识关联的节点信息,得到调整结果;控制所述预设分布式服务将所述调整结果发布给消费服务集合中的每个消费服务,其中,所述消费服务是预先订阅所述预设目录的服务;在所述定时任务到达所述执行时间的情况下,将争夺到分布式锁的所述消费服务作为目标服务,控制所述目标服务执行调整后的所述定时任务。
9.可选地,在接收发布端发布的任务调整请求之前,还包括:在分布式系统启动的情况下,控制所述分布式系统中的每个所述消费服务订阅所述预设分布式服务的所述预设目录,建立所述消费服务与所述预设目录之间的订阅通道,其中,所述消费服务通过所述订阅通道监听所述预设分布式服务发布的所述调整结果。
10.可选地,在接收发布端发布的任务调整请求之后,还包括:将所述任务调整请求的所述任务信息写入至预设数据库,其中,所述任务信息还包括:执行业务信息;将所述任务信息同步至所述预设分布式服务的所述预设目录。
11.可选地,基于所述调整类型,调整预设分布式服务的预设目录中与所述任务标识关联的节点信息的步骤,包括:在所述调整类型为创建类型或者修改类型的情况下,在所述预设目录中查询所述任务标识指示的子任务,得到第一查询结果;在所述第一查询结果指示所述预设目录中不存在所述子任务的情况下,在预设目录中创建所述子任务的节点信息;在所述第一查询结果指示所述预设目录中存在所述子任务的情况下,修改所述子任务的所述节点信息。
12.可选地,基于所述调整类型,调整预设分布式服务的预设目录中与所述任务标识关联的节点信息的步骤,还包括:在所述调整类型为删除类型的情况下,在所述预设目录中查询所述任务标识指示的子任务,得到第二查询结果;在所述第二查询结果指示所述预设目录中存在所述子任务的情况下,删除所述子任务的所述节点信息。
13.可选地,所述调整结果的类型包括下述至少之一:创建调整结果、修改调整结果、删除调整结果,在控制所述预设分布式服务将所述调整结果发布给消费服务集合中的每个消费服务之后,还包括:在所述调整结果为所述创建调整结果的情况下,所述消费服务基于所述创建调整结果,在所述定时任务中增添所述任务标识指示的子任务;在所述调整结果为所述修改调整结果的情况下,所述消费服务基于所述修改调整结果,修改所述定时任务中所述任务标识指示的子任务;在所述调整结果为所述删除调整结果的情况下,所述消费服务基于所述删除调整结果,删除所述定时任务中所述任务标识指示的子任务。
14.可选地,将争夺到分布式锁的所述消费服务作为目标服务,控制所述目标服务执行调整后的所述定时任务的步骤,包括:计算每个所述消费服务的执行权重值;基于所述执行权重值,计算所述消费服务的服务延时值;对所有所述服务延时值进行排序,确定最小服务延时值指示的所述消费服务为争夺到所述分布式锁的所述目标服务;控制所述目标服务基于执行业务信息,执行调整后的所述定时任务。
15.可选地,计算每个所述消费服务的执行权重值的步骤,包括:获取所述消费服务的空闲处理器数量以及空闲内存数量;基于第一调整参数、第二调整参数、所述空闲处理器数量以及所述空闲内存数量,计算所述消费服务的执行权重值。
16.根据本发明实施例的另一方面,还提供了一种定时任务的执行装置,包括:接收单元,用于接收发布端发布的任务调整请求,其中,所述任务调整请求用于调整定时任务,所述任务调整请求携带有任务信息,所述任务信息至少包括:任务标识、执行时间、调整类型;调整单元,用于基于所述调整类型,调整预设分布式服务的预设目录中与所述任务标识关联的节点信息,得到调整结果;发布单元,用于控制所述预设分布式服务将所述调整结果发布给消费服务集合中的每个消费服务,其中,所述消费服务是预先订阅所述预设目录的服务;执行单元,用于在所述定时任务到达所述执行时间的情况下,将争夺到分布式锁的所述
消费服务作为目标服务,控制所述目标服务执行调整后的所述定时任务。
17.可选地,所述执行装置还包括:第一订阅模块,用于在接收发布端发布的任务调整请求之前,在分布式系统启动的情况下,控制所述分布式系统中的每个所述消费服务订阅所述预设分布式服务的所述预设目录,建立所述消费服务与所述预设目录之间的订阅通道,其中,所述消费服务通过所述订阅通道监听所述预设分布式服务发布的所述调整结果。
18.可选地,所述执行装置还包括:第一写入模块,用于在接收发布端发布的任务调整请求之后,将所述任务调整请求的所述任务信息写入至预设数据库,其中,所述任务信息还包括:执行业务信息;第一同步模块,用于将所述任务信息同步至所述预设分布式服务的所述预设目录。
19.可选地,所述调整单元包括:第一查询模块,用于在所述调整类型为创建类型或者修改类型的情况下,在所述预设目录中查询所述任务标识指示的子任务,得到第一查询结果;第一创建模块,用于在所述第一查询结果指示所述预设目录中不存在所述子任务的情况下,在预设目录中创建所述子任务的节点信息;第一修改模块,用于在所述第一查询结果指示所述预设目录中存在所述子任务的情况下,修改所述子任务的所述节点信息。
20.可选地,所述调整单元还包括:第二查询模块,用于在所述调整类型为删除类型的情况下,在所述预设目录中查询所述任务标识指示的子任务,得到第二查询结果;第一删除模块,用于在所述第二查询结果指示所述预设目录中存在所述子任务的情况下,删除所述子任务的所述节点信息。
21.可选地,所述调整结果的类型包括下述至少之一:创建调整结果、修改调整结果、删除调整结果,所述执行装置还包括:第一增添模块,用于在控制所述预设分布式服务将所述调整结果发布给消费服务集合中的每个消费服务之后,在所述调整结果为所述创建调整结果的情况下,所述消费服务基于所述创建调整结果,在所述定时任务中增添所述任务标识指示的子任务;第二修改模块,用于在所述调整结果为所述修改调整结果的情况下,所述消费服务基于所述修改调整结果,修改所述定时任务中所述任务标识指示的子任务;第二删除模块,用于在所述调整结果为所述删除调整结果的情况下,所述消费服务基于所述删除调整结果,删除所述定时任务中所述任务标识指示的子任务。
22.可选地,所述执行单元包括:第一计算模块,用于计算每个所述消费服务的执行权重值;第二计算模块,用于基于所述执行权重值,计算所述消费服务的服务延时值;第一确定模块,用于对所有所述服务延时值进行排序,确定最小服务延时值指示的所述消费服务为争夺到所述分布式锁的所述目标服务;第一执行模块,用于控制所述目标服务基于执行业务信息,执行调整后的所述定时任务。
23.可选地,所述第一计算模块包括:第一获取子模块,用于获取所述消费服务的空闲处理器数量以及空闲内存数量;第一计算子模块,用于基于第一调整参数、第二调整参数、所述空闲处理器数量以及所述空闲内存数量,计算所述消费服务的执行权重值。
24.根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述定时任务的执行方法。
25.在本公开中,接收发布端发布的任务调整请求,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果,控制预设分布式服务将调整
结果发布给消费服务集合中的每个消费服务,在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。在本公开中,可以根据接收到的任务调整请求中的调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,然后通过预设分布式服务将调整结果发布给订阅该预设目录的每个消费服务,当定时任务到达执行时间时,各消费服务将争夺分布式锁,争夺到分布式锁的目标服务可以执行调整后的定时任务,通过分布式锁能够保证定时任务不被多次执行以及分配的合理性,并且在解决定时任务的动态调整的同时有效简化了任务分配的逻辑,进而解决了相关技术中任务分配的逻辑较为复杂,无法保证分配的合理性的技术问题。
附图说明
26.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
27.图1是根据本发明实施例的一种可选的定时任务的执行方法的流程图;
28.图2是根据本发明实施例的一种可选的基于zookeeper的定时任务动态调整和分配结构的示意图;
29.图3是根据本发明实施例的一种可选的定时任务的创建与修改流程的示意图;
30.图4是根据本发明实施例的一种可选的定时任务的删除流程的示意图;
31.图5是根据本发明实施例的一种可选的消费服务操作任务信息流程的示意图;
32.图6是根据本发明实施例的一种可选的消费服务执行定时任务流程的示意图;
33.图7是根据本发明实施例的一种可选的定时任务的执行装置的示意图;
34.图8是根据本发明实施例的一种用于定时任务的执行方法的电子设备(或移动设备)的硬件结构框图。
具体实施方式
35.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
36.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
37.为便于本领域技术人员理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:
38.zookeeper,是一个分布式的,开放源码的分布式应用程序协调服务,是一个为分
布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
39.zookeeper的发布订阅,所谓的数据发布/订阅,意思是发布者将数据发布到zookeeper上的一个或一系列节点上,通过watcher机制(即监听机制),客户端可以监听(订阅)这些数据节点,当这些节点发生变化时,zookeeper及时地通知客户端,从而达到动态获取数据的目的。
40.zookeeper的分布式锁,利用zookeeper的同级节点的唯一性特性,在需要获取排他锁时,所有的客户端试图通过调用创建接口,在指定的节点下创建临时子节点,最终只有一个客户端能创建成功,那么此客户端就获得了分布式锁。同时,所有没有获取到锁的客户端可以在指定的节点上注册一个子节点变更的watcher监听事件,以便重新争取获得锁。
41.需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
42.本发明采用无任务调度中心的设计方式,通过zookeeper的发布定时任务的变化信息,由每个订阅了变化信息的服务自己判断进行任务处理,并通过分布式锁和资源均衡算法保证定时任务不被多次执行和资源的合理分配,能够解决定时任务的动态调整的同时有效简化任务分配的逻辑。
43.下面结合各个实施例来详细说明本发明。
44.实施例一
45.根据本发明实施例,提供了一种定时任务的执行方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
46.图1是根据本发明实施例的一种可选的定时任务的执行方法的流程图,如图1所示,该方法包括如下步骤:
47.步骤s101,接收发布端发布的任务调整请求,其中,任务调整请求用于调整定时任务,任务调整请求携带有任务信息,任务信息至少包括:任务标识、执行时间、调整类型。
48.步骤s102,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果。
49.步骤s103,控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,其中,消费服务是预先订阅预设目录的服务。
50.步骤s104,在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。
51.通过上述步骤,可以接收发布端发布的任务调整请求,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果,控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。在本
发明实施例中,可以根据接收到的任务调整请求中的调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,然后通过预设分布式服务将调整结果发布给订阅该预设目录的每个消费服务,当定时任务到达执行时间时,各消费服务将争夺分布式锁,争夺到分布式锁的目标服务可以执行调整后的定时任务,通过分布式锁能够保证定时任务不被多次执行以及分配的合理性,并且在解决定时任务的动态调整的同时有效简化了任务分配的逻辑,进而解决了相关技术中任务分配的逻辑较为复杂,无法保证分配的合理性的技术问题。
52.下面结合上述各步骤对本发明实施例进行详细说明。
53.在本实施例中,基于zookeeper的发布订阅模式,使分布式系统中的各个消费服务订阅zookeeper的指定目录,并在zookeeper的指定目录中发布定时任务的创建、修改、删除等操作,当各消费服务收到发布的操作时会进行执行,以此达到动态调整分布式系统中定时任务的目的。
54.图2是根据本发明实施例的一种可选的基于zookeeper的定时任务动态调整和分配结构的示意图,如图2所示,包括:zookeeper服务(包括:zookeeper目录)、数据库和分布式系统(包括:服务1、服务2、服务3等多个服务)。客户端(发布者)发布任务后,可以先将任务存储至数据库(存储有任务1、任务2等多个任务),数据库可以将任务同步至zookeeper服务的zookeeper目录下(有任务1、任务2等多个任务),并且分布式系统中的多个服务可以预先订阅zookeeper目录,当zookeeper目录中的任务有变化时,zookeeper服务可以将任务信息发布至订阅zookeeper目录的各服务。
55.可选地,在接收发布端发布的任务调整请求之前,还包括:在分布式系统启动的情况下,控制分布式系统中的每个消费服务订阅预设分布式服务的预设目录,建立消费服务与预设目录之间的订阅通道,其中,消费服务通过订阅通道监听预设分布式服务发布的调整结果。
56.在本发明实施例中,当分布式系统启动时,需要使分布式系统中的每个服务都订阅zookeeper目录(即预设分布式服务的预设目录),即在分布式系统启动的情况下,可以控制分布式系统中的每个消费服务订阅预设分布式服务(即zookeeper服务)的预设目录,以建立消费服务与预设目录之间的订阅通道,通过订阅通道消费服务可以监听预设分布式服务发布的调整结果。
57.步骤s101,接收发布端发布的任务调整请求,其中,任务调整请求用于调整定时任务,任务调整请求携带有任务信息,任务信息至少包括:任务标识、执行时间、调整类型。
58.在本发明实施例中,当要对定时任务调整(例如,进行创建、修改或删除等)时,可以根据定时任务需要调整的任务信息,生成任务调整请求,再通过发布端(如客户端)进行发布(即可以接收发布端发布的任务调整请求,该任务调整请求用于调整定时任务)。任务信息包括:任务标识(即任务的唯一标识)、执行时间(即定时任务的执行时间)、调整类型(如创建、修改、删除)、执行业务信息(即执行定时任务时需要的业务信息)。
59.可选地,在接收发布端发布的任务调整请求之后,还包括:将任务调整请求的任务信息写入至预设数据库,其中,任务信息还包括:执行业务信息;将任务信息同步至预设分布式服务的预设目录。
60.在本发明实施例中,可以将接收到的任务调整请求的任务信息写入至预设数据库
(即将定时任务的需要调整的任务信息,如任务标识,执行时间,执行业务信息等写入数据库中进行保存)。然后,可以将任务信息同步至预设分布式服务的预设目录,以动态调整zookeeper服务的zookeeper目录下的定时任务的信息。
61.步骤s102,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果。
62.在本发明实施例中,可以根据调整类型(如创建、修改、删除),对预设分布式服务的预设目录中与任务标识关联的节点信息(即调整任务标识指示的子任务的信息)进行调整,以得到调整结果,从而可以将调整结果发布至所有订阅该预设目录的消费服务。
63.可选地,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息的步骤,包括:在调整类型为创建类型或者修改类型的情况下,在预设目录中查询任务标识指示的子任务,得到第一查询结果;在第一查询结果指示预设目录中不存在子任务的情况下,在预设目录中创建子任务的节点信息;在第一查询结果指示预设目录中存在子任务的情况下,修改子任务的节点信息。
64.在本发明实施例中,如果调整类型为创建类型或者修改类型,则可以根据任务标识寻找zookeeper目录中的子任务(即在调整类型为创建类型或者修改类型的情况下,在预设目录中查询任务标识指示的子任务,得到第一查询结果),若无此子任务,则在zookeeper目录中新建该子任务的节点信息(即在第一查询结果指示预设目录中不存在子任务的情况下,在预设目录中创建子任务的节点信息);若zookeeper目录中已有该子任务,则更新该子任务的节点信息(即在第一查询结果指示预设目录中存在子任务的情况下,修改子任务的节点信息)。
65.图3是根据本发明实施例的一种可选的定时任务的创建与修改流程的示意图,如图3所示,发布者创建或更新任务信息时,可以先判断数据库中是存在此任务,如果否,则在数据库中创建此任务的信息,然后将数据库中的任务信息同步到zookeeper目录;如果是,则更新此任务在数据库中的信息,然后将数据库中的任务信息同步到zookeeper目录。
66.可选地,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息的步骤,还包括:在调整类型为删除类型的情况下,在预设目录中查询任务标识指示的子任务,得到第二查询结果;在第二查询结果指示预设目录中存在子任务的情况下,删除子任务的节点信息。
67.在本发明实施例中,如果调整类型为删除类型,则可以根据任务标识寻找zookeeper目录中是否有该子任务的节点信息,若有则将其从zookeeper目录中删除(即在调整类型为删除类型的情况下,在预设目录中查询任务标识指示的子任务,得到第二查询结果,在第二查询结果指示预设目录中存在子任务的情况下,删除子任务的节点信息)。
68.图4是根据本发明实施例的一种可选的定时任务的删除流程的示意图,如图4所示,发布者删除任务信息时,可以先判断数据库中是存在此任务,如果否,则直接删除此任务zookeeper目录中的信息;如果是,则删除此任务在数据库中的信息,然后删除此任务zookeeper目录中的信息。
69.步骤s103,控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,其中,消费服务是预先订阅预设目录的服务。
70.在本发明实施例中,当zookeeper目录中的节点信息有变化时,zookeeper会将目
录中的信息变化发布给所有订阅该目录的服务(即控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,该消费服务是预先订阅预设目录的服务)。
71.可选地,调整结果的类型包括下述至少之一:创建调整结果、修改调整结果、删除调整结果,在控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务之后,还包括:在调整结果为创建调整结果的情况下,消费服务基于创建调整结果,在定时任务中增添任务标识指示的子任务;在调整结果为修改调整结果的情况下,消费服务基于修改调整结果,修改定时任务中任务标识指示的子任务;在调整结果为删除调整结果的情况下,消费服务基于删除调整结果,删除定时任务中任务标识指示的子任务。
72.在本发明实施例中,调整结果的类型包括:创建调整结果、修改调整结果、删除调整结果等,在各消费服务收到zookeeper服务发布的变化信息(即调整结果)后,可以根据信息的变化做出对应的操作。若信息变化为创建定时任务,则在根据定时任务信息创建子任务(即在调整结果为创建调整结果的情况下,消费服务基于创建调整结果,在定时任务中增添任务标识指示的子任务);若信息变化为修改定时任务,则根据定时任务信息修改已存在的定时任务中的子任务(即在调整结果为修改调整结果的情况下,消费服务基于修改调整结果,修改定时任务中任务标识指示的子任务);若信息变化为删除定时任务,则根据任务标识删除对应的子任务(即在调整结果为删除调整结果的情况下,消费服务基于删除调整结果,删除定时任务中任务标识指示的子任务)。
73.图5是根据本发明实施例的一种可选的消费服务操作任务信息流程的示意图,如图5所示,服务监听到zookeeper目录的信息变化后,可以根据任务信息变化方式进行操作。如果任务信息变化方式为创建任务,则可以在服务内创建定时任务;如果任务信息变化方式为更新任务,则可以在服务内修改定时任务;如果任务信息变化方式为删除任务,则可以在服务内删除定时任务,在操作完成后各服务等待任务执行。
74.步骤s104,在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。
75.可选地,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务的步骤,包括:计算每个消费服务的执行权重值;基于执行权重值,计算消费服务的服务延时值;对所有服务延时值进行排序,确定最小服务延时值指示的消费服务为争夺到分布式锁的目标服务;控制目标服务基于执行业务信息,执行调整后的定时任务。
76.在本发明实施例中,当各消费服务上相同定时任务到达任务执行的时间时,将开始争夺分布式锁,并将争夺到分布式锁的消费服务作为目标服务执行调整后的定时任务(即在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务)。具体为:各消费服务通过资源均衡算法计算执行权重w(即计算每个消费服务的执行权重值)。然后根据执行权重值,计算消费服务的服务延时值delaytime(即计算争夺锁的延时),其中,服务延时值计算公式为:delaytime(单位为秒)=1-w。
77.各消费服务延迟delaytime后,去抢夺分布式锁(即延时越长获得锁的概率越低),多个消费服务同时争夺,只有拿到锁的消费服务才会执行定时任务,其他没有拿到锁的消费服务跳过定时任务的执行(即对所有服务延时值进行排序,确定最小服务延时值指示的消费服务为争夺到分布式锁的目标服务,控制目标服务基于执行业务信息,执行调整后的
定时任务)。
78.图6是根据本发明实施例的一种可选的消费服务执行定时任务流程的示意图,如图6所示,定时任务到达执行时间后,各消费服务计算节点执行权重,并计算争夺锁的延时,然后延时获取分布式锁,判断是否成功夺得zookeeper分布式锁,如果是则争夺到分布式锁的消费服务执行任务,否则直接结束。
79.可选地,计算每个消费服务的执行权重值的步骤,包括:获取消费服务的空闲处理器数量以及空闲内存数量;基于第一调整参数、第二调整参数、空闲处理器数量以及空闲内存数量,计算消费服务的执行权重值。
80.在本发明实施例中,消费服务通过资源均衡算法计算执行权重值的过程如下:
81.(1)获取消费服务的空闲cpu数量cpu
free
(即空闲处理器数量)和空闲内存ram
free
(gb为单位)(即空闲内存数量);
82.(2)使用归一化函数将资源数值(即空闲处理器数量以及空闲内存数量)归一化为(0,1)的范围,例如,使用sigmoid函数(即一种激活函数)作为归一化函数,其中,参数x越大,结果越大;
83.(3)将参数x=α
·
cpu
free
+βram
free
代入公式得到执行权重(即基于第一调整参数、第二调整参数、空闲处理器数量以及空闲内存数量,计算消费服务的执行权重值):
[0084][0085]
其中,cpu和空闲内存越多,权重越大,α(即第一调整参数)和β(即第二调整参数)作为可调整参数进行调优。
[0086]
本实施例可应用的场景有:特征库生成的定时任务需要调整生成时间时、临时取消某些定时任务但不想重启服务器时等场景。
[0087]
本发明实施例中,通过无任务调度中心的设计,能够减少资源使用和复杂的调度逻辑,并且任务发布后直接同步到执行节点,能够确保每个执行节点有最全最新的任务信息,之后任务执行节点通过资源均衡算法去争夺执行任务的权力,能够使得集群中的资源分配合理,从而到达如下有益效果:(1)能够动态的对分布式系统上的定时任务进行创建,修改,删除等操作;(2)通过无任务调度的设计,利用zookeeper的发布订阅模式和执行节点的资源均衡算法争夺任务的执行权,使得定时任务的调整操作更轻量化,执行节点更随机,集群中的资源分配更合理。
[0088]
下面结合另一实施例进行详细说明。
[0089]
实施例二
[0090]
本实施例中提供的一种定时任务的执行装置包含了多个实施单元,每个实施单元对应于上述实施例一中的各个实施步骤。
[0091]
图7是根据本发明实施例的一种可选的定时任务的执行装置的示意图,如图2所示,该执行装置可以包括:接收单元70,调整单元71,发布单元72,执行单元73,其中,
[0092]
接收单元70,用于接收发布端发布的任务调整请求,其中,任务调整请求用于调整定时任务,任务调整请求携带有任务信息,任务信息至少包括:任务标识、执行时间、调整类型;
[0093]
调整单元71,用于基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果;
[0094]
发布单元72,用于控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,其中,消费服务是预先订阅预设目录的服务;
[0095]
执行单元73,用于在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。
[0096]
上述执行装置,可以通过接收单元70接收发布端发布的任务调整请求,通过调整单元71基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果,通过发布单元72控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,通过执行单元73在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。在本发明实施例中,可以根据接收到的任务调整请求中的调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,然后通过预设分布式服务将调整结果发布给订阅该预设目录的每个消费服务,当定时任务到达执行时间时,各消费服务将争夺分布式锁,争夺到分布式锁的目标服务可以执行调整后的定时任务,通过分布式锁能够保证定时任务不被多次执行以及分配的合理性,并且在解决定时任务的动态调整的同时有效简化了任务分配的逻辑,进而解决了相关技术中任务分配的逻辑较为复杂,无法保证分配的合理性的技术问题。
[0097]
可选地,执行装置还包括:第一订阅模块,用于在接收发布端发布的任务调整请求之前,在分布式系统启动的情况下,控制分布式系统中的每个消费服务订阅预设分布式服务的预设目录,建立消费服务与预设目录之间的订阅通道,其中,消费服务通过订阅通道监听预设分布式服务发布的调整结果。
[0098]
在本发明实施例中,当分布式系统启动时,需要使分布式系统中的每个服务都订阅zookeeper目录(即预设分布式服务的预设目录),即在分布式系统启动的情况下,可以控制分布式系统中的每个消费服务订阅预设分布式服务(即zookeeper服务)的预设目录,以建立消费服务与预设目录之间的订阅通道,通过订阅通道消费服务可以监听预设分布式服务发布的调整结果。
[0099]
可选地,执行装置还包括:第一写入模块,用于在接收发布端发布的任务调整请求之后,将任务调整请求的任务信息写入至预设数据库,其中,任务信息还包括:执行业务信息;第一同步模块,用于将任务信息同步至预设分布式服务的预设目录。
[0100]
在本发明实施例中,可以将接收到的任务调整请求的任务信息写入至预设数据库(即将定时任务的需要调整的任务信息,如任务标识,执行时间,执行业务信息等写入数据库中进行保存)。然后,可以将任务信息同步至预设分布式服务的预设目录,以动态调整zookeeper服务的zookeeper目录下的定时任务的信息。
[0101]
可选地,调整单元包括:第一查询模块,用于在调整类型为创建类型或者修改类型的情况下,在预设目录中查询任务标识指示的子任务,得到第一查询结果;第一创建模块,用于在第一查询结果指示预设目录中不存在子任务的情况下,在预设目录中创建子任务的节点信息;第一修改模块,用于在第一查询结果指示预设目录中存在子任务的情况下,修改子任务的节点信息。
[0102]
在本发明实施例中,如果调整类型为创建类型或者修改类型,则可以根据任务标
识寻找zookeeper目录中的子任务(即在调整类型为创建类型或者修改类型的情况下,在预设目录中查询任务标识指示的子任务,得到第一查询结果),若无此子任务,则在zookeeper目录中新建该子任务的节点信息(即在第一查询结果指示预设目录中不存在子任务的情况下,在预设目录中创建子任务的节点信息);若zookeeper目录中已有该子任务,则更新该子任务的节点信息(即在第一查询结果指示预设目录中存在子任务的情况下,修改子任务的节点信息)。
[0103]
可选地,调整单元还包括:第二查询模块,用于在调整类型为删除类型的情况下,在预设目录中查询任务标识指示的子任务,得到第二查询结果;第一删除模块,用于在第二查询结果指示预设目录中存在子任务的情况下,删除子任务的节点信息。
[0104]
在本发明实施例中,如果调整类型为删除类型,则可以根据任务标识寻找zookeeper目录中是否有该子任务的节点信息,若有则将其从zookeeper目录中删除(即在调整类型为删除类型的情况下,在预设目录中查询任务标识指示的子任务,得到第二查询结果,在第二查询结果指示预设目录中存在子任务的情况下,删除子任务的节点信息)。
[0105]
可选地,调整结果的类型包括下述至少之一:创建调整结果、修改调整结果、删除调整结果,执行装置还包括:第一增添模块,用于在控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务之后,在调整结果为创建调整结果的情况下,消费服务基于创建调整结果,在定时任务中增添任务标识指示的子任务;第二修改模块,用于在调整结果为修改调整结果的情况下,消费服务基于修改调整结果,修改定时任务中任务标识指示的子任务;第二删除模块,用于在调整结果为删除调整结果的情况下,消费服务基于删除调整结果,删除定时任务中任务标识指示的子任务。
[0106]
在本发明实施例中,调整结果的类型包括:创建调整结果、修改调整结果、删除调整结果等,在各消费服务收到zookeeper服务发布的变化信息(即调整结果)后,可以根据信息的变化做出对应的操作。若信息变化为创建定时任务,则在根据定时任务信息创建子任务(即在调整结果为创建调整结果的情况下,消费服务基于创建调整结果,在定时任务中增添任务标识指示的子任务);若信息变化为修改定时任务,则根据定时任务信息修改已存在的定时任务中的子任务(即在调整结果为修改调整结果的情况下,消费服务基于修改调整结果,修改定时任务中任务标识指示的子任务);若信息变化为删除定时任务,则根据任务标识删除对应的子任务(即在调整结果为删除调整结果的情况下,消费服务基于删除调整结果,删除定时任务中任务标识指示的子任务)。
[0107]
可选地,执行单元包括:第一计算模块,用于计算每个消费服务的执行权重值;第二计算模块,用于基于执行权重值,计算消费服务的服务延时值;第一确定模块,用于对所有服务延时值进行排序,确定最小服务延时值指示的消费服务为争夺到分布式锁的目标服务;第一执行模块,用于控制目标服务基于执行业务信息,执行调整后的定时任务。
[0108]
在本发明实施例中,当各消费服务上相同定时任务到达任务执行的时间时,将开始争夺分布式锁,并将争夺到分布式锁的消费服务作为目标服务执行调整后的定时任务(即在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务)。具体为:各消费服务通过资源均衡算法计算执行权重w(即计算每个消费服务的执行权重值)。然后根据执行权重值,计算消费服务的服务延时值delaytime(即计算争夺锁的延时),其中,服务延时值计算公式为:delaytime(单位为秒)=
1-w。
[0109]
各消费服务延迟delaytime后,去抢夺分布式锁(即延时越长获得锁的概率越低),多个消费服务同时争夺,只有拿到锁的消费服务才会执行定时任务,其他没有拿到锁的消费服务跳过定时任务的执行(即对所有服务延时值进行排序,确定最小服务延时值指示的消费服务为争夺到分布式锁的目标服务,控制目标服务基于执行业务信息,执行调整后的定时任务)。
[0110]
可选地,第一计算模块包括:第一获取子模块,用于获取消费服务的空闲处理器数量以及空闲内存数量;第一计算子模块,用于基于第一调整参数、第二调整参数、空闲处理器数量以及空闲内存数量,计算消费服务的执行权重值。
[0111]
在本发明实施例中,消费服务通过资源均衡算法计算执行权重值的过程如下:
[0112]
(1)获取消费服务的空闲cpu数量cpu
free
(即空闲处理器数量)和空闲内存ram
free
(gb为单位)(即空闲内存数量);
[0113]
(2)使用归一化函数将资源数值(即空闲处理器数量以及空闲内存数量)归一化为(0,1)的范围,例如,使用sigmoid函数(即一种激活函数)作为归一化函数,其中,参数x越大,结果越大;
[0114]
(3)将参数x=α
·
cpu
free
+βram
free
代入公式得到执行权重(即基于第一调整参数、第二调整参数、空闲处理器数量以及空闲内存数量,计算消费服务的执行权重值):
[0115][0116]
其中,cpu和空闲内存越多,权重越大,α(即第一调整参数)和β(即第二调整参数)作为可调整参数进行调优。
[0117]
上述的执行装置还可以包括处理器和存储器,上述接收单元70,调整单元71,发布单元72,执行单元73等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
[0118]
上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。
[0119]
上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。
[0120]
本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:接收发布端发布的任务调整请求,基于调整类型,调整预设分布式服务的预设目录中与任务标识关联的节点信息,得到调整结果,控制预设分布式服务将调整结果发布给消费服务集合中的每个消费服务,在定时任务到达执行时间的情况下,将争夺到分布式锁的消费服务作为目标服务,控制目标服务执行调整后的定时任务。
[0121]
根据本发明实施例的另一方面,还提供了一种电子设备,包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的定时任务的执行方法。
[0122]
图8是根据本发明实施例的一种用于定时任务的执行方法的电子设备(或移动设备)的硬件结构框图。如图8所示,电子设备可以包括一个或多个(图8中采用802a、802b,
……
,802n来示出)处理器802(处理器802可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器804。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、键盘、电源和/或相机。本领域普通技术人员可以理解,图8所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,电子设备还可包括比图8中所示更多或者更少的组件,或者具有与图8所示不同的配置。
[0123]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0124]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0125]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0126]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0127]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0128]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0129]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1