一种分布式任务定时调度方法和装置与流程

文档序号:26607929发布日期:2021-09-10 23:51阅读:126来源:国知局
一种分布式任务定时调度方法和装置与流程

1.本发明属于计算机软件技术领域,具体涉及一种分布式任务定时调度方法和装置。


背景技术:

2.现有软件调度技术可以划分为以下几类:
3.(1)使用zk作为消息通知方式;该方法在zk中注册对应executor的执行时间,方法等,将任务下发到executor中,由executor执行任务调度。
4.(2)基于quartz的本地调度方式;该方法在本地使用quartz进行任务调度。
5.(3)采用rpc远程触发调度方式;该方法使用集中式任务调度,由调度中心管理任务,并且在任务触发的时候使用rpc等方法是远程触发任务。
6.然而,上述现有技术存在如下缺陷:
7.(1)executor嵌入代码复杂,如果不使用嵌入的方式打包,运维和打包较为复杂,添加额外的中间件zk,运维成本上升。
8.(2)本地quartz不支持分布式,便于集中修改或者监控调度的任务。
9.(3)集中式任务调度对任务调度中心负载较大,而且不容易搭建集群环境,在大量任务调度的时候容易出现问题。


技术实现要素:

10.为了解决现有技术打包方式复杂、本地不便于及时修改或监控的问题,本发明提供了解决上述问题的一种分布式任务定时调度方法,本发明将集中式任务调度的压力分担到客户端本地,操作简单,易于实现。
11.本发明通过下述技术方案实现:
12.一种分布式任务定时调度方法,包括服务器端部分,所述服务器端部分具体包括:
13.通过配置单元配置调度任务信息;
14.通过分发单元将配置的调度任务信息下发到客户端,以使客户端根据任务信息本地启动quartz执行。
15.本发明的调度方法通过采用一种统一任务调度管理,仅需将配置信息下发到客户端,在客户端本地执行的方式,无需其他中间件,任务调度方式简单易实现,便于管理。
16.优选的,本发明的服务器端部分还包括:
17.通过监控单元监控客户端的任务执行情况,如果出现问题则进行告警并通知客户端。
18.本发明的调度方法还能够持续性监控客户端的任务执行情况,并进行告警。
19.优选的,本发明配置的所述调度任务信息包括任务调度时间、任务执行分片、任务管理人员、任务告警和任务失败转移。
20.优选的,本发明通过与客户端保持通信连接实现将配置的任务信息下发到客户端
和监控客户端的任务执行情况具体;
21.所述通信连接采用的通信协议为内部协议的rpc,包含任务执行名字、任务执行时间、具体执行的类;
22.所述通信协议会每隔预设时间,发送noop操作到客户端,用于保证心跳和监控客户端执行情况,如果该心跳监控失败,则会触发调度告警。
23.优选的,本发明的服务器端部分还包括:
24.通过配置单元修改调度任务信息。
25.第二方面,本发明提出了一种分布式任务定时调度方法,包括客户端部分,所述客户端部分具体包括:
26.通过收发单元获取服务器端下发的调度任务信息;
27.通过本地执行单元根据获取的调度任务信息,本地启动quartz执行。
28.优选的,本发明的根据获取的调度任务信息,本地启动quartz执行步骤具体包括:
29.判断是否有quartz进程存在,如果已经存在相同类和名字的任务,则替换原来的任务或者创建一个新任务;如果不存在,则新建一个任务。
30.优选的,本发明的客户端部分还包括:
31.在一个任务执行完成后,在本地写入执行状态并将执行状态上传到服务器端。
32.第三方面,本发明提出了一种分布式任务定时调度装置,包括服务器端;
33.所述服务器端包括配置单元、分发单元、监控单元、第一通信单元和告警单元;
34.所述配置单元用于配置调度任务信息;
35.所述分发单元通过所述第一通信单元单元将配置的调度任务信息下发到客户端,以使客户端根据任务信息本地启动quartz执行;
36.所述监控单元通过通信单元监控客户端的任务执行情况;
37.所述告警单元根据所述监控单元的监控情况进行告警并将告警发送给客户端。
38.第四方面,本发明提出了一种分布式任务定时调度装置,包括客户端;所述客户端包括收发单元、本地执行单元、第二通信单元
39.所述收发单元通过所述第二通信单元获取服务器端下发的调度任务信息;
40.所述本地执行单元根据获取的调度任务信息,本地启动quartz执行。
41.本发明具有如下的优点和有益效果:
42.本发明通过将调度任务配置信息下发到客户端,触发客户端启动本地执行,即将集中式任务调度的压力分摊到客户端,减轻了集中式任务调度压力,简化了任务调度方式,客户端接入方式简单便捷,便于监控。
43.本发明的调度装置结构简单,能够支持平行扩容,权限管理等多种功能。
附图说明
44.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
45.图1为本发明实施例1的方法流程示意图。
46.图2为本发明实施例2的方法流程示意图。
47.图3为本发明实施例3的服务器端和客户端交互流程示意图。
48.图4为本发明实施例4的装置原理框图。
49.图5为本发明实施例5的装置原理框图。
具体实施方式
50.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
51.实施例1
52.相较于传统的调度方法,本实施例提出了一种新的分布式任务定时调度方法。
53.本实施例的方法包括服务器端部分。其中,服务器端部分可以由具备执行数据处理的服务器端来执行,具体如图1所示,服务器端部分具体包括:
54.步骤101,通过配置单元配置调度任务信息;本实施例中配置的调度任务信息包括任务调度时间,任务执行分片,任务管理人员,任务告警,任务失败转移等。
55.本实施例的配置工作具体为:
56.首先通过接收的项目注册信息实现调度任务配置,项目注册信息包括调度任务名字applicationname、appid、执行任务的全路径名称、定时任务的执行顺序和方式、分片信息、本地实现对应的接口xwbankjobexecute(或者使用注解@xwbankjob)、实现接口中的execute方法等参数;其中,appid为唯一。
57.然后将配置的参数以jobcontext下发至客户端;客户端启动项目后会按照配置的参数进行本地执行。
58.其中,applicationname表示为当前客户端名称,appid表示当前应用的唯一标识,用于存储和区分相同名称但是不同系统的客户端,xwbankjobexecute表示为调度任务需要实现的指定接口,如果实现该接口,则需要通过方法级别的注解@xwbankjob,两者的区别就是注解的方式不能传入方法上下文参数,即jobcontext,jobcontext中包含调度任务的分片,指定传入参数等信息。
59.步骤102,通过分发单元将配置的调度任务信息下发到客户端,以使客户端根据任务信息本地启动quartz执行。
60.本实施例通过采用内部协议的rpc作为通信协议实现与客户端之间的数据交互,该通信协议包括任务执行名字,任务执行时间,具体执行的类。
61.本实施例的通信协议还会每隔默认5s的定时心跳,发送noop操作到客户端,用于保证心跳和监控客户端执行情况,如果该心跳监控失败,则会触发调度告警并将调度告警通过邮件或http等方式通知客户端。
62.本实施例还可通过配置单元对调度任务进行修改。
63.本实施例将任务下发,避免集中任务调度系统时候对任务调度中心的压力,集中管理所有任务调度和任务状态,方便集中管理所有的任务。
64.本实施例允许同一个类执行多种任务调度和支持分片,能够为客户端提供灵活性。
65.本实施例支持多种执行方式,包括广播,即所有的客户端都执行相同任务,也支持任务仅在一个客户端中执行,后一种执行方式在支持当前客户端执行失败后,将任务下发
到其他存活的客户端中执行。同时,会定时向失败的客户端发送终止任务的指令,直到反馈已经终止或者运维人员手动终止检查。
66.实施例2
67.图2为本发明实施例2提供的一种分布式任务定时调度方法,包括客户端部分,该客户端部分可以由需要与服务器端进行联合的客户端实现,具体如图2所示,包括:
68.步骤201,通过收发单元获取服务器端下发的调度任务信息;
69.步骤202,通过本地执行单元根据获取的调度任务信息,本地启动quartz执行。
70.本实施例通过从服务器端拉取已经皮遏制好的调度任务信息,初始化为quartz进程在本地,创建本地任务执行状态文件。
71.本实施例的本地任务执行状态文件包括执行时间、执行结果等。
72.本实施例还包括将本地任务执行状态文件上传到服务器端以进行本地执行状态监控。
73.本实施例通过上述实施例1提出的通信协议与服务器端进行数据交互。
74.本实施例在收到新任务时会根据接收的参数,首先判断是否有quartz进程存在,即是否已经创建过调度任务,如果已经存在相同类和名字的任务,则替换原来的任务(如果客户端配置允许多个相同任务,则也可以直接创建一个新任务),如果不存在,则新建一个新任务。
75.本实施例在每一个任务完成后,会在本地写入执行状态,同时又可将任务执行状态上传到服务器端进行任务执行情况监控,避免当前线程阻塞接下来的任务。
76.实施例3
77.图3为本发明实施例3提供的服务器端和客户端的交互过程示意图,具体包括以下步骤:
78.步骤301,通过服务器端的配置单元配置调度任务信息;
79.步骤302,通过服务器端的分发单元将配置的调度任务信息下发到客户端;
80.步骤303,通过客户端的收发单元接收服务器端下发的调度任务信息;
81.步骤304,通过客户端的本地执行单元根据接收的调度任务信息,本地启动quartz执行。
82.实施例4
83.图4为本发明实施例4提供的一种分布式任务定时调度装置,包括服务器端,该服务器端包括配置单元、分发单元、监控单元、第一通信单元和告警单元。
84.其中,配置单元用于配置调度任务信息;
85.分发单元通过第一通信单元单元将配置的调度任务信息下发到客户端,以使客户端根据任务信息本地启动quartz执行;
86.监控单元通过第一通信单元监控客户端的任务执行情况;
87.告警单元根据监控单元的监控情况进行告警并将告警发送给客户端。
88.本实施例还提出了一种计算机设备,该设备包括上述调度装置。
89.本实施例的计算机设备还包括存储器和人机交互界面。
90.通过人机交互界面可实现调度任务的配置和修改;可以在人机交互界面上配置对应的分片,甚至直接指定分片执行的已经注册的对应ip主机(客户端)和进程名,如果每台
主机(客户端)只有一个任务应用,则无需管理进程,任务触发后,会按照分片的方式执行任务,分片信息在jobcontext(任务调度上下文)中获取。
91.通过存储器存储相关配置信息。
92.实施例5
93.图5为本发明实施例5提供的一种分布式任务定时调度装置,该客户端包括收发单元、本地执行单元和第二通信单元。
94.其中,该收发单元通过第二通信单元获取服务器端下发的调度任务信息;
95.本地执行单元根据获取的调度任务信息,本地启动quartz执行。
96.该客户端还包括存储单元,该存储单元用于存储本地任务执行状态。
97.收发单元通过第二通信单元将本地任务执行状态上传到服务器端进行任务执行情况监控。
98.以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1