首页> 中国专利> 一种基于客户端、服务器系统的分布式定时任务调度系统

一种基于客户端、服务器系统的分布式定时任务调度系统

摘要

本发明属于客户端、服务器系统的任务管理技术领域,具体为一种基于客户端、服务器系统的分布式定时任务调度系统。本发明系统包括:应用服务器;核心调度服务器,用于控制应用服务器在什么时间执行任务,并且收集应用服务器执行任务的结果;WEB监控服务器,用于对任务的执行时间和执行逻辑进行配置;消息服务器,由消息服务器把同步信息转发到核心调度服务器;数据库,用于存储任务配置的信息、任务执行结束后的信息。本发明系统增加了任务执行的状态监控功能,把原来依附于项目的非核心功能进行剥离,把同类相关功能进行横向切断,合并统一管理;把原来属于项目节点上的功能全部提取出来,把所有任务都放在同一个远程服务器中进行统一调度。

著录项

  • 公开/公告号CN104536809A

    专利类型发明专利

  • 公开/公告日2015-04-22

    原文格式PDF

  • 申请/专利权人 上海瀚之友信息技术服务有限公司;

    申请/专利号CN201410689980.0

  • 发明设计人 徐东;曹奎;

    申请日2014-11-26

  • 分类号G06F9/46(20060101);

  • 代理机构31200 上海正旦专利代理有限公司;

  • 代理人陆飞;盛志范

  • 地址 200003 上海市黄浦区新昌路80号4楼

  • 入库时间 2023-12-18 08:20:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-01-19

    授权

    授权

  • 2015-05-20

    实质审查的生效 IPC(主分类):G06F9/46 申请日:20141126

    实质审查的生效

  • 2015-04-22

    公开

    公开

说明书

技术领域

本发明属于客户端、服务器系统的任务管理技术领域,具体涉及一种基于客户端、服务器系统的分布式定时任务调度系统。

背景技术

目前,大多数项目工程需要有一套定时任务执行功能,即配置一个任务的启动规则(例如:开始时间,间隔执行N次,某些情况下不执行等规则),再加上任务执行的主体(具体什么任务)。对于一个大公司来说,往往有很多业务,从而产生很多项目。每个项目又有多个定时任务。对于开发人员和运维人员来说,想要知道自己应用中定时任务的运行情况是什么样的,就需要去运维那边登陆远程正式服务器进行日志查看;想要修改一些定时任务的规则,就需要修改代码或者配置文件,重启生效。运维人员维护全部项目的时候,对于任务执行情况缺乏一个完整的监控手段。

发明内容

本发明的目的在于提供一种能够实时监控任务执行、动态修改执行规则的基于客户端、服务器系统的分布式定时任务调度系统。

本发明提供的分布式定时任务调度系统,其构成如图1所示,主要包括:应用服务器、核心调度服务器、WEB监控服务器、消息服务器和数据库;其中:

所述应用服务器有若干个,采用分布式的集群服务器,主要是提供电子商务、充值、游戏、页面等对外业务的服务,此类服务有定时任务的功能需求,例如在每天半夜进行数据的更新操作;该应用服务器给出多个任务执行地址到核心调度服务器,每个地址就是一个任务执行入口;

所述核心调度服务器有若干个,是一种统筹服务器,可以控制应用服务器在什么时间执行任务,并且可以收集应用服务器执行任务的结果;由于任务有很多个,每个核心调度服务器中都维护了一个任务池,任务池是一个存放所有任务的地方。

所述WEB监控服务器,用于对任务的执行时间和执行逻辑进行配置,并且至少提供任务的暂停、删除、新增、查看、手动触发等功能中的任意一种,同时提供对历史任务的执行记录查看;

所述消息服务器,作为一个代理,在WEB监控服务器配置完相关信息后,WEB监控服务器发送同步信息给消息服务器,由消息服务器把同步信息转发到核心调度服务器;同步信息是指服务器之间通信的内容。

所述数据库,用于存储任务配置的信息、任务执行结束后的信息等。

本发明系统的执行流程如下(图2):

(1)WEB监控服务器负责进行任务信息的配置,配置完成后把信息数据保存进数据库中,同时至少提供任务信息的查看、新增、修改、暂停、删除等操作中的任意一种,操作后也会把对应的任务信息保存入数据库;数据库中保存的任务信息同时提供给WEB监控服务器进行查看等功能;

(2)当WEB监控服务器中的任务信息有新增、修改、暂停、删除操作中的任意一种的时候,发送一个同步信息给消息服务器;

(3)消息服务器找到所有核心调度服务器,对每个核心调度服务器发送同步信息;由于核心调度服务器在启动的时候会自动的到消息服务器上面进行注册,所以消息服务器能找到在自己这里注册的所有核心调度服务器;

(4)核心调度服务器收到通知后去数据库中取出任务,放入任务池中进行监听;

(5)当任务时间到达的时候,核心调度服务器通知应用服务器进行任务的执行,在通知应用服务器的同时,核心调度服务器在数据库中记录任务开始执行的信息;

(6)当应用服务器执行结束后,返回信息给核心调度服务器,核心调度服务器又把返回信息记录进数据库;此时WEB监控服务器可以通过数据库查看任务的执行历史。

下面对流程的各部分作进一步具体描述。

应用服务器启动的时候,首先任务执行主体初始化,生成一个唯一地址;在WEB监控服务器中配置相对应的任务信息(包含以上所说的任务主体的地址,任务执行的时间规则,以及其他一些相关附带属性);当配置完信息后,通知核心调度服务器,核心调度服务器根据通知过来的信息把需要新增或修改的任务加载(从数据库中取出对应的任务)进来,并加入任务池中,当监听发现有任务触发的时候找到对应的任务主体地址进行远程通知调用;当应用服务器执行结束后,应用服务器把执行结果发送回核心调度服务器。

应用服务器中包含有一个集成功能软件包。该集成功能软件包提供任务主体监听功能。在集成功能软件包中定义了标注任务主体的注解标识,在集成功能软件包启动的时候,本集成功能软件包会扫描全部使用该注解标识的任务主体从而进行监控。当这些任务主体执行结束,或者执行异常后收集成功或者异常信息报告给核心调度服务器。监听功能采用AOP技术,在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。在任务调度系统中,在应用服务器启动前,开发人员在任务执行主体上面加上集成功能软件包定义好的注解,启动的时候集成功能软件包扫描所有使用该注解的任务执行主体确认监听的范围,从而进行监控。当这些任务执行主体执行结束后,集成功能软件包把任务执行的结果信息收集起来通过dubbo协议传送给核心调度服务器。核心调度服务器收到信息后把执行结果信息、任务标识等数据存储进数据库,用来作为web历史数据查看的依据。在任务调度系统中注解则为AOP中的切面。

WEB监控服务器提供管理任务的功能及查看历史执行记录的功能,如图4所示,至少提供对任务的查看、修改、新增、删除、立即执行、及任务的历史执行计划查看功能中的任意一种。

WEB监控服务器首先配置任务执行信息内容,包含任务执行的地址、任务执行的时间规则和任务执行的应用服务器查找单元。应用服务器查找单元可以为ZooKeeper或者dubbo自带的multicast工具。 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

WEB监控服务器配置完这些信息后,WEB监控服务器通过消息服务器通知多台核心调度服务器。如图3所示,核心调度服务器根据WEB监控服务器发送过来的同步信息进行对应的操作。同步信息为WEB监控服务器和核心调度服务器之间的数据发送内容,核心调度服务器根据同步信息进行相对应的任务操作(包含添加、删除、修改)。

同步信息包含两方面内容,一方面为标注同任务的操作类型为新增、删除、还是修改;另一方面为任务的唯一标示ID,此ID是WEB监控服务器中新增任务操作并且把任务信息保存进数据库中的时候自动生成的唯一标示符,用该ID可以在数据库中找到对应的任务信息。当核心调度服务器收到同步信息的时候,首先判断此通知信息的第一个值所代表的操作类型是什么,比如新增,那就根据第二个值(任务ID)去数据库中抓取任务对应的任务执行主体地址和任务执行规则,然后把任务执行主体地址和任务执行规则这2个元素打包成1个完整的任务投入到核心调度服务器的任务池中。

当操作状态为新增的时候,抓取新增的任务放入任务池; 

当操作状态为删除的时候,在任务池中删除对应的任务;

当操作状态为修改的时候,首先在任务池中删除老的任务,然后把新的任务信息加载进任务池。

在修改的时候,核心调度服务器在任务池中找到对应的任务,先去除对其的监听,再删除这任务,那该任务就失效了;然后马上根据同步信息中第二个值(任务ID)去数据库中抓取任务的信息,和新增功能流程一样打包成完成的任务信息放入任务池中;在删除的时候,根据任务ID把在任务池中的任务提取出来,先取消监听,再在任务池中进行删除。

由于任务比较多,为了防止单台核心调度服务器宕机,如图1,采用多台核心调度服务器集群部署,各个核心调度服务器的功能是一样的。那WEB监控服务器如何去通知到多台的核心调度服务器呢,系统采用消息服务器代理的方式去通知,这样做的好处是WEB监控服务器不需要知道需要被通知的核心调度服务器在什么网络地址、也不需要有多少台核心调度服务器。所有的对于核心调度服务器的通知都由代理服务器去管理。对于这种管理机制系统采用的技术为ActiveMQ 。ActiveMQ 是Apache出品的、最流行的、能力强劲的开源消息总线,其作用:可以通过jms通知相关服务器。jms即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间或分布式系统中,发送消息,进行异步通信。

核心调度服务器把任务都装进来后监听这些任务,当某个任务的触发时间到达时,核心调度服务器就去找到这个任务是什么任务,这个任务在哪里,这个任务暴露出来的执行主体地址是什么,这些任务信息都是在WEB监控服务器配置任务的时候配置进去的;核心调度服务器找到这些信息后通过dubbo协议到应用服务器上进行远程通知调用。Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能。Dubbo协议提供了一种远程访问的协议,核心服务在dubbo协议中传输了应用服务器执行任务的单元信息,应用客户端根据协议解析这些单元信息找到要执行的方法进行执行。核心调度服务器如何知道监听什么时间点到了就要执行什么任务呢? 本发明使用quartz框架,它是一个开源的框架,需要把任务的执行方法,任务的执行时间逻辑告诉quartz,它就会在下一次执行时间到来的情况下告诉我们需要执行任务。

WEB监控服务器提供一系列的任务维护,监控,查看历史记录的功能。比如说一个任务已经在执行,但此时服务器出现了什么问题,不希望任务在下次执行时间节点上执行,那在WEB监控服务器上使用暂停功能,接下来,如上面所说的通过activemq技术通知消息服务器转发通知核心调度服务器,有个任务暂停了,所有的核心调度服务器就不会再监听这个任务,并且不会触发该任务了。

WEB监控服务器提供删除任务的功能,比如说,应用服务器有个应用是国庆活动,要求10.1-10.7号期间每天半夜都要做事,但在10月8号的时候由于活动结束,应用服务器也撤掉,那我们就使用任务删除功能,该任务就永远不会触发了。

WEB监控服务器提供监控和查看历史记录的功能。由于任务是保存在数据库里面的,记录也是在数据库里面的,那么可以通过页面查看的方式去查看到这些信息。

本发明有益效果:

本发明系统针对目前常见的技术,增加了任务执行的状态监控功能,把原来依附于项目的非核心功能进行剥离,把同类相关功能进行横向切断,合并统一管理;把原来属于项目节点上的功能全部提取出来,把所有任务都放在同一个远程服务器中进行统一调度;把本来和项目耦合度高的功能提取出来,进行配置型的管理。

附图说明

图1为本发明系统结构图示。

图2为本发明系统执行流程图示。

图3为本发明系统中核心调度服务器任务逻辑图示。

 图4 任务管理员用例图示。

具体实施方式

下面结合具体应用场景进一步说明本发明。

首先,运行在应用服务器上的应用服务类似于为银行活动开发的一个11.11光棍节活动的应用,应用提供11.11到11.13这3天的活动。

应用服务需求定义在11.11凌晨0点把活动马上上线,11.13半夜23:59分把活动下线。我们定义2个任务为startJob、endJob,以上就是2个定时任务。 那现在软件开发人员把上线、下线的功能都做好,然后使用dubbo提供出2个可以给核心调度服务器访问的地址(即任务执行主体)。只要调用相对应的地址,那么就执行了相对应的上面2个任务,从而操控活动的上线和下线。

在开发人员实现其任务功能的条件前提下,对这2个任务加上集成功能软件包提供的注解标识。此注解不影响任务功能的运行。同时启动任务调度提供给应用服务器的集成软件功能包。该集成软件功能包启动后立即扫描所有的任务主体(包含我们需要的定时任务主体、和应用本身的方法主体)。当主体含有代码注解标识的时候,软件包记录下这些方法。结合本次实例,其实就是扫描到startJob、endJob这2个任务主体。然后进行监控,当应用程序执行这2个任务的时候,在执行结束后集成功能软件包会收集执行的结果,然后发送回核心调度服务器,核心调度服务器进行信息的记录。

接下来在WEB监控服务器上配置2个任务,一个是上线任务,对应的时间信息为11.11 凌晨0点任务为startJob;一个是下线任务,对应的时间信息为11.13半夜23:59分,任务为endJob。

保存结束后,WEB监控服务器通过消息服务器通知到核心调度服务器;核心调度服务器收到消息后发现是新增的任务,立即把2个任务相关信息从数据库中提出来,放进任务池中进行监听。当时间到达11.11 凌晨0点的时候,核心调度服务器就找到这个时间点对应的要执行的是startJob这个任务,核心调度服务器就通过数据库找到startJob对应的任务主体地址并且进行一次应用服务器startJob的执行通知。任务执行后被应用服务器上的集成功能软件包通过AOP技术进行拦截,把执行结果上报给核心调度服务器。EndJob也是这样。这时WEB监控服务器上就有了上报回来的日志信息,可以查看任务执行记录。

当11.14日的时候由于活动已经结束,应用服务器上把该活动的应用下线删除,那此时任务WEB监控服务就没有必要再去维护startJob和endJob了,通过WEB监控服务器删除该2个任务。

WEB监控服务器通过消息服务器通知所有的核心调度服务器,核心调度服务器把该2个任务都进行删除操作,以上结束。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号